わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

日本語・空間・数式・コード

ここで,4つの質問をしたいと思います.挙手してもらうにも難しい質問なので,まあ,心の中で,YesだなNoだなと思ってください.4つの質問は互いに連関*1していますので,順に2回,言いますね.
一つめの質問は…「日本語の読み書きは好きですか?
まあこれだけでは比較しにくいので,二つめにいきましょう…「図や,平面・空間の上で,物事を考えるのは好きですか?
三つめはですね…「数式は好きですか?
そして最後は,プログラミングの授業ですので…「プログラムコードは好きですか?
ではもう一度,順番に,4つの質問を言いますね…
「日本語の読み書きは好きですか?」
「図や,平面・空間の上で,物事を考えるのは好きですか?」
「数式は好きですか?」
「プログラムコードは好きですか?」
ここでアドバイスです.もしすべてにNoという人は,まずはどれか一つを好きになってください.そして,授業でも日常生活でも,あらゆることを,それを使って考えること,表現することを試みてください.
もしすべてにYesという人は,それは虚飾というものですので,すべてにNoという場合と同じように,一つに集中してみてください.
いくつかYes,いくつかNoという人はですね…好きな一つを軸として,他のものに変換できるようになってください.
たとえば,僕のプログラミングの授業では,PowerPointのスライドに,コードの断片と,箱や矢印を使った図が同時に載っていたりしますが,これを,空間からコード,またコードから空間への変換とみてほしいのです.
コード断片で登場する,あるいは暗黙のうちに存在する要素を,箱で表すとこうなって,それぞれにはこんな包含関係や,矢印による参照関係がある,と.とはいえ関数の枠の中に変数の箱があるというのは,便宜上のもので,メモリの使われ方に着目すると,この図は不適切だったりします*2が,それでも,ローカル変数*3の生成と破棄というのを端的に表現するとき,この包含関係が分かりやすいでしょう.
逆に考えます.この図だけを見て,そこからプログラムコードを書くことができるかです.これは,空間からコードへの変換ですね.
他の変換も,同じように考えてください.試験ではもちろん,プログラムファイルの全体あるいは一部が,何をするものなのかを答えてもらいます.これは,コードから日本語への変換ですね.
それと,これまでのレポート課題や試験で,特定の行を指定して,同じ処理をする別の記述に書き換えてください,といった問題を出していました.たとえば,ハテナとコロンを使った三項演算子を使った式を,if文に置き換えなさい,といったものです.これは,コードからコードへの変換です.
日本語から日本語への変換,空間から空間への変換,数式から数式への変換だって,日常よく行われます.
そうしていって,対象をさまざまな角度から見ることができ…あっと,「角度」は空間の用語だなあ,「解きほぐす」と言えばいいのかな,それはさておき…,そんないろいろなし得る等価変換の中で,試験の採点者に,あるいは口頭のコミュニケーションであれば相手に,どういう形で何を提示すれば一番よく伝わるかをよく考え,実際に一つを提示すればいいのです.

*1:同音異義語に「連環」があります.ふと,グラフが木であることの必要十分条件が4つあり,木の定義も一つの命題としたとき,5つの命題が同値であることを,AならばB,BならばC,…,EならばAという形で「連環」として証明されていたことが,学生のときに読んだ本にあったのを,思い出しました.

*2:関数ごとに変数が確保されているという考え方では,再帰呼び出しをするときに,ローカル変数(Cでは,自動変数)が上書きされることになり,望ましくありませんし,それはCの規格に反しています.

*3:私のプログラミング授業を受講している読者へ:授業では,「ローカル変数」と「自動変数」を区別しています.試験で,その使い分けを間違えていると,バツまたは減点です.