Vielleicht interessiert dich Erlang. Ist eine funktionale Sprache, die sehr oft in Verbindung mit Mehrprozessorsystemen erwähnt wird.
Erlang ist tatsächlich ein Traum was paralleles Computing betrifft und ebenso wenn es um verteilte Systeme geht. Erlang Prozesse sind extrem leichtgewichtig: 1 Millionen leere Prozesse auf und zumachen dauert auf meinem Rechner (Core Duo, 2GB) 1.58000 Mikrosekunden. Die Sprache macht es zudem extrem einfach, parallelen & wartbaren Code zu schreiben.
Das Erlang System kann das alles machen weil es auf einer puren funktionalen Programmiersprache basiert. Der Flaschenhals beim Mulithreading sind die Seiteneffekte: Sobald man einen Zustand hat, der über mehrere Prozesse geshared werden darf, wird paralleles Programmieren zu einer fehlerlastigen und extrem schwer zu
optimierenden Angelegenheit (hat Paulchen ja auch schon angesprochen). Das macht Threading in prozeduralen/objektorientierten Sprachen so kompliziert (Dining Philosopher). Weil es aber in puren funktionalen Sprachen keine Seiteneffekte gibt, wird das Parallelisieren viel einfacher.
Nehmen wir z.B. die Funktion "map", die es in fast jeder Sprache, die Higher Order Funktions unterstuetzt, in der Standardbibliothek gibt:
map(function(x){x*x},[1,2,3,4]) // => [1,4,9,16]
Weil es in einer puren funktionalen Programmiersprache keine Seiteneffekte gibt, kann sich ein Compiler sofort sicher sein, das die Reihenfolge der Aufrufe egal ist. Dadurch lässt sich jeder der 4 Funktionsaufrufe sofort in einem eigenen Prozess ausführen.
In Erlang ist der Code fuer ein paralleles map ca 20 Zeilen lang. In dem Buch Programming Erlang wird eine Implementierung fuer eine generische MapReduce Library in ca 30 Zeilen gezeigt. Dem Glasgow Haskell Compiler kannst Du mit einem switch anweisen, dass er Aufrufe wie map automatisch für Multiprozessorsysteme optimieren soll.
Ich kann also die Implementierung der Programmlogik von der Parallelisierung trennen.
Ich kann mir durchaus vorstellen, dass funktionale Programmiersprachen in den nächsten Jahren drastisch an Popularität gewinnen werden. Sicher kann man sich da natürlich nicht sein, aber das Momentum ist da: Es gibt ein großes Problem, eben das Skalieren in die Multiprozessor-Generation, für das sich funktionale Programmierung als Lösung anbietet. Es gibt den Hype (vor allem um das neue Erlang Buch) und es gibt auch die fetten Klötze in der Industrie die dahinterstehen. Zum Beispiel hat Microsoft angekündigt F# jetzt als Primaersprache neben C# und VB zu vermarkten, Fuer Java wird Scala gepusht, Google verwendet das Akteur Modell von Erlang in ihren Bibliotheken und promotet natürlich ihr mapreduce. Und natürlich spielt sich Ericsson jetzt als der Experte für Erlang und Hochverfuegbarkeitssysteme auf.
Wer sich fuer das Thema interessiert, dem kann ich das Buch Programming Erlang - Software for a Concurrent World empfehlen, sowie das Kapitel ueber Software Transactional Memory von Simon Peton Jones, das unter dem Namen "Beautiful Concurrency" in dem Buch Beautiful Code erschienen ist. In Beautiful Code findet sich zudem auch ein Kapitel über MapReduce (Da stehen ueberhaupt nur coole Sachen drinnen).
Von Simon Peyton Jones gibt es auch ein Video von seinem Vortrag ueber Software Transactional Memory bei der OSCON (Hier sind die Slides). Ausserdem gibt es von einem Schueler von SPJ ein sehr gutes Paper zum Thema: Parallel Functional Programming: An Introduction.
Und ein zweiteiliges Intro in Haskell gibt es von SPJ auch.