Do you remember the first time ?
August 16, 2006
I started programming as a kid back in the 70s, and I’ve never stopped getting a buzz from learning the new paradigm that goes with any genuinely different programming environment. But I haven’t picked up a new paradigm since I starting using dynamic languages with Python and Smalltalk in 00/01. Now I’m starting out with R I’m experiencing all the excitement that goes with every new glimpse of the possibilities of a fresh conceptual toolkit.
Here’s a timeline of the programming languages I’ve picked up along the way, with comment on which ones excited me, and which ones didn’t. Bear in mind this is purely about programming languages, and not operating systems or hardware…
- Late 70s: Basic on a Commodore Pet, coding home brew games. You always remember the first time !
- Early 80s: Z80 on a ZX81. My first taste of the power, control and efficiency of close to the metal coding.
- Mid 80s: early professional coding in Basic, dBaseII and Fortran. Nothing new or interesting there.
- Late 80s: learn to code in C. Data structures and pointers ! They say all programming problems can be solved by adding a level of indirection, and all bugs can be fixed by removing one ! One has to master indirection to code in assembler, and in C I rediscovered something crucial that’s missing in Basic and Fortran. Combine that with structs and dynamic memory allocation and you have a big jump forward in expressive capability of Basic and Fortran.
- Early 90s: C++, object orientation and polymorphism. After initial excesses with inheritance I discovered the power of interfaces and composition with the GoF patterns book. A huge jump forward.
- Late 90s: Java. Big standard libraries and portability courtesy of a VM, but no improvement in terms of expressiveness, power, control or efficiency over C++.
- 2000: Python & Smalltalk. All the power of OO, but much less code. Don’t need to write acres of type declarations to get anything done, and containers are built in to the language. Radically interactive too, so we get away from tedious compile, link, debug cycles.
- 2001: C#. Yawn.
- 2006: R. Array operations. tapply. Built in stats and charting. Wow ! R is to Excel as Unix is to Windows…