2017/09/02 20:06

アルゴリズム+データ構造=プログラム』 〔N. ヴィルト, 日本コンピュータ協会〕という古典的著作がある。

また、「Logic + Control = Algorithm」と言われることもある。

これを合わせると「Logic + Control + Data Structure = Program」となる

前回も引用したが、再度引用しよう:
小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」には、こうあります:
| ○ プログラミング教育とは、子供たちに、コンピュータに意図した処理を
|  行うよう指示することができるということを体験させながら、発達の段
|  階に即して、次のような資質・能力を育成するものであると考えられる。
|
| 【知識・技能】
| (小)身近な生活でコンピュータが活用されていることや、問題の解決に
|   は必要な手順があることに気付くこと。
| (中)社会におけるコンピュータの役割や影響を理解するとともに、簡単
|   なプログラムを作成できるようにすること。
| (高)コンピュータの働きを科学的に理解するとともに、実際の問題解決
|    にコンピュータを活用できるようにすること。
|
| 【思考力・判断力・表現力等】
| ・ 発達の段階に即して、「プログラミング的思考」(自分が意図する一
|  連の活動を実現するために、どのような動きの組合せが必要であり、一
|  つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、
|  記号の組合せをどのように改善していけば、より意図した活動に近づく
|  のか、といったことを論理的に考えていく力) [5]を育成すること。
|
| 【学びに向かう力・人間性等】
| ・ 発達の段階に即して、コンピュータの働きを、よりよい人生や社会づ
|  くりに生かそうとする態度を涵養すること。
|
| [5] いわゆる「コンピュテーショナル・シンキング」の考え方を踏まえつ
|   つ、プログラミングと論理的思考との関係を整理しながら提言された
|   定義である。

ついでに、同文書から、これも追加しておこう:

| [13]反復記号なども含めた音楽に関わる用語には、順次分岐
|  反復といったプログラムの構造を支える要素と共通する性質
|  があるものと考えられる。

ここで問題になるのは、「一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、」である。

Logic + Control + Data Structure = Program」においては、多くのプログラミング言語における “statement” は現われていない。ここでの「一つ一つの動きに対応した記号」が、 “statement” であるなら、「どのように組み合わせたらいいのか」は “Logic” に対応するかもしれない。

では、この場合、 “Control” に対応するものはなんなのか? “[13]” にあるように、「順次」、「分岐」、「反復」ではあるだろう。だが、それは “Control” の一面にすぎない。たとえば、「再帰」もあれば、「カット」などもある。「カット」について言えば、Prologの「ホーン節」はそのまま “Logic” でもあり、 “Control” でもあるのかもしれない。

このように、ほんの一面とはいえ、 “Control” は含まれているとしよう。では、 “Data Structure” に相当するものはなんなのか? “[13]” には「プログラムの構造」とあるが、こがデータ構造を意味していないことは明らかだ。文書を読む限り、見落しでなければデータ構造に関する言及はない。言及がないということは、そもそも想定の範囲に入っていないか、不要と判断したかとういことだろう。

ここに違和感を感じる。というのも、情報工学の専門家が、はたして議論に加わっていたのかという疑問だ。情報工学の専門家が議論に加わっていたとして、かつデータ構造の話をしたものの、他の有識者からは無視されたという可能性もある。この場合であれば、他の有識者にはデータ構造の重要さが理解できなかったということだろう。そうであれ、そうでないであれ、データ構造を無視している議論に意味はない。なぜなら、「Logic + Control + Data Structure = Program」であるからだ。

そして、私のプロジェクトではないが、「CSの定番教科書「Open Data Structures」を日本にも届けたい!」のような書籍がなぜ存在し、またこのようなプロジェクトがあるのか。それ自体がデータ構造の重要さを示しているとも言えるだろう。

このような有識者会議が出した意見には、参考にすべき箇所は存在しない。言うなら、「この方針だけは−−全部ではないとしても−−、避けるほうがいい」という参考にはなるかもしれない。

保護者や教諭の方々は、面倒と思わずにコンピュータ・サイエンスを勉強して欲しいと思う。kuzu/NULLでは、本企画のリターンとは別に、その要望に応える準備がある。