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.
Linus Torvalds seems to see it exactly as I do:

Python The big plus of this language is that so many people are wildly enthused about it and it has some wonderful math and science oriented libraries. As for the white space issue, just get over it and set up your editor properly. The language has lots of odd quirks and bad design decisions, but among other alternatives like ruby and perl it seems to be the winner. In particular, I dislike the clumsy object syntax (you are forever using "self"). For certain projects it is useful and solid.

Ruby I once adored ruby, but have given it up for Python. A really nice language, but for whatever reason never became popular.

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. However, I have not used it in many years.

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.

Obnoxious languages

Java Not my cup of tea, but it was the native language of Android, until it was replaced with Kotlin, which is much much better. I dislike its long verbose "static public long" declarations, and installing it on a computer is always a royal pain. Best avoided if possible.

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.

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.

Haskell Everyone should learn a functional language, and this is probably the best choice in this day and age. You may never use it to write a useful program, but working with it will build character and make you a better person.

lisp Given the existence of Haskell, there is little reason to learn lisp. 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.

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