Musings on programming languages

I like reading about computer languages; probably goes back to my studies of computer science. When I read about language comparisons by really smart people, I note that they have rather different goals than me. I need a language that expresses difficult things easily, has well documented and well-named libraries / frameworks, catches my errors early, and facilitates self-documenting code; and: it must produce beautiful output. The last 3 points are the most important for me, and they are difficult to balance. Take R, for instance: there it is very easy to overlook errors (since for many error conditions it keeps running), but the ggplot2 package can produce the most beautiful output with moderate effort I've ever seen anywhere.

Programming languages I've used

• Basex – "Basic for Experiments" control of physical experiments, analysis routines, text processing

• Algol & Univac-Assembler – study assignments (and on punched cards)

• Fortran – control and data acquisition of neuroscience experiments, data analysis

• Z80 Assembler – on my home-built Nascom computer, for fun & one full text editor (for my thesis)

• Basic for Nascom – for fun and another text editor

• Forth – for a very different language, just played with it

• BLS Pascal – later called Turbo Pascal, but on the Nascom. Great language! Wrote 2D image Fourier analysis with it.

• UCSD Pascal – After switching jobs, built CP/M machines, and wrote analysis and plotting programs (a full device-independent graphics system that could drive an x/y plotter, or ink-jets which were just becoming en vogue)

• Turbo Pascal – wrote real-time stimulation + data acquisition etc., much code

• Lisp – for a very very different language, only played around

• C++ – on Macs, real-time stimulation + data acquisition etc., much more code (EP2000, FrACT)

• Matlab – programmed some graphical stimuli, but didn't like it at all; no longer use it

• AppleScript – in daily use for nearly 20 years now, ties much of my stuff together

• HTML + CSS – to the degree that counts as a language, but it can cause headaches

• Igor Pro – data analysis and plotting. All in all a great 3GL, but dated syntax

• ActionScript 2/3 (Flash) – was great for platform independent interactive graphics (visual illusions, FrACT)

• Java – wrote one sizeable platform-independent stimulation contract, never felt really at home with it

• Objective C – for MacOS X, real-time stimulation + data acquisition etc., much code (ERG2007)

• R – really good for statistical analyses and data presentation; difficult for me.

• Objective J / Cappucino – the successor to ActionScript, nice syntax (like Objective C), and emulating some Apple's Cocoa frameworks, so I find it a double win

At this time, I nearly daily write/change something in R, Igor, AppleScript, Objective C (nearly forgot HTML/CSS). This diversity is a little high for me; so I've kept off temptations like Python. Yet: I feel that learning a new computer language broadens the mind nearly like learning a human language.