Programming in Lua 読了
– 第1部 言語(最初の一歩型と値ほか) – 第2部 テーブルとオブジェクト(データ構造データファイルと永続化ほか) – 第3部 標準ライブラリ(数学ライブラリテーブルライブラリほか) – 第4部 C API(C APIの概要アプリケーションの拡張ほか) – 第5部 付録:Luaリファレンスマニュアル(言語アプリケーションプログラムインターフェイスほか)
Luaの印象
読了といっても、言語のコアに関する第一部と第二部だけ読んだ。 Luaの言語コアはシンプルに保たれており、JavaScriptでいうPrototype.jsのようなメタな拡張ライブラリもLua上に実現できそう。 Luaもオブジェクト指向機能はプロトタイプベースなのでJavaScriptに近い印象がある。
記述言語としてのLuaに対する印象は、コアはシンプルだけど、ちょっと込み入ったアルゴリズムを書こうとすると、プログラムが長くなってしまう気がした。 (本書のサンプルコードの書きかたが冗長なだけで、うまくイテレータ等を使えばもっと短いコードになるのかもしれないが… 解説の流れ上、まだ説明していない機能が突然出てくるのを避けるために、しょうがないのかも知れない)
収穫
本書を読んだことによる収穫は、コルーチンの動作がはっきりイメージできたこと。 いままで、Rubyのyieldを使ったコードは曖昧にしか理解できていなかった。 Rubyの解説書を読んでもかなり端折って説明されているのが常なので、わかりにくかった。 本書で、コルーチンに関して低レベルのAPIが用意されており、イテレータがその仕組をどのように使って構築されているかを順を追って解説されている。
言語処理系の実装はめんどくさそう
いつも、プログラミング言語の解説書を読んで思うことは、実用レベル言語にするためには、モジュールとか例外とかデバッグの仕組みとか地味にめんどくさい所を整備しないといけないのだなあということ。 [Nendo]という処理系を作って遊んでいるんだけど、その辺の事まで考えると気が遠くなるのであった… たとえば、一人でGaucheを全部実装しているshiroさんとかすごいなあと思ってしまう。