Ich habe mehrere Sprachen gelernt, aber jetzt möchte ich eine wählen. Die Sprache, die mir am meisten gefallen hat, war Haskell, das wie eine interpretierte Sprache ist, aber kompiliert wird.
Was sind die Vor- und Nachteile von Haskell?
Ich habe mehrere Sprachen gelernt, aber jetzt möchte ich eine wählen. Die Sprache, die mir am meisten gefallen hat, war Haskell, das wie eine interpretierte Sprache ist, aber kompiliert wird.
Was sind die Vor- und Nachteile von Haskell?
Nur ein paar Ideen, die mir gerade im Kopf herumschwirren.
Vorteile
Das Erlernen von Haskell wird Ihre Denkweise über Programmierung verändern. (Viele Menschen finden sich oft dabei wieder, dass sie nach dem Erlernen von Haskell Haskell-ähnlichen Code in anderen Sprachen schreiben.)
Die Typensicherheit ist Meilen über den Mainstream-Sprachen (Nullzeiger Ausnahmen, jemand?)
Typinferenz bedeutet, dass Sie sich keine Gedanken über Typen machen müssen, es sei denn, es ist absolut notwendig.
Es erzeugt hoch performante Ausführungsdateien.
Parallelität ist fast trivial mit den par
und pseq
Kombinatoren
Die interaktive Umgebung (hugs/ghci) ermöglicht es Ihnen, Ideen schnell zu prototypen
Verfügt über eine nette unterstützende Community (IRC, Mailinglisten, etc.)
Sehr ausdrucksstarke und präzise Syntax
GHC wird aktiv weiterentwickelt und verbessert, einschließlich der Unterstützung für die Codeausführung auf der GPU für einen extra Kick beim Hochleistungsrechnen
QuickCheck > Einheitstests
Nachteile
Das Erlernen von Haskell wird alle anderen Sprachen für Sie ruinieren.
Es ist ziemlich kompliziert, sich einzuarbeiten
Sehr einfach, kryptische Programme zu schreiben, die niemand versteht, auch nicht Sie selbst einige Tage später
Ich möchte auch einige der praktischen Funktionen von Haskell betonen, trotz seiner reinen Schönheit:
Wenn Sie die Wahl haben, empfehle ich Ihnen dringend, Haskell über jeder anderen Sprache zu lernen. Es scheint den optimalen Kompromiss zwischen Sicherheit, Abstraktheitsniveau und Praktikabilität unter den existierenden Sprachen zu treffen.
Vorteile:
1) Haskell ist die modernste Programmiersprache. Ich habe einige Recherchen gemacht und Haskell scheint die einzige richtige moderne Programmiersprache zu sein. Es gibt andere wie Agda und Coq, aber diese sind ziemlich experimentell und haben keine Funktionen für die Programmierung in der realen Welt (z.B. Bibliotheksunterstützung). Es ist am besten, in eine modernste Programmiersprache zu investieren.
(Anmerkung: Ich diskutiere nicht über die Details, warum Haskell modern ist und fast keine andere Programmiersprache es ist. Das würde zu viel Zeit in Anspruch nehmen. Es ist einfach meine subjektive Meinung. Das gilt auch für die anderen Aussagen.)
(Anmerkung: Einige Funktionen, die ich später erwähne, sind wahrscheinlich GHC-spezifisch, aber ich schreibe trotzdem nur Haskell)
2) Haskell-Programmierer sind in der Regel sehr klug. Die Code-Qualität der Bibliotheken ist außergewöhnlich hoch. Die Tipps auf Stackoverflow sind sehr gut geschrieben und auch auf einem hohen Niveau (Dank Menschen wie Don Stewart, um nur einen zu nennen). Ich denke, eine der besten Möglichkeiten, sich im Programmieren zu verbessern, besteht darin, von dem Code anderer zu lernen. Haskell ist in dieser Hinsicht sehr gut.
3) Imperatives Programmieren in den meisten OOP-Sprachen ist veraltet. Ebenso die übliche Art der Programmierung mit Seiteneffekten. Aber es gibt sehr wenige Programmiersprachen für deklaratives Programmieren ohne Seiteneffekte. Beispielsweise sind Scala, F#, Ocaml und Erlang nicht frei von Seiteneffekten. (Allerdings wird auch in der akademischen Welt an OOP-Sprachen gearbeitet, die eindeutig nicht veraltet sind. Denken Sie an die Arbeiten von Alan Kay in der Vergangenheit oder zum Beispiel an die aktuellen modernen akademischen Arbeiten im Bereich Smalltalk.)
4) Haskell unterstützt das Programmieren mit abstrakten mathematischen Konzepten (z.B. Monaden, Funktoren, Kombinatoren, GADT, etc.). Ich denke, das steigert die Programmierproduktivität.
5) Das Haskell-Typsystem ist sehr flexibel und unterstützt die Typinferenz. Dies reduziert die möglichen Fehler erheblich. Das Typsystem wird zur Übersetzungszeit überprüft. Das Typsystem hilft auch als Dokumentation.
6) Einige moderne Konzepte werden zuerst in Haskell implementiert (wie die QuickCheck-Bibliothek). Es gibt viele interessante Erweiterungen.
7) Die Haskell-Syntax ist sehr gut gestaltet. Es gibt keine unnötigen Klammern. Der Code ist kompakt und die Syntax für Pattern Matching und Listenverständnis ist ziemlich schön. Leute wie Knuth befürworten das literarische Programmieren, und Haskell/GHC unterstützt es.
8) Haskell unterstützt die verzögerte Auswertung.
Nachteile:
1) Es ist sehr schwer zu lernen, und es dauert Stunden, Monate, um Haskell zu meistern. Es ist noch schwieriger ohne einen richtigen Hintergrund in Informatik. Dinge wie Monaden und Funktoren sind schwer zu verstehen, besonders ohne mathematischen Hintergrund. Also haben die meisten Programmierer wahrscheinlich nicht die Fähigkeit oder den Willen, Haskell zu lernen. Haskell ist nicht "einfach". Es ist jedoch unmöglich, eine einfache Sprache zu haben, die alle fortgeschrittenen Funktionen unterstützt.
2) Die IDE-Optionen sind nicht so gut wie die für andere Programmiersprachen. Ich benutze Leksah als meine IDE, es ist sehr gut, aber nicht vergleichbar mit Eclipse für die Java-Entwicklung.
3) Haskell kann nicht für Android- oder iPhone-Entwicklung verwendet werden. Im Gegensatz dazu kann Scala für die Android-Entwicklung verwendet werden, und es ist auch mit Java kompatibel, was ein großer Vorteil ist.
4) Ich denke, einige Bibliotheken haben nicht genug Unterstützung von Personen, die sie pflegen und verbessern. Ich mache semantisches Web-Programmieren in Haskell, und die Bibliotheksunterstützung könnte besser sein.
Haskell ist nicht für alle Projekte geeignet. Wenn Sie jede Millisekunde Leistung benötigen, sind C/C++ wahrscheinlich immer noch die beste Option. Daher ist Haskell für viele Projekte geeignet, aber nicht für alle.
Haskell bietet viele technische Vorteile gegenüber anderen Programmiersprachen. Es könnte jedoch politische Gründe geben, die gegen die Verwendung von Haskell sprechen. Zum Beispiel integriert sich Scala besser in die bestehende Java-Infrastruktur.
Was möchten Sie schreiben, welche Art von Anwendungen? Welche Probleme möchten Sie lösen?
Es gibt einige Problemarten, in denen sich Haskell besonders gut macht, aber wenn Sie ein Programm schreiben, das ständig wechselnden Zustand erfordert, ist Haskell keine gute Wahl.
Wenn das Problem beim Modellieren nicht gut zur funktionalen Programmierung passt, wie z.B. beim Schreiben eines CAD-Programms (Computer Aided Design), wäre OOP die bessere Wahl, nur weil das Programmierparadigma besser zum Modell passt.
Aber wenn Sie von diesen Problemen nicht betroffen sind, kann Haskell eine großartige Sprache sein, die Sie verwenden können.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
xkcd.com/1312