8: 2011-07-04 (月) 07:29:45 k-tan[6] [7] | 現: 2024-01-08 (月) 12:59:02 lina[8] [9] | ||
---|---|---|---|
Line 20: | Line 20: | ||
- で、作った。ファイル名: input.c | - で、作った。ファイル名: input.c | ||
#include <guigui01.h> | #include <guigui01.h> | ||
+ | |||
void G01Main(void) { | void G01Main(void) { | ||
static const unsigned char cmdusage[] = { | static const unsigned char cmdusage[] = { | ||
Line 29: | Line 29: | ||
char * const p0 = g01_bss1a1, *p = p0; | char * const p0 = g01_bss1a1, *p = p0; | ||
int flag = 0; | int flag = 0; | ||
+ | |||
g01_setcmdlin(cmdusage); | g01_setcmdlin(cmdusage); | ||
+ | |||
for (;;) { | for (;;) { | ||
int c = jg01_inkey3(); | int c = jg01_inkey3(); | ||
Line 37: | Line 37: | ||
c = '\n'; | c = '\n'; | ||
g01_putc(c); | g01_putc(c); | ||
+ | |||
if (!flag) { | if (!flag) { | ||
if (c == 'q') | if (c == 'q') | ||
Line 52: | Line 52: | ||
} | } | ||
*p = '\0'; | *p = '\0'; | ||
+ | |||
g01_getcmdlin_fopen_s_3_5(0); | g01_getcmdlin_fopen_s_3_5(0); | ||
jg01_fwrite1f_5(p - p0, p0); | jg01_fwrite1f_5(p - p0, p0); | ||
Line 85: | Line 85: | ||
../z_tools/hijk hello | ../z_tools/hijk hello | ||
- | ** ラインエディタ [#j2a9ff6f] | + | ** ラインエディタ → 中止 [#j2a9ff6f] |
- 最小限のツールセット(上記)でもプログラムが作れることは実証できた。 | - 最小限のツールセット(上記)でもプログラムが作れることは実証できた。 | ||
- しかし、ミスタイプがあるたびに入力を最初からやり直すことは、ある程度以上の規模のプログラムにおいて、現実的でない。そしてこの規模の限界は相当小さい。 | - しかし、ミスタイプがあるたびに入力を最初からやり直すことは、ある程度以上の規模のプログラムにおいて、現実的でない。そしてこの規模の限界は相当小さい。 | ||
Line 98: | Line 98: | ||
- と、2010-07-01の昼頃からこの仕様を考えた。これから、紙の上でnaskプログラムを作成する。 | - と、2010-07-01の昼頃からこの仕様を考えた。これから、紙の上でnaskプログラムを作成する。 | ||
+ | |||
+ | - プログラム作成の手順は次のようにすることを考えた。 | ||
+ | ++ まず、"_G01Main: ret"という何もしないプログラムを作成する。 | ||
+ | ++ これに、機能をひとつ付け加えたプログラムを紙の上で作る。 | ||
+ | ++ 元のプログラムをcpy.g01でバックアップし、input.g01で新しいプログラムを入力する。 | ||
+ | ++ 動作を確認し、次の機能の作成に移る。 | ||
+ | ++ 以上を、プログラムが完成するまで繰り返す。 | ||
+ | - この手順だと、書くべきプログラムの量は増えるが、全体を一気に入力する方法に比べてデバッグがやりやすいと考えた。 | ||
+ | |||
+ | - 2011-07-13現在、上の手順を2回繰り返し、コマンドラインパラメータの定義と、入力ファイルを開き(デバッグ用に)そのまま出力する機能が実装された。 | ||
+ | -- &ref(lineedit.nas); | ||
+ | - この時点でプログラムは607バイトあり、この入力に約5回タイプミスをしてやり直した。 | ||
+ | - 手元にラインエディタ全体で約2.5KBを下回ることはないという見積もりがあるので、プログラムの長さはこの約4倍以上になる。 | ||
+ | - 簡単な計算によりこのプログラム全体をタイプミス無しに入力できるまでのやり直し回数の期待値は600回余りとなる。 | ||
+ | - これは(不可能でないまでも)現実的な値でないので、もっと短いプログラムでソースコードの入力支援を行う必要があると結論し、ラインエディタの作成を中止した。 | ||
- まだ未完成。進展があったら更新。 | - まだ未完成。進展があったら更新。 | ||
+ | |||
+ | ** 展望 [#za6ea769] | ||
+ | - この企画でやってみたいことの列挙 | ||
+ | :: Hello, world | GUIGUI01によるセルフ開発が可能であることの実証 (完了) | ||
+ | :: ラインエディタ | テキストデータの入力支援 | ||
+ | :: (詳細未定) | プログラムの入力支援 | ||
** コメント欄 [#yd6c8bdd] | ** コメント欄 [#yd6c8bdd] |
(This host) = http://osask.net