失われた2週間
ご無沙汰です。
なにやってたかって、まぁバイトしたり普通に湍の開発をしたりしていたのですが、増えて増えてせっせと減らしてとやってるLuaの消費メモリ量表示見ていたらムシャクシャしてきまして、自分でスクリプト言語を作ったりなんかしてたんです。
#関数定義 `main ((arg), $opt) # 引数受け取り (60, wait) # 関数呼出 (90, $dir) # 変数宣言($〜) (0, $spd) (0, 0, sldh) (0.1, 0, sldspd) (70, wait) (0, 0, sldspd) (((rand), 360, *), $ldir) (((rand), 360, *), $rdir) # ループ [ (BT_WHL, ldir, 0.3, "hak_l", fire) (BT_WHL, (ldir, 180, +), 0.3, "hak_l", fire) ((ldir, 17, +), =ldir) # 代入 (BT_WHL, rdir, 0.3, "hak_r", fire) (BT_WHL, (rdir, 180, +), 0.3, "hak_r", fire) ((rdir, 13, -), =rdir) (2, wait) ] # ソースはまだ下に続いています #--------------------------------------------------------- # おまけ 条件分岐 { condition ? # conditionが0以外のとき : # conditionが0のとき }
逆ポーランドです。カンマの入った後置記法のLispに見えます(?)
インタプリタを作る側の簡便を第一に考えてみました。結果の逆ポーランド。
しかし自分の腕では思った以上に相当の時間がかかりました。
中核部分で丸3日、組み込み関数やら演算子やらデバッグやらで結局丸一週間くらいかかりっきりだった気がします。
で湍をこいつに合わせて作り変えて
実行してみたらなんかLuaの2.5倍くらい処理に時間かかってて
中間言語生成も考えましたがそんなことやってたら冬コミ終わっちゃう
そのあとソースをいじったりコンパイルの設定変えたりでLuaの2倍の時間までは抑えました。
しかしこの可読性の低さはいかんともし難い。
日本語も動詞は後ろですがプログラミング言語で動詞が後ろでは引数が何言いたいのか理解しづらい。
数式を後置記法するのは慣れてないせいか慣れてもそうなのか時間がかかる。
そういうわけで、今はやめます。このスクリプトは。
いつかもっと真面目に言語と処理系の勉強してLuaより速くて読み書きしやすいものに作り変えます。
もう1年ぐらいLuaとお付き合いさせていただきます。