I recently saw several instances of an interesting proto-meme from a couple years ago: can you find something nice to say about every programming language you’ve used? Here’s my try (limited mostly to languages I’ve used at work or for extended periods), organized chronologically:
- EduBasic (on a DEC PDP-8e): I could write programs, and they’d do stuff!
- PDP-8e machine language: taught me how computers really worked. I still remember a few of the opcodes, decades later.
- C: Introduced me to pointers in a high-level language, and K&R introduced me to a clean elegant style of both coding and technical writing. I still use C today.
- APL: I used this for a summer job, on an IBM 5100 Portable Computer. It introduced me to the idea of operating in parallel on whole vectors at a time, as well as teaching me both the appeal and the danger of crafting one-liners.
- SPRITE: I can’t find any web references for this, it was the proprietary systems-programming language for the Burroughs (later Unisys) Medium Systems mainframes. It introduced me to the idea of separating interface declarations from implementations (C could do this with header files, but I hadn’t fully grasped the concept until I saw SPRITE).
- ALGOL: This was Burroughs Large Systems ALGOL, which was an “extended subset” of ALGOL-60 that had been hacked into something rather different. With it I wrote a program that ran on the most expensive computers I’ve ever worked with.
- Pascal: I used several variations, starting with USCD Pascal, and later Turbo Pascal. It’s type safe, and the Turbo variant compiled really quickly.
- Modula-2: Drove home the concept of modularity, and had the best post-mortem dump analyzer I’d seen up to that point (or for a long time after!).
- COBOL: I only ever wrote one test case in COBOL, but I discovered that it had a very rich (if wordy) language for describing data structures.
- C++: Showed that multiple inheritance was possible, and why it probably wasn’t worth the effort. Later, taught me about generic programming. I still admire the Standard Template Library.
- Visual Basic: Awesome for quickly prototyping Windows user interfaces. I prototyped a tool in VB in a less than a week that ended up getting used for a couple years in production.
- Perl: I started with version 4, which was a cool little language for hacking away at text processing tasks. Then I did web stuff in version 5, which unleashed the power of CPAN. Now I’ve discovered Moose, which almost makes Perl a whole new language.
- Java: Showed what C++ could have been, and how much easier automatic garbage collection makes programming in the large.
I’m leaving out various languages I’ve played with but never did anything serious with, including SAM76, SNOBOL, Forth, Smalltalk, Lisp, Simula-67, Erlang, and so on. I learned a lot from many of them, too.
That actually wasn’t as hard as I’d expected, finding one thing nice about even the languages I liked the least.