2 Punkte von GN⁺ 2023-08-26 | 1 Kommentare | Auf WhatsApp teilen
  • Der Autor, ein Softwareingenieur, teilt seinen Weg, sich von Haskell zu lösen, der funktionalen Programmiersprache, die er 10 Jahre lang genutzt hat.
  • Den Autor zogen Haskells Fähigkeit an, Code symbolisch und algebraisch zu verstehen, sowie sein robustes Typsystem.
  • Haskells Typsystem erlaubt strenge Typprüfungen, ohne übermäßig einschränkend oder zu lautstark zu sein, was das Schreiben und Warten von Code erleichtert.
  • Der Autor schätzte Haskells Fähigkeit sehr, mit Typen Invarianten auszudrücken; dadurch überprüft der Compiler die Logik ein zweites Mal und verbessert so Sicherheit und Korrektheit des Codes.
  • Trotz dieser Vorteile entfernte sich der Autor aus drei Hauptgründen von Haskell: dem Wunsch nach stilistischer Neuheit, unbeholfenen Tools und ständigem Wandel.
  • Stilistische Neuheit verweist auf die Tendenz der Haskell-Community, mit neuen Abstraktionen zu experimentieren; das ist innovativ, kann aber die Wartung von Code erschweren.
  • Der Autor bezeichnete Haskells Tooling als „okay“, merkte jedoch an, dass es kein Werkzeug gebe, das so einfach zu nutzen und so stabil sei wie Rusts cargo.
  • Der ständige Wandel in Haskell, insbesondere regelmäßige nicht abwärtskompatible Änderungen, erhöhte die Reibung bei der Nutzung der Sprache.
  • Obwohl er sich von Haskell entfernt hat, erkennt der Autor weiterhin dessen Stärken an: die Fähigkeit, Code algebraisch zu refaktorieren, das Typsystem und das deklarative Bibliotheksökosystem.
  • Der Autor kommt zu dem Schluss, dass die Entscheidung für oder gegen Haskell von den persönlichen Zielen abhängt. Er empfiehlt, Haskell zu lernen, um ein besserer Programmierer zu werden, mahnt aber wegen der beschriebenen Herausforderungen zur Vorsicht, wenn man es als primäre Sprache einsetzen möchte.

1 Kommentare

 
GN⁺ 2023-08-26
Hacker-News-Kommentare
  • Die Haskell-Community ist dafür bekannt, das Lernen stark zu betonen und ein Umfeld für Neugier sowie Wissensaustausch zu schaffen.
  • Allerdings tut sich die Community oft schwer damit, Ideen nach dem Testen wieder zu verwerfen, wodurch professionelle Haskell-Codebasen unübersichtlich werden.
  • Haskells Tooling wird kritisiert, doch manche argumentieren, dass die meisten Programmiersprachen ein noch schlechteres Tooling haben.
  • Haskells Tooling hat mit Hoogle eine einzigartige Funktion, die wegen ihres Nutzens sehr geschätzt wird.
  • Die Weiterentwicklung von Haskell und seiner einzigen vernünftigen öffentlichen Implementierung GHC wird wegen ständiger Änderungen und Inkonsistenzen kritisiert.
  • Die Kopplung zwischen GHC und bestimmten Versionen der Standardbibliothek base wird als Problem gesehen, weil sie bei neuen GHC-Versionen Änderungen an Abhängigkeiten erzwingt.
  • Der Verlust des Interesses des Autors an Haskell wird auf drei Hauptfaktoren zurückgeführt: stilistische Neuheit, sperriges Tooling und ständige Veränderungen.
  • Haskells Dokumentation und Tooling waren schwer handhabbar, und der Wechsel der Community von Cabal zu Stack und wieder zurück zu Cabal wird als Zeichen von Verbesserung gesehen.
  • Andere Programmiersprachen haben Elemente der funktionalen Programmierung übernommen und sind dadurch für manche Entwickler attraktiver geworden.
  • Einige Entwickler sind von Haskell zu F# gewechselt, weil das Schreiben von Code dort einfacher sei.
  • Haskell gilt als schwer zu erlernen, und seine Bibliotheken sind oft veraltet oder nur halb fertig.
  • Haskells Performance wird kritisiert; die lazy evaluation führt zu Speicherproblemen und langsamer Ausführung.
  • Für Haskell-Entwickler gelten die Jobaussichten wegen der Spezialisierung der Sprache als begrenzt.
  • Debugging in Haskell wird wegen der Komplexität der Sprache als herausfordernd beschrieben.
  • Scala gilt als gute Alternative zu Haskell, weil es die Vorteile beider Seiten bietet.
  • Manche stellen infrage, ob fortgeschrittene Sprachfeatures für alltägliche Software-Engineering-Aufgaben überhaupt nötig sind.
  • Der Fokus von Haskell auf Forschung und akademische Ziele könnte mit den Anforderungen praktischer Programmierung kollidieren.
  • Der Beitrag schlägt vor, dass Haskell eine Möglichkeit braucht, experimentelle und stabile Features voneinander zu trennen.
  • Der Autor sagt, dass man in Haskell nicht unter Druck gesetzt wird, neue fortgeschrittene Typ-Features zu verwenden, und empfiehlt, ein Gespür dafür zu entwickeln, wie stark man komplexe Typen einsetzen sollte.