2013-04-11 14 views
14

Von Scala (und Akka) kommend, habe ich mich kürzlich mit anderen Sprachen beschäftigt, die für verteiltes Rechnen entwickelt wurden, nämlich Erlang (und ein winziges bisschen von Oz und Bloom). Sowohl Erlang als auch Oz werden dynamisch typisiert, und wenn ich mich richtig erinnere (werde versuchen, einen Link zu finden), haben Leute versucht, Typen zu Erlang hinzuzufügen und es geschafft, einen guten Teil davon zu schreiben, aber konnten das System nicht erfolgreich zwingen letztes Stück?Dynamische Typisierung und Programmierung verteilter Systeme

Oz, während eine Forschungssprache, ist sicherlich interessant für mich, aber das ist auch dynamisch getippt.

Die aktuelle Implementierung von Bloom befindet sich in Ruby und wird daher dynamisch typisiert.

Scala (und ich nehme an, Haskell, obwohl ich glaube, dass es anfänglich mehr als eine Erforschung rein fauler funktionaler Sprachen im Gegensatz zu verteilten Systemen aufgebaut wurde) ist die einzige Sprache, die statisch getippt ist und Sprachlevel bietet Abstraktionen (mangels eines besseren Begriffs) im verteilten Rechnen.

Ich frage mich nur, ob es inhärente Vorteile der dynamischen Typisierung gegenüber der statischen Typisierung, , insbesondere im Zusammenhang mit der Bereitstellung von Sprach-Abstraktionen für die Programmierung von verteilten Systemen.

+1

Die aktuelle Implementierung von Akka ist derzeit nicht typisiert (verwendet Any für Nachrichten). Das Aufkommen von Makros in Scala 2.10 erleichtert die Implementierung einer getippten Version. Sehen Sie dieses Video von nescala 2013: http://nescala.org/#t-14537068 –

Antwort

14

Nicht wirklich. Zum Beispiel hat dieselbe Gruppe, die Oz später erfunden hat, etwas an Alice ML gearbeitet, ein Projekt, dessen Mission es war, Oz als eine typisierte, funktionale Sprache zu überdenken. Und obwohl es ein Forschungsprojekt blieb, würde ich argumentieren, dass es genug Beweis des Konzepts war, um zu demonstrieren, dass die gleiche grundlegende Funktionalität in einer solchen Umgebung unterstützt werden kann.

(vollständige Offenlegung. Ich war ein Doktorand in der Gruppe zu der Zeit, und das Typsystem von Alice ML war meine These)

Edit: Das Problem mit Typen Erlang Zugabe nicht Verteilung ist, es ist einfach eine Instanz des allgemeinen Problems, dass das Hinzufügen von Typen zu einer Sprache im Nachhinein nie gut funktioniert. Auf der anderen Seite gibt es immer noch Dialyzer für Erlang.

Edit 2: Ich sollte erwähnen, dass es andere interessante Forschungsprojekte für typisierte verteilte Sprachen, z. Acute, die einen Bereich ähnlich wie Alice ML oder ML5 hatte, die Modaltypen verwendet, um eine stärkere Überprüfung der Mobilität Merkmale zu ermöglichen. Aber sie haben nur in Form von Papieren überlebt.

+0

Alice ML sieht sicherlich interessant aus, obwohl es scheint, dass es seit 2007 keine Aktivität darauf gab? Weißt du, ob es noch weitere Arbeit zu tun gibt? Es scheint, dass Oz (speziell Mozart) eine Version 2 der Plattform plant, zumindest nach GitHub-Aktivität. – adelbertc

+0

@adelbertc, Alice wird immer noch im Unterrichten von Erstsemestern verwendet, aber leider sind mir keine Pläne für eine weitere Entwicklung bekannt. Re Mozart 2: Der Großteil des ursprünglichen Konsortiums ist nicht mehr beteiligt, und ich bin nicht sicher, ob es überhaupt eine konkrete Zeitlinie gibt. –

+0

