「言語のしくみ」を読んだ。本人から「献本しましょうか」とメンション頂いて即答でお願いしました。ありがとうございます。(2016年12月22日)発送可能時間:ひさびさ紙の本を通勤電車の中で立ちながら読んだので手がだるくなりました。なんだか懐かしい感じがしました。この本ですが、一言で言うとこんな本です。聞こえが悪かったらすみません。言いたいのはこの「試行錯誤」がとても良いエッセンスになっている点なのです。実際にはその連載記事をまとめた物に対して、この当時はこの様に考えていたが後になってみると実は良く無かったといった振り返り「タイムマシンコラム」で構成されています。この連載が1つの本に纏められた事でプログラミング言語設計者の葛藤が非常に良く表されているな、そう思ったのです。言えど設計に迷いは生じます。連載の為に期間も守らないといけません。どっちが良いか迷って実装してしまった後、次月号で別の実装に直してしまうといった内容も出てきます。一エンジニアとしてすごく共感できました。対して解説して行く内容になっていたら、もしかするとこんなに面白くなっていなかったかもしれません。知り得ない内容も盛りだくさんです。プログラミング言語に興味のある方は買いではないでしょうか。ところで皆さん、プログラミング言語って作った事あるでしょうか。プログラミング言語の実装は、一般的なライブラリやツール類と比べると設計や実装内容が幾らか異なります。技術スキルも要します。ある程度動く様な形に持っていくには何度も心が折れそうにもなります。インターネットのブログ記事で「○○言語を作った」といった内容を読んでなんとなく理解はできる。僕もやればきっと出来る。考えている人もいるかもしれません。僕も大昔はそう思っていたかもしれません。幾らかプログラミング言語を作ったり、色んなプログラミング言語にコントリビュートしてきた経験のある僕からひとこと言わせて貰えるならば、こう言いたのです。プログラミング言語はある程度の自信がないと作れないが、作れるとそれはより大きな、そしてより確かな自信へと変わるちょっとカッコ良すぎる事を書いてしまいましたが、実際にそうなのです。人生の中でプログラミング言語を作るなんて事は何十回もやれる経験では無いです。自分が手掛けたプログラミング言語が一様に動く様になった際には、なんとも言えない愛着が湧いてくるのです。至らない設計を見つけた際にはとにかく憎たらしくもなります。自分で作ったプログラミング言語と葛藤する事になります。「なんでこんな設計にしちゃったんだよ」と自分を戒める事も多々起きます。それを乗り越えた時の満足感は、実装してみた事がある人しか分からない自信へと変わるのです。本書で書かれていましたが、プログラミング言語をデザインしている時はよく手が止まります。僕のケースであれば、よくブツブツと喋っているそうです。プログラミング言語を作るにはコンピュータを触っていない時間の方が大事だと僕は思います。あーでもないこーでもないと頭を捻って編み出した最適化がうまくキマった時には誰かに言いたいけど誰にもいえない変な喜びが起きます。プログラミング言語を作った事がある人ならば分かって貰えると思います。言語オタク度は手の届かない領域だと分かる一冊でした。読みながら「ほんとに言語好きなんだなw」と言いたくなりました。プログラミング言語に係った事がある人ならば、とにかく読みながら「うんうん、分かる分かる」と言いたくなる本です。その中でも特に「わかるー」と言いたくなったのが以下の一言です。無くとても不便でした。比較関数を渡す為だけに名前付き関数を定義しないといけませんでした。メンションは貰えるのですが、結局だれも作り出そうとしないまま月日が流れて諦めかけていたのですが誰もやってくれないなら自分でやるしかない。世界中でこの機能が一番欲しいのは僕なんだ。心に決め、思うがままに実装しました。入った際にはなんとも言えない満足感が得られました。様に即時関数を作っ...https://github.com/vim-jp/issues/issues/632やって良かった、そう思います。なっているのか」が何度も登場します。ブロックの設計と、作者が意図していなかった使われ方」の話です。これらはユーザが考えた使い方です。作者が意図していなかった設計が違う方向で広がっていったという話はとても面白かったです。イベントハンドラやコールバックとして使わせて貰っています。use...https://github.com/mattn/mruby-uvもう1点、面白かった内容として上げたいのが「言語設計者のマーケティング論」です。思いを喋っているのは、とても興味深い物でした。苦労して作った物なので、誰かの目に止まって欲しいですよね。ところで本書には僕の名前が何度か登場します。処理系のコードを足しました。いろんなカンファレンスでスライドのネタとして扱って頂き見ていてとても楽しかったのを覚えています。本書でも書かれていますが、僕がやったのは継続的なコントリビュートでは無いのです。運営する上で本当に必要なのは、継続的に手を動かしてくれるコントリビュータ達です。一人の手で出来上がったプロダクトには、作者の考えしか入り込まないので「本当に皆が欲しいと思っている機能」は出て来ない事があります。生みの親の言葉として読める点も、本書の楽しみ方の一つだと思います。この本があれば、「プログラミング言語が作れるかも」そんな気持ちになると思います。自分の言語を作ってみて欲しいと思います。迷って躓いて悩んで乗り越えた時に得られる満足感を、ぜひ体験してみて欲しいと思います。reserved.ご質問、お問い合わせはe-mailで。