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."
No comments:
Post a Comment