world\n");}みたいに書くと思うのですが、これは多くの初心者を惑わせます。何?これらを「おまじない」と言うことはできますが、このおまじないが多ければ多いほど、初心者は「よくわからない」という第一印象を持ってしまいます。いうものは極力減らしたいと考えました。これらのおまじないは意味があり、これによってC言語は拡張性を担保されているのです。それらを否定するつもりはありません。それを常に要求するところが不満なのです。拡張したいときに記述できればいいと思うのです。3;と書いてしまい、エラーになってしまいます。・・・そこで代入と宣言は違うとか、変数型についてあーだこーだとか、そういう話になってしまいます。宣言のことで頭を悩ませるのは、プログラミング入門の本質でしょうか。本質は自分の組み立てたロジックでプログラムが動いていく様子を理解することです。その本質に早く到達しなければいけません。私はその本質に到達する前に「なんとなくプログラミングは難しい感じがしてよくわからない」という第一印象をもたれてしまうケースを何度も目にしてきました。「きっと自分には向いていない」と決め付けてしまうのです。本質を体験してそう思うのならそれは仕方ないと思うのですが、こんな本質的ではないところでそんなふうに感じてしまうのは「もったいない」ことこの上ないと思うのです。利用する前に宣言が必要だなんていうのは、いってしまえばコンパイラの事情です。無能なコンパイラに教えてやるためのものです。プログラムに本質的に必要なことではありません。・・・その気になればコンパイラは新出の変数を自動で宣言することもできたはずです。そんなことをしたら、変数名のタイプミスにプログラマは気づきにくくなって、バグの温床になるかもしれません。それは私でも分かります。一方で、この仕様が初心者を苦しめているということも分かってほしいのです。違う方法でタイプミスに対処できる方法を模索してみてはどうでしょうか。KH-FDPLが目指しているのはそういうことなのです。構造体やクラスの宣言も似ています。5;これをC言語などで実行するためには、abcがなんという型であるかとか、その型にはdefというメンバ変数があるとか、そんなことを前もって宣言しなければいけません。してそんなことになっているんでしょうか。そんなのはどうだっていいのではないかと思うのです。大事なことは、abcはファイルシステムでいうところのフォルダみたいなもので、そこにdefというファイルがあって、その中身が5だと、それでいいと思うのです。C言語は簡単なことを複雑にしているとしか思えません。初心者は構造体が嫌いなのです。初心者がプログラムの流れを理解することはとても重要です。変数がどのように変化していくのかが見えたらいいと思います。C言語の場合、プログラムに書き足して変数の値をprintfするようにさせるか、もしくはデバッガなどを使わなければ変数の変化は分かりません。printfをソースに書き足すというのは、何か不自然です。初心者は中で何が起きているのかを知るためにプログラムそのものに手を加えることに抵抗を感じます。デバッガにも問題点はあって、デバッガはデバッガの独自の命令体系があって、それを覚えなければいけません。任意の時点で一時停止して、そこでprintf命令を実行できればいいと思うのですが、そうなっていないわけです。「見える化」のために必要なことは何でしょうか。それはプログラムが好きなタイミングで一時停止できて、ソースをいじらずともブレークポイントが設定できて、そのときにprintf命令などを自由に実行できることです。気が済めば実行を再開できることです。コンソールが別になっていて、本来の動作を妨げないのがいいです。その際には、現在利用中の変数の一覧なども取れるべきです。これがあれば宣言がなくても変数名の入力ミスに気づけるはずです。・・・デバッグコマンドと正規の命令に区別はあるべきではないので、これはつまり通常の命令として、「現在利用中の変数の一覧」が取れるべきということになります。プログラムが終了したあとでも、変数は残っているべきです。実行した結果、最終的に変数がどうなったかを確認するためです。永続化C言語で「なんらかの値をファイルに保存しておきたい」と思ったときに、fopenとかfprintfとかめんどくさいことがいっぱいです。メモリにしまっておくときと比べて、どうしてこんなにも難易度が違うのでしょうか。環境変数とかいうものへのアクセスも、getenvがどうたらこうたらということになっています。こんなのおかしいと私は思います。KH-FDPLでは変数は原則として勝手に消えたりはしません。何もしなくても次回起動時に回復されます。したがってファイルに保存することに頭を悩ませることはなくて、適当な構造体に入れておけばいいのです。環境変数の代わりにも使えます。初心者ではなくても今までプログラミング入門者を想定して、プログラミング言語はこうあるべきだと書いてきましたが、これらはどれも初心者以外にも有効なことです。変数をわざわざ宣言しないでも使えるのなら、そのぶんだけプログラムは短く書けます。見通しがよくなって結構なことです。見える化だって、デバッグには重宝しそうです。永続化だって便利になって結構なことです。