Frage

Ich bin daran interessiert, eine parallele Karte Operator für meine Sprache zu definieren. Es wandelt eine Liste in eine neue Liste ein Ausdruck gegeben. Es wäre eine Syntax ähnlich einen Generator hat. Im Gegensatz zu Generatoren in C # und Python, wäre es möglicherweise parallel ausgewertet werden, wenn der Compiler Wünsche (zum Beispiel gibt es einen Ruhe Kern, und die Liste ist wirklich groß). Es wäre witheach nennt es von foreach zu unterscheiden, die der Reihe nach ausgeführt.

Zum Beispiel betrachten:

var f = function(int x) : int { return x * 2; }
var my_list = 0..1000000;
var my_mapped_list = witheach (i in mylist) yield f(i);

Meine Frage ist, wird dies für Programmierer zu unintuitive sein, die Nebenwirkungen in f setzen kann? Natürlich würde ich sagen, das nicht in der Dokumentation zu tun, aber die meisten Programmierer nicht die Sprache Dokumentation lesen. : -)

Ich denke, die größere Frage ist kann moderner Programmierer Anpassung an impliziter parallele Listenverarbeitung Semantik in ihrer Sprache, oder tue sie Dinge müssen noch deutlicher sein?

War es hilfreich?

Lösung

Sie haben Recht, dass die meisten Benutzer werden in der Dokumentation nicht gelesen, und als solche wahrscheinlich nicht-Thread-sicher-Code in einem witheach Block (vor allem mit einem Namen und Syntax so ähnlich wie foreach) wird gesetzt. Sie werden entweder an den Benutzern vertrauen, oder eine statische Analyse auf der gleichzeitigen Sicherheit dieser Blöcke durchzuführen. Wenn Sie die später gewählt haben, dann können Sie auch nicht mit witheach stören - nur automatisch parallelisieren foreach, wenn möglich.

Zur Frage, ob Nutzer sind bereit für die Verantwortung der Wahl potenziell gefährlich zu sein, würde ich so lange mit „Ja“, Wette, als sie vorne wissen, was sicher ist. Viele Sprachen zwingen Sie diese Wahl jeden Tag zu machen (Zeiger, manuelle Speicherverwaltung, Shared Memory Gleichzeitigkeit). Vielleicht möchten Sie Ihre Syntax weniger zweideutig (das heißt nennen es parallelforeach) machen, damit die Menschen wissen, was sie für die Anmeldung sind.

Andere Tipps

Sie meinen, so etwas wie pmap ?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top