読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

日経ソフトウェア4月号の記事とスクリプト言語による効率的ゲーム開発7章を読んで

ゲームシステムを内部DSLで記述したら面白そうだと思いました。


DSLというのはドメイン特化言語といって、SQLのように特定の分野に特化した言語のこと。
また、SQLのように独立した言語を外部DSL、言語内において新たに定義された文法を内部DSLと呼ぶ。

内部DSLはメソッドチェーンとか、先日作ったリファレンスチェーンなんかが含まれると思う。
少し変わった文法だけど、特定の操作は簡潔に記述できるようになる・・・というのがDSL。


Luaの場合は主にメタテーブルを使うと内部DSLの拡張が出来そうなので、ここ数日メタテーブルでリファレンスチェーンを作って遊んでいた。
まあリファレンスチェーンは効率悪いので普通に算術演算子等を置き換えるほうがいいだろう。

しかしあまりDSLを多用すると他人が見た時や後から読み返した時に混乱するかもしれない。