2010-12-03 9 views
3

Gibt es Programmiersprachen, in denen das System das Programm ohne erkennbare Unterschiede für den Programmierer parallelisiert?Parallele Programmiersprachen, die deterministisch aussehen?

Das heißt, der Programmierer schreibt ein lineares, deterministisches Programm ohne zusätzliche Tags oder Metadaten und das zugrunde liegende System parallelisiert die gesamte Arbeit.

+0

Was genau meinen Sie mit "linear"? –

+0

Wenn Sie dem Ausführungsmuster folgen, erhalten Sie eine gerade Linie. – blueberryfields

Antwort

1

Ich denke, du meinst prozedural, und nicht deterministisch. In C# wird derzeit daran gearbeitet, ein asynchrones Programmiermodell zu ermöglichen, das die prozeduralen Programmieransätze, an die wir gewöhnt sind, besser abbildet. Siehe Jeffrey Richters IAsyncResult und das neue Async CTP von Microsoft.

F # und andere funktionale Sprachen haben seit einiger Zeit umfassende Asynchronmodelle. Letztendlich müssen Sie sich immer noch an die grundlegenden Prinzipien der Nebenläufigkeit halten: Isolation, Unveränderlichkeit und Synchronisation (normalerweise in dieser Reihenfolge). Ich empfehle die verschiedenen Whitepaper auf der oben genannten Website für einen Einblick, wie Concurrency in naher Zukunft zugänglicher sein sollte - zumindest in C#.

+0

Nein, ich suche speziell nach Modellen, die es dem Programmierer erlauben, Programme zu schreiben, die so lesen, als ob sie linear und deterministisch sind, aber Komponenten enthalten, die den Code in einer nicht-deterministischen Art parallelisieren und ausführen. Zum Beispiel könnte ich schreiben für (jedes i in Array) {ich blinzle einmal rot;}; für (jedes i in Array) {ich blink einmal grün;}; und das zugrundeliegende System könnte einige haben, die ich vor anderen rot und grün blinzelte, und weiterging, manche blinzelten überhaupt nicht und bewegten sich nicht weiter, und einige blinzelten und bewegten sich sowieso nicht weiter. – blueberryfields