VISCUITは除きますが、既存のプログラミングの学習の根本的な問題は、「手順を並べる、手順を組み合わせる」という考え方を基本にしていることです。このような理解は、中途半端な理解に基づく誤解であるに過ぎません。たとえ、それが大学の教員の言葉だとしても、やはり誤解であり、そのような説明をする大学教員がいるとしたら、その資質を疑うべき言葉、ないしは説明です。
たとえば、足し算を考えてみます。ここで次のような右にも下にもずっと続く表を考えてみます。
ここで、 ❝2 + 3❞ という計算をしたとしましょう。
すると、❝2 + 3❞ という計算は、表の中から該当する値を取ってくることだと言えます。
また、❝2 + 3❞ に、さらに ❝2❞ を足すとしましょう。❝2 + 3❞ の結果は上の表から ❝5❞ ですから、今度は ❝5❞ と ❝2❞ から ❝7❞ を取ってくることになります。
このような場合、いわゆる手順を書くというプログラミングはしていません。あえて言うなら、❝pick(2, 3)❞ と ❝pick(pick(2, 3), 2)❞ という手順をプログラムとして書いているとは言えるかもしれません。 (これは、正確には、宣言、あるいは定義と呼べます。)
より正確には、プログラムとは、入力と出力を結びつけるものです。そのやり方は、手順を並べるという方法に限りません。
11月 12日の「コンピュータを使わない、コンピュータとプロラミング入門」では、この話題に入るつもりはありませんが、「プログラミングとは手順を書くこと」という誤った考え方は、捨てていただきたいと思います。
そのような誤解に陥らないためにも、「コンピュータを使わない、コンピュータとプログラミング入門」では、データ構造 (これもまた、言葉として出すつもりはありませんが) に重点を置いた講習にしていきたいと考えています。
また、「児童・生徒の試行錯誤」と言われたりもしています。試行錯誤にも、必要な試行錯誤と不要な試行錯誤があります。現状、資料を見る限りにおいて、想定されている試行錯誤とは主にデバグの範疇であり、教育として必要な試行錯誤とは程遠いものが想定されているようです。この点も、明らかな問題と言えるかと思います。
これは、「プログラムが動けばいい」という考え方であり、「プログラムがきちんと動くことを論理的に検証する」という態度からは大きく外れたものです。
このような方針で設計される、あるいは行なわれるプログラミング教育には、危うさのみを感じます。
「コンピュータを使わない、コンピュータとプログラミング入門」へのお申込みは、こちらのページからお願いします。
(written: Aug 30, 2017)
(Last modified: Jul 17, 2018)