I have been programming for more than 30 years, actually closer to 40 years all told. Along the way I have encountered and had a lot of road time with different computer languages, and thought it would be enjoyable, if not useful to summarize some of my thoughts and impressions.

These are my impressions, and no doubt many people will disagree with what I have to say. That is fine - I look forward to your emails.

My favorites

C This is my all-time favorite and the language I grab for any serious work. I think that it is worth noting that the bulk of open source software is written in C.

Ruby If I am not coding in C, I am probably coding in Ruby if I have any choice about it. A great language, albeit with a few shortcomings.

Perfectly OK languages

Perl Perl is weird, idiosyncratic, well served by a camel as an emblem. But perl has served me very well for many projects - it is truly bulletproof. The few projects which broke ruby, when recoded in perl, ran flawlessly.

Python The big plus of this language is that other groups are wildly enthused about it and it has some wonderful math and science oriented libraries. The language itself has its controversial white space sensitive syntax (I dislike it), and a clumsy object syntax (you are forever using "self"), but for certain projects it is useful and solid.

Javascript A very nice language that has treated me well. It is almost unfortunate that its niche is inside browsers and any javascript program has to dirty its hands with the mess of the web and the browser interface. A pleasant language to work with. The unfortunate thing about this language is the misleading name, it has no connection to java at all and is in fact much nicer. The other name candidate was "ecmascript", which sounds uncomfortably like enema-script, so maybe we should count our blessings.

Java Not my cup of tea, but it is the native language of the Android. I dislike its long verbose "static public long" declarations, and installing it on a computer is always a royal pain. In some environments, it is the best option. Maybe I will learn to like it.

C++ A language I have avoided and will continue to avoid if possible. An early entry into the object oriented world, that gets criticized by object oriented purists because of multiple inheritance support and other things I don't worry about. There are other object oriented C variants such as C-sharp and Objective C, which I have also managed to avoid. If you have to use them, best wishes. I find it notable that for the most part, the open source community has not embraced any of these, but continues to program in C.

lisp Top on my list of languages to learn someday. It has been around a long time, and some really smart people really like it. If you can program in lisp you can intimidate other people.

Oddball languages

Assembly language This begs for its own category. Every serious programmer should spend time with some assembly language, how else would they know how a computer really works? I have long ago lost count of how many assembly languages I have worked with. They are fun in their own way, but rarely if ever worth the trouble given the existence of the C language. I would never use a microcontroller that did not have a freely available C compiler in this modern age.

Fortran A historical langauge that finds little use these days, and rightly so. In its day (which was the 1970's) it was useful and pretty much all there was. These days, it can be justified only in massive number crunching projects where its simplicity allows aggressive optimization by compilers.

Icon A curious language, amazing for its time, and interesting even today. Worth a look by the clever and curious, but hard to recommend for a project.

Smalltalk I have never had opportunity to work with this language, but is has the reputation as being the source of many of todays object oriented language ideas.

COBOL I mention this only for completeness. It always repulsed me and I avoided it. As far as I know it is now gone and dead. Good riddance.

Basic I was insulted by the name and avoided it. It was popular during the heyday of 8 bit microcomputers.

AWK Like the fish crawling onto land in darwinian mythology, this language is a unix text processing tool, frozen in transition just before becoming a programming language, or perhaps Perl is the fully developed form.

Pascal Another language that has come and gone. Its main purpose was to hinder the progress of computer science education for over a decade. Like java, it compiled to an intermediate language that was run by an interpreter.

Forth A peculiar language that made heavy use of a stack and reverse polish notation. On some sysems served as both operating system and programming language. It was primarily used in the astronomical computing community (much as the mumps language was used in the medical community). Now receives use and attention mostly for nostalgic reasons.

ADA A language designed by committee for defense projects in the USA. I don't know anyone outside of DOD contractors that uses ADA, and I am not sure whether or not it is actually in use anywhere at this point of time. (Actually, given the nature of defense projects, I am sure it is).

Horrible languages

TCL An awful language. Without the Tk extension and the seductive ease of producing quick graphical interfaces, this language would be unknown. The fact that you use "SET x 0" rather than "x=0" should be all you need to know. Heed my warning, it goes downhill rapidly from there.

Have any comments? Questions? Drop me a line!

Adventures in Computing / tom@mmto.org