it-swarm.com.de

Wofür wird Haskell in der realen Welt verwendet?

Es gibt eine Menge Hype um Haskell, es ist jedoch schwierig, Informationen darüber zu erhalten, wie es in den Anwendungen der realen Welt verwendet wird. Was sind die beliebtesten Projekte/Verwendungen von Haskell und warum zeichnet es sich bei der Lösung dieser Probleme aus?

456
Sergio Tapia

Was sind einige gebräuchliche Verwendungen für diese Sprache?

Schnelle Anwendungsentwicklung.

Wenn Sie wissen möchten, warum Haskell ?, müssen Sie die Vorteile funktionaler Programmiersprachen berücksichtigen (entnommen aus http: //c2.com/cgi/wiki? AdvantagesOfFunctionalProgramming ):

  • Funktionale Programme sind in der Regel sehr viel knapper als ihre Gegenstücke in ImperativeLanguage. Dies führt häufig zu einer erhöhten Programmiererproduktivität

  • FP fördert schnelles Prototyping. Als solches denke ich, dass es das beste Software-Design-Paradigma für ExtremeProgrammer ist ... aber was weiß ich?

  • FP ist modular in der Dimension der Funktionalität, wobei ObjectOrientedProgramming modular in der Dimension der verschiedenen Komponenten ist.

  • Die Fähigkeit, Ihren Kuchen zu haben und ihn zu essen. Stellen Sie sich vor, Sie haben ein komplexes OO) System, das Nachrichten verarbeitet - jede Komponente kann je nach Nachricht Statusänderungen vornehmen und die Nachricht dann an einige Objekte weiterleiten, mit denen sie verknüpft ist. Wäre das nicht einfach zu cool? in der Lage zu sein, jede Änderung einfach rückgängig zu machen, wenn ein Objekt in der Anrufhierarchie feststellt, dass die Nachricht fehlerhaft ist?

  • Viele Housekeeping-Aufgaben wurden für Sie erledigt: Dekonstruktion von Datenstrukturen (PatternMatching), Speichern von Variablenbindungen (LexicalScope with closures), starke Typisierung (TypeInference), GarbageCollection, Speicherzuweisung, ob Boxed (Zeiger auf Wert) oder Unboxed (Wert direkt) verwendet werden soll ) Darstellung ...

  • Sicheres Multithreading! Unveränderliche Datenstrukturen unterliegen nicht den Bedingungen eines Datenrennens und müssen daher nicht durch Sperren geschützt werden. Wenn Sie immer neue Objekte zuweisen, anstatt vorhandene Objekte zu zerstören, kann die Sperre im Allocation- und GarbageCollection-System ausgeblendet werden.

Abgesehen davon hat Haskell seine eigenen Vorteile wie:

  • Klare, intuitive Syntax, inspiriert von der mathematischen Notation.
  • Listenverständnis, um eine Liste basierend auf vorhandenen Listen zu erstellen.
  • Lambda-Ausdrücke: Erstellen Sie Funktionen, ohne ihnen explizite Namen zu geben. So ist es einfacher, mit großen Formeln umzugehen.
  • Haskell ist vollständig referenziell transparent . Jeder Code, der E/A verwendet, muss als solcher gekennzeichnet sein. Auf diese Weise können Sie Code mit Nebenwirkungen (z. B. das Anzeigen von Text auf dem Bildschirm) von Code ohne (Berechnungen) trennen.
  • Lazy Evaluation ist ein wirklich nettes Feature:
    • Auch wenn etwas normalerweise einen Fehler verursachen würde, funktioniert es immer noch, solange Sie das Ergebnis nicht verwenden. Zum Beispiel könnten Sie 1 / 0 als erstes Element einer Liste und es wird immer noch funktionieren, wenn Sie nur das zweite Element verwendet haben.
    • Es ist einfacher, Suchprogramme wie dieses zu schreiben sudoku solver , weil nicht jede Kombination auf einmal geladen wird, sondern sie nur generiert, während sie voranschreitet. Sie können dies in anderen Sprachen tun, aber dies tut standardmäßig nur Haskell .

Sie können folgende Links auschecken:

297
Xinus

Ich denke, den Leuten in diesem Beitrag fehlt der wichtigste Punkt für jeden, der noch nie eine funktionierende Programmiersprache verwendet hat: Erweitern Sie Ihren Verstand. Wenn Sie mit funktionaler Programmierung noch nicht vertraut sind, bringt Haskell Sie dazu, auf eine Weise zu denken, an die Sie noch nie gedacht haben. Infolgedessen wird sich Ihre Programmierung in anderen Bereichen und Sprachen verbessern. Wie viel? Schwer zu quantifizieren.

225
wheaties

Es gibt eine gute Antwort darauf, wofür eine Allzwecksprache wie Haskell gut ist: das Schreiben von Programmen im Allgemeinen.

Für das, wofür es in der Praxis verwendet wird, habe ich drei Ansätze:

