* ES-BASIC #4
-(by [[K]], 2019.09.06)

** (6) 開発メモ #1
-このメモを書き始めるまで:
--[2012.09.07] OSECPU-VMを作ろうと思い立つ。・・・これより以前の歴史は長すぎるのでここには書かない。
--[2013.03.??] セキュリティキャンプの教材にOSECPU-VMを使おうと決心。
--[2013.08.??] セキュリティキャンプをやっているうちに、OSやVMよりも言語開発に興味がある人の方が多そうだなあと感じた。ということで、OSECPU-VMが一段落ついたら次は言語に行こうと思った。
--[2016.02.17] C言語に永続変数を持たせる「Persistent-C」の開発を始める。・・・まあまあのものはできたけど、なんか物足りない。
--[2016.10.24] 演算子や構文を自由に作れる「Essen」の開発を始める。・・・しかし難航する。
--[2017.06.16] TL-1, TL-2, TL-3 を開発し、プログラミング言語開発入門みたいなことを始める。→[[text0010]]
--[2018.05.31] TJ01~TJ03を開発し、JITコンパイラを作るのは難しくないと立証(→[[text0010]])。・・・その後、JITコンパイラのコード生成を頑張って、C言語並みの実行速度を実現。
--[2019.02.22] OSC2019 Tokyo/Spring で Essen2019-A を発表。Essenのブランド名を冠してはいるものの、もはやJITコンパイラではない。しかしEssenで実現したいことの一部を表現できた。
--[2019.04.16] 言語を何度も作りなおすのに疲れてきたので、言語からいったん離れて、自分の開発効率を大幅に向上できるような、自分専用ライブラリを作ろうと決心。
--[2019.04.29] 開発に使う言語をC言語からC++へ変更することにした。その方が使いやすいライブラリを作りやすいと思ったので。

--[2019.07.12] ついに ES-BASIC の開発を開始する。自作ライブラリがあれば、言語開発は相当にはかどるだろうと思っていたが、実際すごくはかどった。名称のESはもちろん私の言語開発ブランドであるEssenに由来する。→[[esbasic0001]]
--[2019.07.17] PUSH、POP命令を付けることで、グローバル変数しかないのに再帰呼び出しを実現(笑)。
--[2019.07.24] 整数演算しかできないES-BASICだけど、固定小数演算にすることでマンデルブロ集合の描画に成功。
---(ここの3週間弱は、忙しくてほとんど開発できなかった時期)
--[2019.08.15] スクロール命令を付けたので、スクロールするゲームが作れるようになった。
--[2019.08.23] SecHack365の福岡合宿で、ES-BASIC用のプログラムとして、迷路作成プログラムを作ってみた(穴掘り法)。50分くらいでできた(このうちの半分の時間はバグ取り)。なかなか楽しい。
--[2019.08.27] ラボユース合宿で、ついにプログラムがプログラムを作ってそれを即座に実行するという機能を、ES-BASICに追加。自己書き換えすら可能。ついでにここまでの成果をとりあえず公開。→[[esbasic0003]]
--[2019.09.02] 代入文で、右辺に複数の演算子があるような「式」がやっと使えるようになった。ただし演算子の優先順位は無視していて、1+2*3が9になる。それでも今までよりは格段に便利。
--[2019.09.03] 代入文以外の文脈でも式が使えるようになった。一時変数の乱発が必要なくなり、一気に便利さが増した。
--[2019.09.05] 今までどちらかと言えば軽い持ちで雑に作ってきたES-BASICであったが、たったの830行ほどの処理系でしかないのに、JITコンパイラだから手軽なのに爆速だし、REPLがあるから気軽に実行できるし、プログラムをファイルに保存しなくても、コピー&ペーストで入力して実行できるし、blaライブラリがあるから簡単にグラフィックもできるし、「ああ、もしかしたら私が理想とするプログラミング環境に今までで一番近いのはこいつなのではないか」と直感的に思った。・・・Essenの基本仕様の一つに、「演算子や構文を簡単に拡張するための機能がある」というのがあったが、830行のプログラムなら簡単に手入れできるので、言語が言語を拡張する機能を持っている必要性はもしかしたらないかもしれないとも思った。

-''[2019.09.06(金)]''
--GOTOやGOSUBのとび先で、ラベルを指定できるようになった。これで、単純に行番号を付け直してもプログラムが壊れないように作れるようになった。めでたい。
--一方で、自作ライブラリのKIndexHSクラスにはどうやらrehashまわりにバグがあるらしいことが判明したので、次はこれを直さなければいけないだろう。
--この時点で、esbasic.cppは864行。・・・行数が36行も増えたが、これはgoto先がなかったりラベル定義が重複した場合などにもきちんと対処したため。
--KIndexHSのrehashのバグは、rehashのせいではなかった。KMemPoolのallocが怪しい。しかし別のバグを直したら再発しなくなってしまったので、ひとまずこのバグは追及しないことにする。


* こめんと欄
#comment

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS