At the (Kaboom!) end of the spectrum there is Smalltalk: beautiful, elegant, innovative and sexy. At the other end there is GW-BASIC, the sort of boring, mundane BASIC interpreter that used to come stuffed away in a dark corner of the MS-DOS floppy disk.
Recently, due to the fact that people keep asking me, I’ve been reminded of the fact that I’ve now been programming for around three decades. I started in the early ’80s. Since then, I’ve used all kinds of languages from GW-BASIC to Smalltalk. But most of the time, I’ve been working somewhere between the two extremes with languages such as C#, Java, ActionScript or Pascal which, while they aren’t exactly breathtaking in terms of their beauty or innovation, do what they do well enough and, well, get the job done.
Some languages, such as Ruby, Python and Eiffel, have rather higher ambitions. While not quite at the dizzy heights of Smalltalk’s beauty and innovation, they aim higher than most mainstream languages and have ideals which can be seductive. And there are languages such as Visual Basic (the original version) and Delphi (Pascal) whose contributions to programmer productivity have as much to do with their environments (the whole ‘visual thing’) as with the language itself.
I have a particular fondness for Delphi. Very early in my programming career, I learnt to use Borland’s Turbo Pascal and I became inculcated with the ideals of code clarity taught by Pascal’s creator, Niklaus Wirth. Later, I moved on to using Modula-2, mainly using the excellent TopSpeed Modula-2 which was created by some of the original Turbo Pascal team. Borland’s first attempt at a ‘visual’ Pascal for Windows was a bit less than stunning but they soon made up for that with the launch of Delphi. I began using Delphi while it was still in beta and for ten happy years I wrote the monthly Delphi programming column for PC Plus magazine in the UK.
The writer Somerset Maugham once described himself as being in “the very top rank of the second rate”. To me, Delphi holds the Somerset Maugham position in the world of software. I don’t really think it was second rate any more than I think Maugham was. In its early days it was way ahead of the pack. Other environments (including Visual Studio) only caught up rather late in the day. But, in spite of its many beauties and strengths, Delphi wasn’t an example of a smack-in-the-face ‘Big Idea’ language.
In my personal experience, I’ve only worked with two languages that really fall into that category. The first is (of course!) Smalltalk. Developed in the ’70s, it was so far ahead of everything else that even to this day it seems that other languages are still catching up with it.
And Prolog. Oh, how I loved (and hated) Prolog! I hated it for its lack of all the simple constructs – things like ‘for’ loops – that I was accustomed to in other languages. I hated it for its wayward tendency to run off and find a thousand solutions to a problem when I only needed one. But I loved it for its sheer audacity. Whereas other languages require that you take a problem, work out a solution and then write that solution in code, Prolog says: “Give me the problem and I’ll figure it for myself.” The language was based on the principles of formal logic. It is particularly good at grappling with complex problems with many possible answers – which explains why things such as route-finding and chess-playing programs were often written in Prolog. But ultimately, for everyday, mundane programming tasks it was just a bit too, well, strange. But strange in a rather wonderful way.
These days, when you use a computer, you see influences of Smalltalk everywhere – windows, menus, graphics, mice – not to mention object orientation. As far as I am aware, though, Prolog has been considerably less influential. Its syntax formed the basis for the concurrent-programming language, Erlang. But other than that, Prolog has pretty much fallen by the wayside.
It has to be said that the exciting programming languages are not necessarily the ones that are of most practical for most people most of the time. I can’t say I find C-like languages exciting and yet, given its various incarnations – everything from C++, C# and Objective C to Java, PHP and ActionScript – there is a good chance that most programmers will, at some time or another, end up grappling with some variant on C syntax.
Thirty years ago, I wouldn’t have guessed that C would be so resilient. I suppose I entertained the possibility that Smalltalk or Prolog might become more mainstream. And I thought it highly likely that Modula-2 would gain more of a foothold. But, in the event, the language that seems to go on and on is C, albeit with added object orientation. Which is just one enduring legacy of Smalltalk....