Sunday, September 28, 2008

The future of programming languages

I've just returned from a Microsoft Tech-talk event with Anders Hjelsberg and Steve Ballmer.

As people might realize, it's hardly every day that we get to see such people in Denmark, and even though it was held on a Sunday I decided to go.

To my disappointment, Steve Ballmer's participation was limited to basically 15 minutes of pep-talk. Fortunately, Hjelsberg's participation was pretty interesting, which made up for that - or rather, it would, if I didn't have the suspicion that I'm going to hear the exact same presentation from him tomorrow at JAOO.

The topic of Hejlsberg's presentation was "the future of programming languages", and while he deliberately kept away from making too far-fetched predictions, he still made a lot of good points.

I'll try to summaries them for you, though they will be para-phrased, as I was too busy paying attention to what he said, to make good notes.

First of all, Hejlsberg argued the following
1) Programming languages evolves slowly
2) Multi-language platforms are important.

This might sound like he is trying to push .NET, but as he explained, it's both the Java and .NET platform that are used to support multiple languages, and that's good, exactly because languages evolves slowly. Too much of the development time used to make new languages are used on tools and framework, which can be reused from existing languages.

After having said that, Hejlberg argued that he saw three trends now, and in the future.
1) Declarative
2) Dynamic
3) Concurrent

What he meant by declarative, is that we see, and will continue to see, more and more domain specific programming languages, and we'll see more of the functional programming languages.

Of course, he also said that the classic taxonomies are breaking down, and we see a trend towards multi-paradigm languages, so today's object orientated languages might mutate into also supporting functional languages, or contain domain specific languages. In fact, he argued that things like LINQ and Ruby on Rails are exactly such things.

Regarding functional languages, he mentioned that F#, which Microsoft plans on integrating in the next version of Visual Studio, is the first functional programming language with a full-blown development environment behind it, allowing it to break out of the traditional academic setting of functional programming languages. Of course, he also explained that F# is really a multi-paradigm language, and thus is a symptom of the taxonomy breakdown he spoke about.

Looking at the dynamic trend, he explained how the .NET framework is being extended to include dynamic programming languages, such as IronPython and IronRuby, and even extend existing languages like C# and VB.NET to allow dynamic programming. This is done by adding the possibility of dynamic execution on top of the existing framework, which he believes is the way to go, since it allows the framework to use the advantages of non-dynamic programming where possible.

Finally, the trend towards concurrent comes from the fact that we've have reached the current maximum for how much performance we can press out of a processor, so we are seeing multi-processor computers in larger numbers, and thus need to ensure that our code supports running efficiently on such. To be able to do that, we need to expand the frameworks, to support transparent concurrency, where the code are executed in such a way that the computer maximizes the concurrency, without the compiler, or even worse, the developer, having to know how many processors there are.

As Hejlsberg made clear, he is far from the first person to mention these trends, but he is in an unique position to actually implement them, so it was quite interesting to hear his take on them.

If I'm right, and I am going to hear the same speech tomorrow, I'm interested in seeing if the audience will react differently. Today was almost entirely .NET people, while tomorrow is going to be a mixed crowd.

Labels: , , ,

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home