涼風コンピュータblog

涼風 ・Rubyist, RubyやRuby on Railsに詳しくなっていきたいです

「まつもとゆきひろ 言語のしくみ」を読んで

Rubyのパパであるまつもとゆきひろさんの「まつもとゆきひろ 言語のしくみ」を献本していただきましたので感想を書きたいと思います。

この本は、コンピュータ言語を作成するための設計にはどのようなことを考えたらよいかをまつもとさんが新しく作成したstreemと呼ばれる言語を開発しながら日経Linuxに連載した記事をまとめたものです。

ハッシュテーブル、スタック、リンクリストなどのコンピュータに関する基礎的な知識は必要です。streemの実装はC言語で書かれており、コードも紙面に記述されているので、C言語の知識はあったほうがよいでしょう。

言語設計にあたり、古い言語であるLispだったり、新しい言語swifなどいろいろな言語の文法や実装を参考にしているところが、漠然と考えるのではなく、いろいろな言語を調査して、いいところや悪いところを勘案して、言語を設計してます。

新しい並列プログラム言語streemを題材に本内容は進みます。 unixのパイプラインに着想を得ています。

以下は標準入力の内容を標準出力に渡す文法です。

stdin | stdout

前にした処理のデータを|で次に渡します。streemは並列プログラムに特化しているため、並列プログラムをしやすいように値がかわらないimmutableを採用しています。

まず、並列プログラムしやいように文法を考えて、文法チェッカーをまず作り、それから実際に動作するように作っていきます。

実装面では浮動小数点のNaN(数字でな)領域にいろいろなデータを埋め込むNaN Boxingやガーベージコレクションの仕組みを解説がためになりました。

新しい言語を作ってみたい、言語に興味がある、streemに興味がある方は是非読んでみると良いと思います。