Tuesday, August 28, 2012

Algorithms + Data Structures = Programs

Remember a book that opened the skies for you and revealed a whole new world of thought?  "Algorithms + Data Structures = Programs" by Nicklaus Wirth was that book for me while studying at Northwestern University in the late 1970s.  The author helped me divine that programming is much more than procedural statements, that recursion is much more than calculating factorials.  Recursive data structures and algorithms are intrinsically interwoven, and they are powerful programming tools can solve real world problems.  I felt like Archimedes jumping out of his bathtub and running down the street naked shouting "Eureka."

My eyes were opened and I saw lists, trees, graphs, and recursion everywhere, in their glorious beauty.  The classic puzzle of the towers of Hanoi could now be solved to any number of levels.  In the Computer Science Research Lab at NU, we hooked up a pen plotter to a DEC PDP-8 minicomputer and watched mesmerized as it drew space-filling Hilbert curves programmed by Bill Nowicki.  It finally dawned on me that I wanted to be a doctor of programming languages and data structures rather than an MD, so I switch from Biology/pre-med to Computer Science, thanks to encouragement from friends like Rich Karhuse.  I felt like Newton struck by the proverbial apple.

I devoured books like "Fundamentals of Data Structures in Pascal" by Ellis Horowitz and Sartaj Sahni, especially since Ellis was my favorite professor at the University of Southern California (USC).  And now I'm working at 10gen, the MongoDB company, where Eliot Horowitz is co-founder and CTO.  While Eliot replied that he is not related to Ellis, in my head, they are akin.  Ellis fostered in me the joy of programming languages plus data structures.  Eliot has induced in me the joy of programming languages plus databases.

It may seem like we've come full circle, revisiting old principles and ideas.  I hope so, for the nature of things re-emerges regularly like spring even if we bury it in a snowfall of obscuring detail.  But there are important improvements that transform it into an upward spiral and a new season of thought and capability embodied in products like MongoDB.  There have been many advances over the 35 years since Wirth's book in technology and in our theory and practice.

In a series of blog post starting here, I hope to repeat resonating truths, share insights, clarify understanding, and rediscover the wonder years in computer programming and beyond.  For life is a tapestry with interwoven threads composed of thoughts, ideas, experiences, people, places, and times.  I want my friends, coworkers, and others to see and enjoy what I see.

Do I sound pretentious?  No, for I'm standing on the shoulders of giants.  Or rather imagine: I'm bobbing in a wave pool with my wife Linnea in the Allure of the Seas, Royal Carribean’s cruise ship displacing 225,000 tons of the Atlantic Ocean.  I'm dreaming about matching Ruby objects to BSON for MongoDB, while munching apples and shouting "Eureka."

Algorithms + Data Structures = Programs

No comments:

Post a Comment