- BASIC (ZX Spectrum, BBC and GFA) Thanks Mum and Dad for buying the old Speccy for me and my brother, and thanks also to WHSmiths for replacing about twenty of them free of charge, bricked by wobbling peripherals. Was slow, slow, slow. Be thankful those pixels were so big. The foray into BBC BASIC came for a single, albeit paying, project at the school where my Dad was headmaster. I also wrote a bunch of GFA BASIC on the Atari ST, which was relatively cool, as these things go. Did away with line numbers, had parameters passable by value or reference, and compiled to produce reasonably fast stand-alone executables. Lacking a compelling way to aggregate values into structures though.
- Z80 assembler, self taught on the ZX Spectrum. Wrestling with that darn screen's convoluted memory layout.
- 68000 assembler, self taught on the Atari ST. Finally fast enough to do wonderful things to the screen, which had a reasonably sane memory representation. Wished I was doing it on an Amiga instead though.
- C, learned on-the-job at a student apprenticeship at Marconi R&D during my university holidays. Special mention deserved for Kernighan and Ritchie The C Programming Language, as beautifully definitive and concise description of the language - just about every computer book employs a detracting surplus of verbiage in comparison.
- Modula-2, as part of the aforementioned apprenticeship. My first OO, I guess. Full of great ideas that I didn't fully appreciate at the time, having never worked on large enough projects to require them (or indeed, any project that wasn't a personal bedroom project.)
- Pascal, for a one-term 3D graphics project at university.
- C++, on the PC, self-taught using a mixture of pirated and cut-price academic Visual Studio licenses. Anyhow, this then lead to years and years of professional C++ development, mostly on various UNIX boxes, mostly in the GIS industry. So exhilarating when it worked, with the intricate, interlocking mechanisms whirling their fiendishly efficient blades through tasks like a light sabre through butter. But writing it, with hindsight, was *so* *much* *work*. And such an utter ball ache to find those intermittent bugs that would shake the whole thing explosively to pieces like a brick through a jet engine when you least expected it. I must have been a masochist.
- BASH shell scripts, still in daily use to this day, mostly tiny bits of script-fu to automate common desktop tasks, or pipe the output from one thing into some other thing, or heck, even to just do some sorting or filtering on part of the file you're editing in Vi. Absolutely indispensable to me, despite the fact that half the time I'm wrestling with the impedance mismatch of running it in Cygwin on Windows. I literally don't understand how developers can get along without using it *everywhere*.
- SQL and a bunch of stored procedures in PL-SQL (procedural SQL.)
- C#. Lots to like here, we spent a couple of very happy years together.
- Visual Basic 6, and then later some Visual Basic .NET. They made me do it.
- Python, including IronPython (Python as a dot Net language.) Nirvana at last. Apart from BASH, it's the only entry on the list that I still use frequently and gleefully today.
- GLSL, for hobbyist graphics and games.
- Scheme to the extent that I worked through SICP, twice.
- Go, for a new service in IBM Cloud.
- PHP, to maintain an old service in IBM Cloud. Two PR's thus far.
I find my lack of LISP and its derivatives disturbing. And last year I recall entertaining fantasies of learning D, to see if I could use it as a more civilised alternative to C-extensions for Python. And just yesterday I was playing with a minimal OpenGL fragment and vertex shaders, longing to be conversant with Cg. Yeah yeah, I'll figure them all out later this week...
Update: First time through I forgot all about SQL, PL-SQL and BASH.