6: 2011-07-02 (土) 10:06:02 sero[6] [7] | 7: 2011-07-02 (土) 22:39:55 sero[6] [8] | ||
---|---|---|---|
Line 60: | Line 60: | ||
- まとめ:hidetol_8 + ソースの入力ツールinput.g01 を使ってnaskで開発ができる。 | - まとめ:hidetol_8 + ソースの入力ツールinput.g01 を使ってnaskで開発ができる。 | ||
+ | |||
+ | ** g01-computer? [#ebba0f54] | ||
+ | - (概念的な話なのでこの節は読み飛ばし可) | ||
+ | - 想像してみよう。あなたのPC(Windows/Linux)から通信のケーブルが伸びている。その先には5インチHDDくらいの大きさの黒い箱がつながっていて、上面には"g01-computer"と刻印がある。 | ||
+ | - この箱はコンピュータでありx86のCPUを積んでいることはほぼ確実だが、その他のハードウェア構成は不明である。あるプロトコルに基づいてPCと接続されていることも分かっている。 | ||
+ | - PCでefg(あるいはhijk)を起動すると、指定されたプログラムがg01-computerで実行される。 | ||
+ | -- (何らかの方法でPCとg01-computerはストレージを共有している、すなわちファイルは自由に読み書きできると仮定する) | ||
+ | - つまり、「efgはg01プログラムの実行環境(仮想マシン)である」という通常の解釈のほかに「efgは接続された架空のコンピュータの端末エミュレータである」という解釈もできるわけだ。 | ||
+ | - この企画が実現しようとしているのは、後者の解釈における架空のコンピュータ"g01-computer"上での''セルフ開発''である。 | ||
+ | - このコンピュータ用のアセンブラとリンカがすでに作成されているのだから、あとは端末からの入力をそのままファイルに書き出すプログラムがそのコンピュータ上で動けば(理論上)セルフ開発が実現できる。 | ||
** Getting started [#c8332d6f] | ** Getting started [#c8332d6f] | ||
Line 74: | Line 84: | ||
- 実行 | - 実行 | ||
../z_tools/hijk hello | ../z_tools/hijk hello | ||
+ | |||
+ | ** ラインエディタ [#j2a9ff6f] | ||
+ | - 最小限のツールセット(上記)でもプログラムが作れることは実証できた。 | ||
+ | - しかし、ミスタイプがあるたびに入力を最初からやり直すことは、ある程度以上の規模のプログラムにおいて、現実的でない。そしてこの規模の限界は相当小さい。 | ||
+ | -- hello, worldくらいならともかくも、入力のやり直し中にさらにミスタイプすることは十分に起こりえる、というか起きないほうがおかしい。 | ||
+ | - (ミスタイプのたびに入力をやり直すなんてパンチカード・紙テープの時代みたいだ) | ||
+ | - だから、実際の開発ではテキストの編集操作が行えるテキストエディタが必要となる。 | ||
+ | - ところで、この企画はセルフ開発がテーマだった。だからこのテキストエディタもg01プログラムとして作成する必要があるし、その上、''作成に使える道具は最小限のツールセットだけ''だ。 | ||
+ | - 上で述べたことから、テキストエディタの作成自体もそれなりに困難な作業になってしまうので、できるだけ簡単に作れるエディタが望ましい。 | ||
+ | |||
+ | - じゃあ仕様から。テキストの編集は行を追加・削除することで行う。つまり作成するエディタはラインエディタとなる。 | ||
+ | - これ以外の機能は持たせない。つまり、起動すると新規ファイルを作成する→行を追加していく→間違えた行を削除し正しい行を追加する→終了時にファイルに書き込む、という入力作業になる。 | ||
+ | |||
+ | - と、2010-07-01の昼頃からこの仕様を考えた。これから、紙の上でnaskプログラムを作成する。 | ||
- まだ未完成。進展があったら更新。 | - まだ未完成。進展があったら更新。 |
(This host) = http://osask.net