科学と工学

なぜHaskellなのか

カルダノを構成するプロトコルは暗号学によって配布、バンドルされるため高度なフォールトトレランスを必要とします。最も好調な日でも、ビザンチンアクターが出現したり、不正な形式のメッセージが発信されたり、誤ったクライアントが意図せずにネットワーク上に何らかの騒ぎを起こしたりするかもしれません。

まず、Quickcheckなどや、Refinement Typesのような、より洗練された技術を容易に使用できる強力な型システムを採用でき、フォールトトレランスにある程度期待ができる言語を使いたいと考えました。HaskellとOcaml等が前者を満足させるのに対し、ErlangスタイルのOTPモデルは後者を満たします。

Cloud Haskellを導入したことで、Haskell独自の機能を維持しつつ、Erlangの利点の多くを獲得することができました。さらに、Haskellのモジュール性と合成性により、Time Warpというカルダノ専用の軽量ライブラリを使用することができました。

次に、Haskellのライブラリは、GaloisFP CompleteWell-Typedなどの商業用エンティティの広範な開発によって、ここ数年で大幅な進化を遂げました。結果として、Haskellを使用して本番レベルのアプリケーションを書くことができるようになりました24

さらに、PureScriptの急速な進化は、ClojurecriptがClojureに与えたように、HaskellとJavaScriptの間の必要不可欠な架け橋となっています。カルダノのブラウザ上での動作、またモバイルウォレットの開発には、PureScriptが特に重要になると考えています。

加えて、依存関係の解消に関して言えば、Haskellは、過去数年間、FP Completeから強力な援助を受けて作り出され、容易に利用できるStackageを通して、Michael Snoymanのような技術者が達成した重要な社会的、技術的成果から恩恵を受けています。

また、適切に依存性を解決した上で、我々はソフトウェアのビルドを再現可能にすることを目指しています。つまり、同じ構成値と依存バージョンであれば、まったく同じ成果物が作成されるということです。Stackageを通して、我々はNixOpsを利用し、その再現性を獲得することができました。

最後に、Haskellに特化した才能ある開発者の人口は、他の言語と比較してもかなり大きく、彼らは学術的にも、業界的にも十分に訓練されています。また熟練のHaskell開発者の中にコンピューターサイエンスに関する豊富な知識を持っていない者はほとんどいないため、Haskellは優秀な人材を確保するためのフィルターとしても機能します。


脚注

24: Bryan O'Sullivan氏は、ここでHaskellの産業利用について素敵な話をしてくれています。