[ Go back to normal view ]

BW2 :: the bitwise supplement :: http://www.bitwisemag.com/2

Are New Programming Languages Bad?
Something old, something new...

15 September 2008

by Huw Collingbourne

Creating a new language is fascinating, exhilarating, infuriating and frustrating. But sometimes you end up feeling as though it makes you one of the bad guys...



Ever since my company, SapphireSteel Software, announced that we had begun work on a language called Sapphire (which we are developing for the Dynamic Language Runtime on .NET), we have noticed that a sizable number of people feel that what we are doing must be either a) bad, b) misguided, c) unnecessary, d) doomed to failure or e) all of the above.

OK, so maybe they are right and maybe we’ll live to rue the day we ever embarked on this project. But, frankly, that’s our problem - we are the people putting all the time and effort into Sapphire. If that time and effort is wasted, it’s our loss, not anyone else’s. So I admit to finding it a little bit odd that some people feel such antipathy to the project.

Here is a small sample of some of the reactions we’ve had:

(1) “No new languages. Please. No more.”

(2) “I still don’t get it why one need to adopt a new language. Ruby was already there. What’s the point in making the user learn new syntax. It was better having a standard one in place.”

(3) “We are creating a new ruby! Here is what we did: We removed the best features from it and changed some internal implementation details.”

To be fair, some comments have been more positive:

(4) “I applaud your aspirations, and wish you well. As a professional Delphi developer, I have taken a personal interest in Ruby for several years but have never fully committed myself to it. Though elegant in many ways, it simply did not appear to be in the same league as Delphi in terms of IDE and applicability to desktop applications. As I see it, Sapphire will target these specific issues. Just as importantly for me, Sapphire is looking to find a place on the podium alongside such notables as Delphi and C#. That being the case, I look forward to the day when I can seriously consider Sapphire as a viable alternative to Delphi.”

And:

(5) “New languages are a good thing. Some don’t make it mainstream and some do: a sort of selection of the fittest. But how else would the foundation of out industry evolve? Lots of people have new and great ideas, and in our field, programming languages are a major result of those ideas. Learning new languages is a great way to learn new ways to think about programming too. I think that the Sapphire project has some intriguing goals, and I will definitely be keeping my eye on it.”

Positive comments don’t help us write Sapphire any faster but they do give us encouragement. They let us know that there are some people ‘on the same wavelength’ - people who find the creation of new languages worthwhile, interesting and (potentially, at least) useful.

I should say that I have no problem with scepticism. It is entirely reasonable to ask what is new or different about a language and why anyone should want to use it. I don’t want to go over the specifics of Sapphire here. If you are interested, the place to look for all the latest news is on the SapphireSteel Developer’s Blog. We haven’t even yet said what the really Big feature of Sapphire will be - the thing that motivated us to develop it in the first place (we will only give the full details when we are closer to having a working implementation). Suffice to say that Sapphire is a forward-looking language and is not just trying to duplicate what is already available.

But while scepticism is fine, I don’t really understand the cynicism. Why is it that some people feel that new languages are, in essence, bad. This is the “no, no more new languages!” attitude. This doesn’t make any sense to me. Every language was new once. Ruby itself isn’t that old (it’s been around for about a decade and it’s only been only a couple of years since it garnered a really active programming ‘community’).

Back To The Future

If people didn’t create new languages, Smalltalk would never have been invented and we’d all now be programming in Fortran and Cobol. Smalltalk is, of course, rather a special language and one that is very dear to me. Even so, cynics might dismiss it as one of the ‘failed’ languages - after all, most of the programs in use today are written in something else - often C, C++ or some other C-like variant.

In another sense, however, Smalltalk is one of the great successes. Its ideas were so remarkable and so influential that they continue to shape today’s computing. Graphical user interfaces, IDEs and even object orientation were all brought out of the research labs and into the mainstream thanks to Smalltalk. Without Smalltalk there would be no C++, C#, Java or Ruby.

Another ‘failure’ (you might say) was Pascal. I mean, how many major, real-world applications have been written using the Pascal language as originally defined? In fact, it took a new, totally non-standard version of the language, Borland’s Turbo Pascal, to transform Pascal (which was, in any case, originally intended to be a teaching language) into a successful application development language. Pascal purists may well have felt betrayed by Borland (“What’s the point in making the user learn new syntax?” they may well have asked). But the Turbo product became the only Pascal to have mainstream success and it was later followed by another (even less ‘standard’) language, Object Pascal, which formed the core of the Delphi programming system.

Meanwhile, the creator of Pascal (Niklaus Wirth) went on to write other Pascal-like languages - Modula-2 and Oberon. Once again, these failed to become major application-development languages but they have nonetheless, proved to be influential. I make no secret of the fact that Modula-2 has greatly contributed to my own ideas about the importance of ‘modularity’ and implementation-hiding (not just ‘data-hiding’) as an essential part of the encapsulation provided by the Sapphire language.

Let me be honest. I am a language geek. While I accept and value the necessity of fixed standards in established languages, I certainly do not consider the development of new languages to be undesirable any more than I consider the development of new vacuum cleaners (yes, I do indeed have a Dyson), new medical treatments or new rock music to be undesirable.

By all means, use your 1960s Hoover, take no drugs more modern than aspirins and listen to no music post-Beatles. That’s your choice, just as it is your choice to decide on which programming language to use. But the Hoover, the aspirin and The Beatles were all new once. And, unless technology, medicine, music, programming and every other field of human endeavour are to stagnate, we must hope that there will always be people ready to move forward in an effort to create music, science and computer languages for the future. Most will fail. But out of that mass of honourable failures there will be a few successes.

That surely can’t be a bad thing. Can it...?