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?