Auswahl der Sprache zum Erstellen einer App basierend auf dem Einstellungsmarkt im Vergleich zu Leistung und Wartbarkeit [geschlossen]

8

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?

Dan
quelle
5
Sie vergessen eines: Obwohl nur wenige Haskell kennen, gibt es wahrscheinlich mehr, die es wissen und es bei der Arbeit verwenden möchten, aber nicht erlaubt sind, als es sind. Sie schaffen einen Ort, an dem es erlaubt ist, während es schwierig sein kann, Haskellers zu finden Rubyisten, die wenigen, die Sie finden, werden eine Stufe höher sein und eine große Motivation haben, für Sie zu arbeiten (ich würde also lieber in Haskell als in .NET arbeiten ...)
Jimmy Hoffa
4
Nur ein Gedanke: Scala wird ab sofort viel schneller populär als Haskell. Aber jemand, der grundlegende Konzepte von Scala beherrscht, wird es viel leichter haben, Haskell zu beschimpfen. Der Einstellungsmarkt ist also möglicherweise nicht so schlecht, wie er aussieht.
9000
5
Meine erste Reaktion auf die Frage war, Ihr Profil zu überprüfen, um festzustellen, ob sich Ihr Unternehmen in der Nähe meines Wohnortes befindet. Ich sag ja nur.
Psr

Antworten:

11

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.

Joel
quelle
5

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.

Neil
quelle
3
Ja, aber wer möchte COBOL-Code schreiben, unabhängig vom "richtigen Framework" oder der "richtigen Programmstruktur"? : P Paul Grahams Aufsatz geht davon aus, dass die Programmiersprache selbst wichtig ist.
Andres F.
1
Es stimmt, ich habe nicht gesagt, dass es Spaß machen würde. Wenn es beim Schreiben von Programmen nur darum ging, welche Sprache ich verwenden wollte, hätte ich Java vor einiger Zeit nicht mehr verwendet. :)
Neil