Zeigt an, dass es für Grafiken, Netzwerke, Systemprogrammierung, Datenstrukturen, Datenbanken, Entwicklung, Textverarbeitung usw. geeignet ist.

Und zum Schluss meine Meinung, worauf es wirklich ankommt:

Ich hoffe, das gibt Ihnen einen Eindruck davon, wie umfassend Ihre Frage ist, wenn sie mit irgendeiner Konkretisierung beantwortet werden soll.

84
Don Stewart

Ein Beispiel für Haskell in Aktion ist xmonad , ein "merkwürdiger Fenstermanager in weniger als 1200 Codezeilen".

29
unutbu

Aus dem Haskell-Wiki :

Haskell ist kommerziell vielseitig einsetzbar, von Luft- und Raumfahrt über Finanzen bis hin zu Web-Startups, Hardwaredesign-Firmen und Rasenmäherherstellern. Diese Seite sammelt Ressourcen zur industriellen Nutzung von Haskell.

Laut Wikipedia entstand die Sprache Haskell aus der Notwendigkeit heraus, vorhandene funktionale Sprachen zu einer gemeinsamen zu konsolidieren, die für zukünftige Forschungen im Bereich des funktionalen Sprachdesigns verwendet werden könnte.

Anhand der verfügbaren Informationen ist ersichtlich, dass es seinem ursprünglichen Zweck entwachsen ist und viel mehr als nur für Forschungszwecke verwendet wird. Es wird jetzt als eine funktionale Programmiersprache für allgemeine Zwecke angesehen.

Wenn Sie sich immer noch fragen: "Warum sollte ich es verwenden?", Lesen Sie den Abschnitt Warum verwenden? der Haskell Wiki Einführung.

18
Robert Groves

Haskell ist eine Allzweck-Programmiersprache. Es kann für alles verwendet werden, wofür Sie eine andere Sprache verwenden. Sie sind nur durch Ihre eigene Vorstellungskraft eingeschränkt. Wofür ist es geeignet? Nun, so ziemlich alles. Es gibt wenige Aufgaben, bei denen eine funktionale Sprache nicht Excel unterstützt.

Und ja, ich bin der Rayne von Dreamincode. :)

Ich möchte auch erwähnen, dass funktionale Programmierung ein Paradigma ist, falls Sie die Wikipedia-Seite nicht gelesen haben, wie objektorientierte Programmierung ein Paradigma ist. Nur für den Fall, dass Sie es nicht wussten. Haskell ist auch funktional in dem Sinne, dass es funktioniert; das funktioniert ganz gut.

Nur weil eine Sprache keine objektorientierte Sprache ist, heißt das nicht, dass die Sprache durch irgendetwas eingeschränkt ist. Haskell ist eine universelle Programmiersprache und ebenso universell einsetzbar wie Java.

13
Rayne

Ich habe eine coole, Facebook hat ein automatisiertes Tool zum Umschreiben von PHP) Code erstellt. Sie analysieren den Quelltext in einen abstrakten Syntaxbaum und führen einige Transformationen durch:

if ($f == false) -> if (false == $f)

Ich weiß nicht warum, aber das scheint ihr besonderer Stil zu sein und sie drucken ihn dann hübsch aus.

https://github.com/facebook/Lex-pass

Wir verwenden haskell, um kleine domänenspezifische Sprachen zu erstellen. Riesige Datenverarbeitungsmengen. Web Entwicklung. Web-Spinnen. Anwendungen testen. Schreiben von Systemverwaltungsskripten. Backend-Skripte, die mit anderen Parteien kommunizieren. Überwachungsskripte (Wir haben ein DSL, das gut mit munin zusammenarbeitet, was es viel einfacher macht, korrekten Überwachungscode für Ihre Anwendungen zu schreiben.)

Eigentlich alles Mögliche. Es ist nur eine alltägliche Allzwecksprache mit einigen sehr mächtigen und nützlichen Funktionen, wenn Sie etwas mathematisch veranlagt sind.

9
Edgar Klerks

Von Haskell :

Haskell ist eine standardisierte, rein funktionale Programmiersprache für allgemeine Zwecke , mit nicht strenger Semantik und stark statische Eingabe. Es ist nach dem Logiker Haskell Curry benannt.

Grundsätzlich kann mit Haskell so ziemlich alles erstellt werden, was Sie normalerweise mit anderen universellen Sprachen (z. B. C #, Java, C, C++ usw.) erstellen würden.

6
Andrew Hare

Zum Beispiel für die Entwicklung interaktiver HTML5-Webanwendungen in Echtzeit. Siehe Elm , dessen Compiler in Haskell implementiert ist und dessen Syntax viel von Haskells leiht.

5
thSoft

Dies ist eine ziemlich gute Quelle für Informationen über Haskell und seine Verwendung:

Open Source Haskell Releases und Wachstum

3
Robert Harvey