(Adressieren Sie auch Ihre 2nd Edit) ah, diese Sprachen scheinen alle interessant, aber leider scheinen alle auf das gleiche Schicksal gefallen zu sein, das ich gesehen habe, andere Forschungsprojekte zu fallen .. vielleicht Bloom wird der nächste Anwärter sein? – adelbertc

10

Es gibt keine inhärenten Vorteile der dynamischen Typisierung gegenüber der statischen Typisierung für verteilte Systeme. Beide haben im Allgemeinen ihre eigenen Vor- und Nachteile.

Erlang (Akka ist inspiriert von Erlang Actor Model) ist dynamisch typisiert. Dynamic typing in Erlang wurde historisch aus einfachen Gründen gewählt; Diejenigen, die Erlang zuerst implementiert haben, stammten hauptsächlich aus dynamisch typisierten Sprachen, insbesondere Prolog, und daher war die Erlang-Dynamik die natürlichste Option für sie. Erlang wurde mit Misserfolg gebaut.

Statische Typisierung hilft beim Erfassen vieler Fehler während der Kompilierungszeit selbst und nicht während der Laufzeit wie bei dynamischer Typisierung. Statisches Schreiben wurde in Erlang versucht und es war ein Fehler. Dynamisches Tippen hilft jedoch beim schnelleren Prototyping. Check this link for reference which talks a lot about the difference.

Subjektiv würde ich lieber über die Lösung/den Algorithmus eines Problems nachdenken, anstatt über den Typ jeder Variablen nachzudenken, die ich im Algorithmus verwende. Es hilft auch bei der schnellen Entwicklung.

Dies sind einige Links, die

BenefitsOfDynamicTyping

static-typing-vs-dynamic-typing

BizarroStaticTypingDebate

+1

Könnten Sie bitte etwas über "Erlang wurde mit Misserfolg im Verstand gebaut"? –

+4

Erlang basiert auf der Vorstellung, dass Fehler in einer der Komponenten das gesamte System nicht beeinträchtigen sollten. Programmierfehler, Hardwareausfälle oder Netzwerkausfälle usw. werden berücksichtigt: Die Sprache enthält Funktionen wie Überwachungsbaum, Überwachung von Erlang-Prozessen usw., die es erlauben, Fehler zu beheben, auf verschiedene Knoten zu verteilen, unerwartete Fehler zu behandeln und niemals zu stoppen. Während die meisten Sprachen und Typsysteme darauf abzielen, ein Programm fehlerfrei zu machen, nimmt Erlang an, dass Fehler sowieso passieren werden, und stellt sicher, dass diese Fälle behandelt werden.Ref: http: //learnyousomeerlang.com/types-or-lack-dieser – Vinod

0

Cloud Haskell schnell helfen könnte reift, statisch typisierte und genial. Das einzige, was es nicht bietet, ist Erlang-Stil Hot-Code-Swapping - das ist das wahre "Killer-Feature" von dynamisch typisierten verteilten Systemen (das "letzte Bit", das Erlang statisch schwierig zu schreiben machte).

+0

Wenn ich sah in letzter Zeit auch keine Vorgesetzten, die eine der besten Ideen sind, die Erlang an den Tisch bringt. Hat sich das in letzter Zeit geändert? Natürlich bedeutet dies nicht, dass dynamische Sprachen hier einen Vorteil haben - Akka stellt diese für Scala (und Java) zur Verfügung, also gibt es natürlich keine inhärente Einschränkung. –

+1

Die Überwachung erfolgt im Cloud-Haskell, nicht in der verteilten Prozessbibliothek, sondern in der übergeordneten, verteilten Prozessplattform. Dies wurde bisher noch nicht veröffentlicht, bietet aber Unterstützung für Gen-Server und Supervisors zusammen mit einigen anderen nützlichen Abstraktionen, die von OTP ausgeliehen wurden. Die erste öffentliche Veröffentlichung ist in diesem Sommer fällig - ich werde diesen Thread aktualisieren, wenn es passiert. – hyperthunk

+0

@hypertunk: Super, gut zu hören! Ich las die Cloud Haskell-Zeitung neulich und vermisste die Erlang-Stil-Aufsicht und freute mich auf die Sommer-Veröffentlichung. – adelbertc