* プログラミング言語、どこから作る?
-(by [[K]], 2020.07.11)

** (0)
-プログラミング言語をゼロから作ってみると、やりたいことが多すぎてどこから手を付けたらいいのかわからなくなることはよくあります。
-ここでは、そんなときにどうしたらいいのかのアイデアを書きます。

** (1)
-まず最初に、整数の加算くらいはできるようになりましょう。そして整数変数を持てるようになりましょう。
-そしてprint命令です。これがあれば、自作言語で簡単な計算をしてその結果を表示できるようになります。

-次にforでもwhileでもgotoでもなんでもいいので、ループを作れるようになりましょう。これで「1~100までの和を計算して表示」などができるようになります。
-有限ループが書けるようになれば、何か重たい処理(たとえば1億回ループとか)を書いて実行時間を測ることもできます。実行時間が測れるようになれば、ベンチマークをとって性能向上のための改良を始めることもできます。

-ここまでの流れで意識していることは、「言語に機能追加したときに、その機能を使ってどんなプログラムを書くか」ということです。機能を追加してもその機能を使って遊べなければ、やがて言語開発は退屈になります。

** (2)
-さて次の段階を検討しましょう。

-まずif文は欲しいです。しかし&&や||などの複雑な条件判定は必ずしも必要ではありません。・・・計算もそろそろ四則演算を揃えたくなりますし、それでいいと思いますが、しかしこの時点で複雑な計算式や演算子の優先順位などを数学通りに正確に処理できなくても、気にすることはありません。
-そういう「式がきれいに書けるかどうか」みたいな話は、実は初期段階ではあまり重要ではないのです。・・・それよりも実行速度が速いかどうかとか、入出力がどのくらいできるのかとか、そっちの方がはるかに重要です。そういうのはデモをしてすぐに見せられます。・・・これに対して式がきれいに書けても、それは既存言語に追いついただけなので、デモの時にその話をしても「それがどれほどの価値のあることなのか、当たり前すぎてピンとこない」になってしまって、評価されにくいです。

-この「デモで見せられる機能かどうか」というのは、みなさんが思っているよりも重要です。・・・自分はこの言語をデモして見せる予定はない、だからそんな視点は関係ない、と思うかもしれません。いやいや、そうであっても、この観点は重要です。
-自分で作っていて、こういう「目に見える成果」があると、すごくやりがいを感じるのです。達成感もあるのです。・・・内部的な改良ばかりしていると、だんだん自分のやったことに価値を感じられなくなってきて、開発のペースが落ちてしまうことがあります。

----

-私はグラフィック処理が得意なので、たいていこの段階で自作言語にグラフィック命令を追加します。それで絵を描くプログラムをいくつか作ります。これはすごく達成感があります。デモもすごくかっこよくなります。
--たとえば &size(24){''[[esbasic02a]] の(4)''};を見てください。
-そして配列変数をサポートしたり、キー入力をサポートしたりして、どんどん派手なデモを作っていきます。

** (3)
-この段階になると、自作言語は結構使い物になります。
-この段階まで来てから、その言語に固有の特別な機能を検討します。

-なんというか、自分の言語にはほかにはないすごい機能があったとします。しかしその機能だけあっても、結局まともなことは何もできないのです。やはり一通りの機能がそろった上で、さらに独自の機能があるからこそ、その言語はかっこよくなるのです。私はそう思っています。そしてそう思っているからこそ、この順番で開発したらいいと思っているのです。

* こめんと欄
#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS