Haskell、Erlang、Frankがバーに入り、Unisonで新しいプロジェクトを始める

Table of Contents

Haskell、Erlang、Frankがバーに入り、Unisonで新しいプロジェクトを始める

今月初め、ミズーリ州セントルイスで開催された Strange Loop カンファレンスで、Unison Computing の創設者 Paul Chiusano 氏が聴衆に、分散システムの構築用に設計された新しいプログラミング言語である Unison について解説しました。

Chiusano、Arya Irani、Rúnar Bjarnasonによって開発されたUnisonは、Haskell、Erlang、Frankという3つの関数型プログラミング言語からインスピレーションを得ています。オープンソースの静的型付け関数型プログラミング言語であり、現在パブリックアルファテスト中です。

キウサーノ氏はカンファレンスでのプレゼンテーションで、Unisonは中核となる技術的理念に基づいていると述べた。「Unisonでは、定義を名前ではなく、その内容のハッシュで識別します」と説明した。

プログラマーは一般的に関数を定義する際に、「foo」や「bar」といった名前を付けます。Unisonでも同様に定義できますが、Unisonではメタデータに過ぎないこれらの名前を、その関数の実装の512ビットSHA3コンテンツハッシュに関連付けることで管理しています。

ハッシュを特定コンテンツのアドレスとして使用することは、Unisonコードの保存方法に影響を与えます。「ハッシュごとに、シリアル化された抽象構文木を保存し​​ます」とChiusano氏は述べています。

この抽象構文木(AST)は、様々な依存関係(問題の定義における基本操作)のハッシュを格納します。そして、このASTは、ファイルに格納されたテキスト表現ではなく、Unisonプログラムにとって真の情報源となります。

チサノ氏によると、このアイデアに基づいてプログラミング言語を構築しようとした人は誰もいないという。ただし、OCamlはリンク時に検証するために、依存するモジュールのMD5ハッシュを保存しているようだ。そして、ハッシュは様々なアプリケーションで一意の識別子として広く使用されている。

Unisonのウェブサイトは、コンテンツベースアドレス指定を理解するための適切な比喩を提供しています。「Unisonの定義は空の星のようなものです」とサイトには書かれています。「私たちは空の星を発見し、それらの星に様々な名前を付けることができますが、星は私たちが何と呼ぶか​​とは独立して存在します。」

この考え方は、メモリ アドレスを参照して特定のマシン命令シーケンスにアクセスすることでプログラム機能が組み立てられる、リターン指向プログラミングと概念的に類似しています。

コードをハッシュでアドレス指定可能にすることは、Unison を使用する開発者にとって大きな意味を持ちます。

コボル

COBOL: 履歴書に書けば多くのベテランプログラマーに安定した収入をもたらす5つの小さな文字

続きを読む

「もうビルドは不要になります」とChiusano氏は述べた。「名前変更も簡単にできるようになります。テスト結果をキャッシュできるので、同じテストを何度も繰り返す必要がなくなります。依存関係の競合も完全に排除されます。JSONエンコーダーやデコーダーといった定型的なコードを書かずに、型付き永続ストレージを実現できる、素晴らしい仕組みが生まれるでしょう。」

Unison は、同じコードの複数のコピーがノード間で相互に調整されるのではなく、単一のプログラムが複数のノードにわたる独自の展開を記述できるため、分散システムに適した設計になっています。

Bjarnason 氏が昨年のプレゼンテーションで述べたように、「Unison は依存関係を含む任意の計算をリモート ノードに転送できます。」

Unisonはまだ完成形には程遠い。言語の機能や性能の多くは開発中だが、探索する価値は十分にある。®

Discover More