Ich stehe vor der Wahl, ob ich mit dem Erstellen von Haskell-Komponenten für eine bestimmte Produktions-App beginnen soll, die allesamt in Ruby ausgeführt wird.
Ich neige aus mehreren Gründen zu Haskell, vor allem aus Gründen der Geschwindigkeit (kompiliertes Haskell ist etwa 4-8x schneller), größerer Transparenz (über das Haskell-Typsystem) und sicherer Refactorability (Typsystem). Ich habe bereits einige Open Source- und Produktionsprogramme in Haskell geschrieben und schreibe sie sehr gerne.
Machbarkeit ist kein Thema. Ich habe mit dem Haskell Snap-Webframework und Datenbankbibliotheken wie PostgreSQL.Simple herumgespielt und bin zufrieden, dass das Umschreiben einer Rails-App und verschiedener Backend-Programme mit Haskell möglich ist.
Das eigentliche Problem besteht darin, Programmierer einzustellen, wenn wir das Entwicklerteam skalieren oder schließlich die Programmierverantwortung ganz abgeben müssen. Es ist viel einfacher, Programmierer in Ruby zu finden als in Haskell. Andererseits scheint die Haskell-Community zu wachsen, und es ist nicht allzu schwierig, Programmierer darin zu schulen, Teile eines Haskell-Programms zu ändern, wenn Sie es als DSL betrachten (ähnlich wie Ruby on Rails). Das System vom Typ Haskell scheint auch eine viel sicherere Zusammenarbeit zu versprechen als das dynamische Ruby.
In seinem Aufsatz "Beating the Averages" ( http://www.paulgraham.com/avg.html ) argumentiert Paul Graham, dass die Verwendung einer überlegenen Sprache ein entscheidender Vorteil sein kann. Aber wann ist es sinnvoll, auf die Verwendung einer überlegenen Sprache zu verzichten, um das Hinzufügen von Programmierern zu Ihrem Team zu vereinfachen?
Antworten:
Wenn die Vorteile von Haskell für Geschwindigkeit, Transparenz und Refactorability für den Erfolg Ihrer App wichtiger sind als das Risiko, Entwickler schulen zu müssen, sollten Sie sich an Haskell halten.
Ein einigermaßen intelligenter Programmierer mit Mentoring sollte in der Lage sein, ohne allzu große Schmerzen zu Ihrer Entwicklung beizutragen.
Stellen Sie einfach sicher, dass Sie sich (in Zeit und Kosten) dieses Mentoring leisten können.
quelle
Wie viele Tage würden Sie mit Haskell im Gegensatz zu Ruby sparen? Wäre es mehr oder weniger als die Anzahl der Tage, die erforderlich sind, um Haskell-Programmierer zu finden oder Nicht-Haskell-Programmierer auszubilden? Sind Sie bereits bereit, Nicht-Haskell-Programmierern den Umgang mit Haskell beizubringen? Sind Sie bereit, Programmierer einzustellen, die genau wissen, dass sie ihre Fähigkeit, Haskell zu nutzen, erst lange nach ihrer ersten Einstellung nachweisen können?
Diese Fragen sind schwer zu beantworten. Ich denke, der entscheidende Faktor hier sollte sein, ob Sie beabsichtigen, Haskell in Zukunft weiter zu verwenden, oder ob dies nur für ein Projekt sein wird. Wenn Sie planen, Haskell auch in Zukunft weiter zu verwenden, kann das Programm zwar länger dauern, aber auch als Investition betrachtet werden. Meiner bescheidenen Meinung nach ist Sprache jedoch nicht so wichtig wie Architektur. Wenn Sie das richtige Framework und die richtige Programmstruktur verwenden, können Sie dasselbe Programm in einer anderen "überlegenen" Sprache mit dem falschen Framework oder der falschen Programmstruktur leicht übertreffen.
Mit anderen Worten, wenn Zeit in die ordnungsgemäße Ausführung eines Programms investiert werden soll, sollte diese Zeit meiner Meinung nach besser für die Analyse eines Ansatzes verwendet werden, bevor die erste Codezeile geschrieben wird, die nachweislich die Programmierzeiten erheblich verkürzt, wenn sie richtig ausgeführt wird.
quelle