izard: (Default)
izard ([personal profile] izard) wrote2007-12-06 08:40 pm
Entry tags:

FP for Managed Runtimes: Msft, Intel, Sun, IBM ways

This article is technical so goes under a ljcut.


I've recently wrote about Clojure. Here is one of the reasons I am interested.

Functional/declarative/meta programming is experiencing a renaissance now. In 90s and early 00s those languages were hiding in Universities and were used by some quant finance programmers. Nowadays a lot of new and interesting languages are emerging, and ideas from those are drifting towards inclusion to mainstream commercial languages. (Worst example being C++/Boost, then Java 6 and 7 features, Python 3000, CLR)
This is happening because multicore is going mainstream, so enterprise/HPC developers have to find tools and methods for improving scalability. Desktop developers have to learn what scalability is :).

Microsoft is in the race: it had recently announced they are starting to productize F#, so it is not a research product any more. (Let alone LINQ and CLR 3!)

Engineers from Sun had mentioned several times that they like supporting languages other then Java in JVM, and they are doing quite a few steps in this direction.

Intel is in the race, but focused on HPC folks as usual :). Thread Profiler is good thing and so is Thread Checker, it was a brilliant decision to buy these guys.

Only IBM does not show clear sign of utilizing this trend. May be it had spent too much resources without a good payoff on Smalltalk when I was a child. So it had not tried to embrace a new mainstream language since. Supporting Java was a good commercial move, but conceptually it is following Sun, rather then creating and leading a trend.

Everyone and their dog agree that the future is in controlled environments, and there are only 2 of them now: JVM and CLR. Some (including me) claim that all they have a great runtime and specialized libraries and good JITs/VMs, but that's it. I think Java and C# are not as good as other options for multicore era.

What are other options ?

Nemerle and F# for CLR,
and Scala and Clojure for JVM. (Looks like ABCL is not being actively developed)
I hereby claim that in 5 years from now some of above will become mainstream. There could be more then 1 winner, and #2 in each category is also not too bad. (consulting, good resume, books)

Now make your bets...

You can buy a book on F# already, and it is officially supported by MSFT. But it has a ML syntax (I don't like it and I think it is the main reason other programmers will also be wary)

Nemerle and Clojure have meta programming, but is it very useful for the masses?

Which of 2 weird syntaxes is more convenient for programmers - ML or
LISP? (()((()))) anyone?

P.S. I am not functional and/or declarative/meta-programming zealot, but I am sure that the former can help designing more scalable applications easily, and later can help in some rare cases when used by able programmers.