Wednesday, January 30, 2008

The Ultimate Programming Language

Last week I had an interesting discussion with one of my friends and colleagues about the the ongoing programming language hypes and He said he believed that about 80% of the programmers community is still waiting for "The Ultimate Programming Language", a language good for programming everything they may think of. I couldn't help but agree with his statement and it inspired me to write a new post about what I think this "Ultimate Programming Language" should be.

Since the beginning of the programming language history people have been searching for the perfect language and yet we have no language that is perfect, nor do I think we'll have one (at least not in the near future). However, I do believe we are pretty close to having some platforms that would fit in the majority of cases, the description of an "Ultimate Platform".

You will probably wonder on what am I basing my claims, so I am going to explain a bit what I mean. Lately there have been a lot of hypes around some new or (until recently) unknown programming languages that led to a lot of contradictory discussions between their communities which all claimed their language of choice was better than whatever other language they didn't like. Until some time ago, I also thought that Java was the best there is and I didn't want to hear of any other language. Fortunately my experience finally got to me bringing me the wisdom of realizing that there is no perfect programming language. As we humans are imperfect, having our own flaws, we cannot expect a single programming language to be perfect, especially if it is created by us :).

The best thing about all these hypes and contradictory discussions is that they have sparked some very good ideas in the sense of supporting more than one programming language on the well known platforms Java and .NET, including official support from the companies behind the platforms, so this means that more and more people realize that the real key to achieving the "Ultimate Programming Language" is in fact achieving an "Ultimate Platform", a platform that would allow everybody to do their job using the best language for a given task. The truth is that certain languages are good for certain things, so I believe that if we have a chance to combine them, we will be able to do our work in a more efficient and elegant manner.

There have also been other voices in the communities saying that the future of enterprise programming may require us to be polyglot programmers. I think that there is a fair chance that this will happen especially seeing the support Sun is putting into JRuby and Groovy and I am glad that in the end more and more people are realizing that using the right tool for the right job is the best way to get things done.

6 comments:

David Emberton said...

I have something to offer on this... The trouble with computer languages is that they're still limited to typewritten characters as the basic building block. There's just a wall of efficiency that will keep getting hit, with only modest improvements, as long as the concepts inside a person/team's mind have to be deconstructed into clicks, drags, and keystrokes.

Newer "better" languages and frameworks might seem appealing because of their power, but the tradeoff is that you have to load up an entire body of knowledge to use them.

To me, there's room for a revolution in the way that instructions themselves are transmitted and organised that allows some kind of breakthrough in communications efficiency between the programmer and computer.

That, and more natural media integration.

Anyone who wants to discuss this further with me, feel free to email - davidemberton at mac.com

Art Vandalay said...

I agree that there is no ultimate programming language, and I agree that there can't be one because each task is so different (and also because people want different things from their languages). I agree that a common platform is good for interoperability.

But I don't believe in an ultimate platform. The ultimate platform would have to support every feature of every language, efficiently. I don't think this is realistic, or if it is, it will happen at the point at which the platform is almost indistinguishable from the hardware it runs on, a flexible universal Turing Machine. And at that point, the benefits of using a platform at all will be about the same as using one computer to emulate another computer...

Some languages have continuations, but I doubt the JVM will be adding instructions for that...CISC, indeed.

Mihai Campean said...

Thanks for the comments guys, they provide real insightful information. I think that the good thing about all these struggles for perfection is that they lead on the programming evolution, be it a natural language for programming or a software platform indistinguishable from the hardware that runs it. "The Ultimate Platform" is by far not going to be perfect, I think it's just a step in the evolution of programming.

ReverseBlade said...

IMHO
Boo is the ultimate programing language. I think right tool for right job is an idiom that someone said and people keep parroting.

Why Boo ?
- Cross platform : compile once run everywhere : max linux windows (runs on mono)
- Close to native performance

- It has all the .net libraries power. You can write an OS if you want or a web application

- Very powerful, combines C# , python and ruby

Silvana said...

Great work.

Mihai Campean said...

Thanks!

Playing for Change