Unselbständig typisierte Sprache am besten geeignet, um „reale Welt“ Programmierung? [geschlossen]

StackOverflow https://stackoverflow.com/questions/4634303

Frage

Welche abhängig getippt Programmiersprachen für reale Anwendungsentwicklung verwendet werden könnten?

Dies sind nur einige Punkte, die ich für wichtig halten:

  • Dokumentation
  • Beispielprogramme
  • eine Standardbibliothek
  • oder zumindest eine leichte Fremdfunktionsschnittstelle zu verwenden,
  • eine Gemeinschaft von Menschen, die Sprache für die reale Welt Aufgaben mit
  • Werkzeugunterstützung
War es hilfreich?

Lösung

Ich würde vorschlagen, Agda , weil es die Kompatibilität mit Haskell Aufruf hat. Als solches ist es wahrscheinlich die abhängig typisierte Sprache mit den besten Bibliotheken. Dokumentation und Tutorials sind ein bisschen glanzlos aber, und Tool-Unterstützung ist auch nicht zu groß. Um ehrlich zu sein, die meisten abhängig typisierten Sprachen sind nicht sehr voll zur Zeit entwickelt.

Wenn Sie stattdessen mit der etwas schwächeren Nachfrage geht, dass Ihre Sprache GADT der haben sollte, gibt es zwei sehr gepflegte Optionen: Scala und Haskell. IMHO Sie erhalten die meisten Vorteile der abhängigen Arten von GADT die verwenden und halten entscheidbar zu Boot-Typprüfung.

Scala und Haskell beide haben große und gut Bibliotheken dokumentiert, eine Arbeitswerkzeugkette sowie FFI (auf Java und C jeweils). Beide haben auch Gemeinden mit ihnen reale Probleme zu lösen, wie Parsing und web Entwicklung.

Andere Tipps

Die akzeptierte Antwort enthält falsche Informationen. Typprüfung in Agda entscheidbar ist, wenn Sie aus Positivität / Kündigung / Universum Prüfung wechseln. Darüber hinaus sind unendlich Prozesse programmierbar in Agda, wie IO-Prozesse programmierbar sind in Haskell: Die einzige Einschränkung ist, dass unendliche Prozesse nicht entfalten unbegrenzt sein können, wenn ausgeführt wird, im Laufe Typprüfung . Sie können eine Turing-Maschine-Simulator in Agda implementieren. Sie können nicht nur die Lüge sagen, dass es garantiert ist, um den typechecker zu beenden oder überzeugen sie in unbeschränkter Weise auszuführen

ich jedoch darüber einig, dass abhängig typisierten Sprachen sind noch im Versuchsstadium, wenn es um „reale Welt“ Programmierung kommt. Wir können nicht noch schwere Entwicklung unterstützen, aber wir können einen bedeutenden Hobby unter denen, mit Blick auf die Zukunft, eher wie funktionale Sprachen in den alten Tagen erhalten.

Idris, wie Twey vorgeschlagen, ist der nächste Kandidat zu einer „realen Welt“ abhängig typisierte Sprache. Es ist viel mehr konzentrierte sich auf immer Sachen gemacht als Agda ist. Ich würde Agda als das bessere Fahrzeug empfehlen mit den Ideen in den Griff zu bekommen hinter abhängig Programmierung eingegeben, aber Idris ist die praktische Option.

Es ist, ich bin zu sagen beliebt, wert Neue Releases von Haskell als Kandidat in dieser Diskussion berücksichtigen. Seit GHC 7,4, hat damit begonnen, Haskell eine nützliche Vorstellung von Typ-Ebene Daten zu unterstützen und mit mindestens dem Singleton Technik (a kludge obwohl das ist), können wir wirklich Typen haben je nach Laufzeitwerten ( sie hängen von statischen Variablen beschränkt auf Gleichlaufzeitwerte, indem sie). Haskell ist also eine echte „reale Welt“ Sprache in der frühen Phase mit abhängigen Arten von Experimenten.

Agda ist nicht als Allzweck-Programmiersprache entwickelt. ATS ist eine abhängig typisierte Sprache, die für Low-Level-Programmierung ausgelegt ist, auch wenn es etwas weniger elegant als Agda ist. Idris ist ein fledgeling abhängig typisierte Sprache für performante Anwendungen Ebene Programme.

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