ためのスマートコントラクト記述言語とコンパイラを作って元旦にリリースしました。コンセプトの紹介(英語)リリースのお知らせ(英語)プロジェクトページレポジトリこのブログではSCamlを使ったTezosスマートコントラクトプログラミングについて少しずつ日本語で連載をしていきたいと思います。初回はプログラミングではなく、SCamlの基本設計コンセプトについてです。一部、プログラミング言語設計についての知識がなければ理解できないところがありますが、読み飛ばされて構いません。言語開発者と言語ユーザー両者の開発、ラーニングコストを極小に保ちながらそこそこ品質の良い安全なスマートコントラクトを記述できプログラミング言語を提供することです。これは言語開発者にとっては新しい言語を作るということになり、ユーザーにとっては新しい言語を学ぶということです。いって彼らが完成度の高い言語をゼロからサッと作れるかと言うと、全くそうではありません。PoCレベルは簡単でも、工業レベルで使えるモノを作るには多大な労力が必要です。ユーザーにとっては新しい言語には学習コストがかかります。既存言語に似た外見を用意します。似ている、といったように。それでも学習コストはかかる。Specificなので、せっかく学習してもそのドメイン外ではまず使えません。これにかかるコストもバカにできません。DSLだと一から書かねばならない。既存の汎用言語でスマートコントラクトをDSLの開発コスト、学習コストを下げるためには、既存の汎用プログラミング言語をそのまま使ってスマートコントラクトが書けるのが一番です。言語開発者にとっては既存言語処理系コードを可能な限り利用可能することで、主な仕事をスマートコントラクト実行系へのコンパイラバックエンドに限ることができ、限られたリソースでも高品質な言語処理系を作ることが可能になります。(高品質なものを作る能力があればね😜)ユーザーにとっては既存言語を知っている人はほぼゼロコストでスマートコントラクトが書けるようになり、知らない人も既刊の入門書やチュートリアルを利用して言語を比較的低コストに学ぶことができます。DSLではなく汎用ですから、スマートコントラクト開発以外にも習得した知識を使うことができます。完全に既存の汎用言語と同じものを採用すれば、その言語のエコシステムツール(インデント、Linting、IDEなど)を変更なしにそのまま使えるという利点もあります。