Languages I’ve Learned: Experimental Phase
Somehow, I had learned at least ten programming languages before attending college. However, some of them were very limited in scope, and not all of them have endured. That’s even more true of the next batch, all learned within my first two years at a major university.
Java
Certain programming courses were taught using Java, perhaps due to its rising status in industry significance at the time. It was generally simpler and safer than C++, though even more annoyingly verbose at times. It also felt slow, and its graphical widgets, though easy to use, were universally ugly. I understand that its warts have been alleviated over the years, but that doesn’t make me want to go back any time soon.
HTML
So it isn’t technically a programming language, but HTML is an important markup language that had been very useful over time, both for website production and for data collection. Unfortunately, I’ve tried to force several things into it that really should have been left to programs designed for producing printable documents. I’ve also written screen scrapers using regular expressions in Perl. I’d like to think that I’ve learned better, but I’m probably still abusing it somehow. I’ve certainly been abusing the related XML, partly due to learning about JSON just a tad too late.
Visual Basic
Through some odd sequence of events that I no longer care to remember, I ended up using Visual Basic as a glue language from within Excel, launching a program to run a series of tests on a product that doesn’t seem to have entered the mainstream market, collecting the results, and producing pretty graphs. It also came in handy a couple of other times while I still used Windows on a regular basis, though the Excel connection is still my primary use case for it.
Vim Script
It’s amazing these days to think that I programmed before learning Vim. It’s equally amazing to think that people do so without extensive customization. My .vim directory sports over ninety files, many of them specific to one of a few dozen languages and text formats. True, most of them contain nothing more than settings, variable definitions, and key mappings, and half of the rest is taken from Vim tips and scripts or adapted from the runtime, but there are at least a few examples of real programming in there.
CCScript
While one online game was down for an extended period of time, I was introduced to VGA Planets. Naturally, I discovered the most complicated way to play it, wasting hours on scripts to save me a few minutes of tedium per turn. That was made possible by PCC, the most powerful client program available, which seemed to give me an edge in the game that never finished. Sadly, I haven’t played since. This language is interesting in the way it guesses what a bare equal sign means, with := and == operators to force the issue when necessary.
INTERCAL
The specification for the Compiler Language With No Pronounceable Acronym should be required reading for any budding Linux hacker. If nothing else, it displays an interesting perspective on the issues of its day. The difference between EBCDIC and ASCII, for example, or the limitations of punch cards and teletypes, or the finicky nature of all compilers. Granted, I haven’t even attempted to write anything significant in it; simply wrapping my head around the operators has been tricky enough.
Befunge
If INTERCAL was designed to be unique, that must have been taken as a challenge. A Befunge program looks more like a cross between a roguelike and a word search than something that should be executed. This is where Vim’s mode division truly shines, with liberal use of the hjkl keys and r operator.
BF
I must have been hooked on esoteric languages by this point, because there is only one other reason to learn brainfuck: To prove that some other language or program is Turing-complete. Then again, with only eight instructions, it’s almost impossible to forget.
Wierd
Meant to be the ultimate answer to minimalism of instruction set size, it cheats a bit by using relative location. Of all the (relatively) useless esoterics, this one has been the most fun to write for. At one point, I even started a graphical editor for it, but never convinced it to stretch the wires properly. I’ve also written an interpreter for a modest extension of the language, which I might even release sometime.
REBOL
I honestly tried to use REBOL as a serious language. I even fiddled with a Vim syntax file for it. There’s something alluring about the promise of natural language as input, and easy graphics with fun colored widgets. I never really found a reason to stick with it, though, and have forgotten everything I once knew.
To be continued…