note0001
の編集
https://khfdpl.osask.jp:443/wiki/?note0001
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2016_10
2016_11
2016_12
BracketName
Essen
Essen0
Essen1
Essen2
Essen3
Essen4
EssenMemo0001
EssenMemo0002
EssenMemo0003
EssenMemo0004
EssenMemo0005
EssenMemo0006
EssenMemo0007
EssenMemo0008
EssenMemo0009
EssenMemo0010
EssenMemo0011
EssenR2
EssenR2_ess03f
EssenR2_ess03h
EssenR2_ess03i
EssenR2_ideas
EssenR2_jit00
EssenR2_jit01
FormattingRules
FrontPage
Help
IP
InterWiki
InterWikiName
InterWikiSandBox
K
KHPC
KHPC_v000doc01
KHPC_v001doc01
KHPC_v002doc01
KHPC_v003doc01
MenuBar
OSC
OSC20181027
OSC20190222
OSC20191123
OSC20230401
OSC20230528
OSC20231021
OSC20240310
OSC20241026
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
SltVA
VariableArray
WikiEngines
WikiName
YukiWiki
advcal20161205
advcal20161206
advcal20161209
advcal20161210
advcal20161215
eoml0001
eoml0002
essen_ex01_0001
impressions
kcl_malloc
khfdpl_result1
members
memo0001
memo0002
note0001
note0002
note0003
note0004
note0005
note0006
oldworks
oldworks00
oldworks06
oldworks12
oldworks13
osaskjp_index
persistent_C
populars
pr20161105
pr20161105b
scsc
seccamp2017
spam_test
uxf
uxf_01
uxf_02
uxp
* KH-FDPLのノート0001 -(by [[K]], 2015.03.17) ** (1) プログラミング入門のためのプログラミング言語について -たとえばC言語で hello, world しましょうというとき、 #include <stdio.h> main() { printf("hello, world\n"); } -みたいに書くと思うのですが、これは多くの初心者を惑わせます。includeって何?stdio.hって何?mainって何? { } って何? -これらを「おまじない」と言うことはできますが、このおまじないが多ければ多いほど、初心者は「よくわからない」という第一印象を持ってしまいます。ですからこういうものは極力減らしたいと考えました。 -もちろんこれらのおまじないは意味があり、これによってC言語は拡張性を担保されているのです。それらを否定するつもりはありません。しかしそれを常に要求するところが不満なのです。拡張したいときに記述できればいいと思うのです。 -またいっぽうで、変数aに1を代入するときは、 int a; a = 1; -などとします。これを「int a = 1;」と書くように指導することもできますが、そうすると「aに1を入れた後にaを3に更新してください」という課題に対して、 int a = 1; int a = 3; -と書いてしまい、エラーになってしまいます。・・・そこで代入と宣言は違うとか、変数型についてあーだこーだとか、そういう話になってしまいます。 -宣言のことで頭を悩ませるのは、プログラミング入門の本質でしょうか。私は違うと思います。本質は自分の組み立てたロジックでプログラムが動いていく様子を理解することです。その本質に早く到達しなければいけません。 -私はその本質に到達する前に「なんとなくプログラミングは難しい感じがしてよくわからない」という第一印象をもたれてしまうケースを何度も目にしてきました。「きっと自分には向いていない」と決め付けてしまうのです。本質を体験してそう思うのならそれは仕方ないと思うのですが、こんな本質的ではないところでそんなふうに感じてしまうのは「もったいない」ことこの上ないと思うのです。 -利用する前に宣言が必要だなんていうのは、いってしまえばコンパイラの事情です。無能なコンパイラに教えてやるためのものです。プログラムに本質的に必要なことではありません。・・・その気になればコンパイラは新出の変数を自動で宣言することもできたはずです。もちろんそんなことをしたら、変数名のタイプミスにプログラマは気づきにくくなって、バグの温床になるかもしれません。それは私でも分かります。でも、一方で、この仕様が初心者を苦しめているということも分かってほしいのです。ですから違う方法でタイプミスに対処できる方法を模索してみてはどうでしょうか。KH-FDPLが目指しているのはそういうことなのです。 ** (2) 構造体の宣言 -構造体やクラスの宣言も似ています。 abc.def = 5; -これをC言語などで実行するためには、abcがなんという型であるかとか、その型にはdefというメンバ変数があるとか、そんなことを前もって宣言しなければいけません。どうしてそんなことになっているんでしょうか。そんなのはどうだっていいのではないかと思うのです。大事なことは、abcはファイルシステムでいうところのフォルダみたいなもので、そこにdefというファイルがあって、その中身が5だと、それでいいと思うのです。C言語は簡単なことを複雑にしているとしか思えません。だから初心者は構造体が嫌いなのです。 ** (3) 見える化 -初心者がプログラムの流れを理解することはとても重要です。変数がどのように変化していくのかが見えたらいいと思います。C言語の場合、プログラムに書き足して変数の値をprintfするようにさせるか、もしくはデバッガなどを使わなければ変数の変化は分かりません。printfをソースに書き足すというのは、何か不自然です。初心者は中で何が起きているのかを知るためにプログラムそのものに手を加えることに抵抗を感じます。 -デバッガはよいです。しかしデバッガにも問題点はあって、デバッガはデバッガの独自の命令体系があって、それを覚えなければいけません。任意の時点で一時停止して、そこでprintf命令を実行できればいいと思うのですが、そうなっていないわけです。これは問題です。 -では「見える化」のために必要なことは何でしょうか。それはプログラムが好きなタイミングで一時停止できて、ソースをいじらずともブレークポイントが設定できて、そのときにprintf命令などを自由に実行できることです。そして気が済めば実行を再開できることです。コンソールが別になっていて、本来の動作を妨げないのがいいです。 -またその際には、現在利用中の変数の一覧なども取れるべきです。これがあれば宣言がなくても変数名の入力ミスに気づけるはずです。・・・デバッグコマンドと正規の命令に区別はあるべきではないので、これはつまり通常の命令として、「現在利用中の変数の一覧」が取れるべきということになります。 -プログラムが終了したあとでも、変数は残っているべきです。実行した結果、最終的に変数がどうなったかを確認するためです。 ** (4) 永続化 -C言語で「なんらかの値をファイルに保存しておきたい」と思ったときに、fopenとかfprintfとかめんどくさいことがいっぱいです。メモリにしまっておくときと比べて、どうしてこんなにも難易度が違うのでしょうか。環境変数とかいうものへのアクセスも、getenvがどうたらこうたらということになっています。こんなのおかしいと私は思います。 -KH-FDPLでは変数は原則として勝手に消えたりはしません。何もしなくても次回起動時に回復されます。したがってファイルに保存することに頭を悩ませることはなくて、適当な構造体に入れておけばいいのです。環境変数の代わりにも使えます。 ** (5) 初心者ではなくても -今までプログラミング入門者を想定して、プログラミング言語はこうあるべきだと書いてきましたが、これらはどれも初心者以外にも有効なことです。 -変数をわざわざ宣言しないでも使えるのなら、そのぶんだけプログラムは短く書けます。見通しがよくなって結構なことです。見える化だって、デバッグには重宝しそうです。永続化だって便利になって結構なことです。 * こめんと欄 #comment
タイムスタンプを変更しない
* KH-FDPLのノート0001 -(by [[K]], 2015.03.17) ** (1) プログラミング入門のためのプログラミング言語について -たとえばC言語で hello, world しましょうというとき、 #include <stdio.h> main() { printf("hello, world\n"); } -みたいに書くと思うのですが、これは多くの初心者を惑わせます。includeって何?stdio.hって何?mainって何? { } って何? -これらを「おまじない」と言うことはできますが、このおまじないが多ければ多いほど、初心者は「よくわからない」という第一印象を持ってしまいます。ですからこういうものは極力減らしたいと考えました。 -もちろんこれらのおまじないは意味があり、これによってC言語は拡張性を担保されているのです。それらを否定するつもりはありません。しかしそれを常に要求するところが不満なのです。拡張したいときに記述できればいいと思うのです。 -またいっぽうで、変数aに1を代入するときは、 int a; a = 1; -などとします。これを「int a = 1;」と書くように指導することもできますが、そうすると「aに1を入れた後にaを3に更新してください」という課題に対して、 int a = 1; int a = 3; -と書いてしまい、エラーになってしまいます。・・・そこで代入と宣言は違うとか、変数型についてあーだこーだとか、そういう話になってしまいます。 -宣言のことで頭を悩ませるのは、プログラミング入門の本質でしょうか。私は違うと思います。本質は自分の組み立てたロジックでプログラムが動いていく様子を理解することです。その本質に早く到達しなければいけません。 -私はその本質に到達する前に「なんとなくプログラミングは難しい感じがしてよくわからない」という第一印象をもたれてしまうケースを何度も目にしてきました。「きっと自分には向いていない」と決め付けてしまうのです。本質を体験してそう思うのならそれは仕方ないと思うのですが、こんな本質的ではないところでそんなふうに感じてしまうのは「もったいない」ことこの上ないと思うのです。 -利用する前に宣言が必要だなんていうのは、いってしまえばコンパイラの事情です。無能なコンパイラに教えてやるためのものです。プログラムに本質的に必要なことではありません。・・・その気になればコンパイラは新出の変数を自動で宣言することもできたはずです。もちろんそんなことをしたら、変数名のタイプミスにプログラマは気づきにくくなって、バグの温床になるかもしれません。それは私でも分かります。でも、一方で、この仕様が初心者を苦しめているということも分かってほしいのです。ですから違う方法でタイプミスに対処できる方法を模索してみてはどうでしょうか。KH-FDPLが目指しているのはそういうことなのです。 ** (2) 構造体の宣言 -構造体やクラスの宣言も似ています。 abc.def = 5; -これをC言語などで実行するためには、abcがなんという型であるかとか、その型にはdefというメンバ変数があるとか、そんなことを前もって宣言しなければいけません。どうしてそんなことになっているんでしょうか。そんなのはどうだっていいのではないかと思うのです。大事なことは、abcはファイルシステムでいうところのフォルダみたいなもので、そこにdefというファイルがあって、その中身が5だと、それでいいと思うのです。C言語は簡単なことを複雑にしているとしか思えません。だから初心者は構造体が嫌いなのです。 ** (3) 見える化 -初心者がプログラムの流れを理解することはとても重要です。変数がどのように変化していくのかが見えたらいいと思います。C言語の場合、プログラムに書き足して変数の値をprintfするようにさせるか、もしくはデバッガなどを使わなければ変数の変化は分かりません。printfをソースに書き足すというのは、何か不自然です。初心者は中で何が起きているのかを知るためにプログラムそのものに手を加えることに抵抗を感じます。 -デバッガはよいです。しかしデバッガにも問題点はあって、デバッガはデバッガの独自の命令体系があって、それを覚えなければいけません。任意の時点で一時停止して、そこでprintf命令を実行できればいいと思うのですが、そうなっていないわけです。これは問題です。 -では「見える化」のために必要なことは何でしょうか。それはプログラムが好きなタイミングで一時停止できて、ソースをいじらずともブレークポイントが設定できて、そのときにprintf命令などを自由に実行できることです。そして気が済めば実行を再開できることです。コンソールが別になっていて、本来の動作を妨げないのがいいです。 -またその際には、現在利用中の変数の一覧なども取れるべきです。これがあれば宣言がなくても変数名の入力ミスに気づけるはずです。・・・デバッグコマンドと正規の命令に区別はあるべきではないので、これはつまり通常の命令として、「現在利用中の変数の一覧」が取れるべきということになります。 -プログラムが終了したあとでも、変数は残っているべきです。実行した結果、最終的に変数がどうなったかを確認するためです。 ** (4) 永続化 -C言語で「なんらかの値をファイルに保存しておきたい」と思ったときに、fopenとかfprintfとかめんどくさいことがいっぱいです。メモリにしまっておくときと比べて、どうしてこんなにも難易度が違うのでしょうか。環境変数とかいうものへのアクセスも、getenvがどうたらこうたらということになっています。こんなのおかしいと私は思います。 -KH-FDPLでは変数は原則として勝手に消えたりはしません。何もしなくても次回起動時に回復されます。したがってファイルに保存することに頭を悩ませることはなくて、適当な構造体に入れておけばいいのです。環境変数の代わりにも使えます。 ** (5) 初心者ではなくても -今までプログラミング入門者を想定して、プログラミング言語はこうあるべきだと書いてきましたが、これらはどれも初心者以外にも有効なことです。 -変数をわざわざ宣言しないでも使えるのなら、そのぶんだけプログラムは短く書けます。見通しがよくなって結構なことです。見える化だって、デバッグには重宝しそうです。永続化だって便利になって結構なことです。 * こめんと欄 #comment
テキスト整形のルールを表示する