Welche Sprache ist besser für die allgemeine Programmierung, F # oder Haskell? [geschlossen]

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

  •  02-07-2019
  •  | 
  •  

Frage

ich derzeit Haskell lerne, in welcher Sprache (F # oder Haskell) bevorzugen Sie allgemeine Anwendungen für die Programmierung?

Welche denken Sie, ist die stärkere Sprache?

War es hilfreich?

Lösung

Ich würde für Haskell gehen. HackageDB ist eine große Sammlung von Bibliotheken, die speziell für die Sprache geschrieben werden. Im Fall von F # würden Sie am meisten Bibliotheken verwenden müssen, die mit einer funktionalen Sprache im Sinne nicht geschrieben werden, so dass sie nicht als ‚elegant‘ zu bedienen. Aber natürlich hängt es davon ab, wie viel der funktionalen Programmierung möchten Sie tun und Einschränkungen des Projekts möchten Sie es für verwenden. Auch ‚Allzweck‘ bedeutet nicht, sollte es in allen Fällen verwendet werden;)

Andere Tipps

Ich ziehe es Haskell.

Jon Harrop Behauptung, dass Haskell hat schlechte Tools hat mich ein wenig zu denken, da ich ganz mit diesem nicht einverstanden sind. Ich denke, dass das Problem hier ist teilweise ein Entwicklungs Stil. Lassen Sie uns ein paar werkzeugbezogenen Eigenschaften von F # Vergleichen und GHC:

  1. F # verfügt über umfangreiche visuelle Werkzeuge und GHC hat keine. Für mich ist das Fehlen von visuellen Tool irrelevant: Ich arbeite mit vi, einer Unix-Kommandozeile und einem stark benutzerdefinierten Build-System. Der Mangel an Unterstützung für meine Art von Entwicklung in F # wäre für mich sehr versuchen. Auf der anderen Seite, wenn Sie unter einer Visual-Studio-Typ-Umgebung bevorzugen arbeiten, müssen Sie die ganz im Gegenteil Meinung.

  2. F # und / oder .NET Ich verstehe, hat einen sehr guten Debugger. GHC hat nur einen begrenzten Debugger, der in dem Interpreter ausgeführt wird. Ich habe nicht einen Debugger in Jahren (viel davon durch die Verwendung der Test-Driven Development), und wenn Sie arbeiten meist mit reinen Funktionen, wie sie in Haskell, ein Debugger ist viel weniger notwendig, verwendet. Also für mich ist das Fehlen dieses Werkzeugs ziemlich irrelevant.

  3. Bibliotheken. Dies hängt vor allem davon ab, was Bibliotheken Sie brauchen, nicht wahr? Viele gute helfen nicht, wenn die, die Sie brauchen nicht da ist, und viele schlecht gestaltete Bibliotheken mit nicht so hilfreich sein. Haskell hat sicherlich weniger Bibliotheken als .NET, aber es hat eine angemessene Auswahl haben, und die Qualität des API-Design in vielen von ihnen ist sehr, sehr hoch.

Ich weiß nicht, was F # 's-Schnittstelle in nativen Code-Bibliotheken ist wie, aber GHC ist für diesen, aufgrund der fantastischen FFI. Ich schrieb einen Windows-DDE-Server vollständig in Haskell (ja-nicht eine Zeile von C, auch nicht mit Rückrufen von Windows-C-Bibliotheken zu behandeln) und es dauerte deutlich weniger Zeit und war wesentlich einfacher als die gleiche Sache in C oder C tun ++. Wenn Sie native Code-Schnittstellen benötigen, Haskell ist sicherlich die bessere Wahl.

Die „Unberechenbarkeit“ der Speicherauslastung und Leistung ist ein guter Punkt. Haskell scheint tatsächlich ziemlich vorhersehbar zu mir, wenn Sie wissen, was Sie tun, aber Sie werden nicht wissen, was Sie tun, wenn Sie beginnen, und Sie werden eine Menge zu lernen haben. F # ist viel ähnlicher zu anderen .NET-Sprachen.

Insgesamt ist diese Frage kommt wahrscheinlich mehr nach unten auf die Plattform als die Sprache: der große Unterschied zwischen der „Unixy Welt“ von GHC Erzeugung nativen Code und die „Windowsy Welt“ von F # auf .NET läuft, ist kein Problem mit der Sprache.

Ich würde sagen, F #, wie Sie den gesamten NET Framework zugreifen können. Allerdings, das ist eher eine Bibliothek Sache.

Es hängt davon ab, was Sie tun mögen:

Haskell ist die mehr rein funktionale Sprache der beiden.

F # ist eher eine Mischsprache, und nicht rein funktional, sondern hat einen großen Satz von Basisklassenbibliotheken, die Sie moderne Dinge einfach auf Windows oder Mono zu tun, verwenden können.

Ich denke, Jon Harrop einen ernsthaften Downer auf Haskell aus irgendeinem Grunde hat. Es ist einfach nicht wahr, dass es nicht außerhalb der Hochschule in der Tat verwendet wird, es ist weit verbreitet in Investment Banking verwendet wird, und weit mehr als F # und OCaml sind und das aus gutem Grund. Wenn Sie einen Job funktionale Programmierung lernen wollen dann Haskell, da es weit mehr Beiträge beworben für Haskell Programmierer als F # oder OCaml sind. Ich bin sicher, F # Popularität gewinnen wird, wie es Microsoft hinter sich hat und es beginnt von Null, aber im Moment Haskell hat einen klaren Vorsprung.

Wahrscheinlich 2 oder 3 Jahren, führte OCaml das Feld in der praktischen funktionalen Sprachen, aber seitdem hat Haskell es mit mehr Bibliotheken überholt, mehr Funktionen, bessere Leistung und breitere kommerzielle Nutzung.

Sie können dieses Blog-Post von Neil Mitchell informativ finden:

F # Von einer Haskell Perspektive

Die Kommentare werden ebenfalls beleuchtet.

Ich würde sagen, es hängt davon ab, warum Sie es lernen. Wenn Sie es für die Erfahrung einer reinen funktionalen Sprache tun, gehen Sie für Haskell. Aber wenn Sie auf jeden Fall gehen, um die Sprache zu verwenden, um mehr als das, F # ist vielleicht die bessere Wahl sein.

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