2021年11月19日金曜日

プログラミングを初学者に教える際の留意点(1)

プログラミングを初学者に教えるときに注意すべき点を,思いついたときにメモしていこうと思う.

プログラミングとタイポ問題

プログラムは書いた通りに動く.書いた通りに間違え,エラーを引き起こす.したがって,次のようなエラーがあると,たいがい,うまく動作しない.

「こんなの間違えないよ」と,プロな皆さんは思うことだろう.しかし,初学者は平気でこのようなミスをする.それは,意味を十分に理解していないから,かもしれない.しかし,意味は一つ一つ学びながら手探りで学習を進めているのだ.初学者を責めてはいけない.

getElementById

まず,最初の例.これは,JavaScriptでエレメント(DOM要素)を取得するための関数である.エレメントに付けられたIDを引数にとり,その情報をキーとして取得するというものだ.

IDによって(by)エレメント(element)を取得(get)するものなので,getElementById という名前のメソッドとなる.そのとおりではないか.どうして間違える?

多くの学生が間違えるのが,Id(大文字のアイ・ディー)ではなく ld(小文字のエル・ディー)としてしまうミス.Byld(バイルド?)って何だよ?というところだが,そもそも初学者はIDで要素を取得するという方法そのものに馴染みがないので,発想が至らないのは致し方ない.

私個人の意見としては,getElementByIDと,最後のDも大文字にすべきであったのではと,そもそものメソッド名のデザインを疑っている.そもそもIDはidentificationの省略形なんだから.まあ,遡ると大文字のI(アイ)と小文字のl(エル)の区別がつかないフォントも悪い(図では,きちんと判別できるCourierで表記した).キャメルケースで大文字略称をどう扱うべきかは課題が残るところであろう.

formとfrom

次の例は,HTMLのフォームである.<form>〜</form> というやつ.当然,formと打たないとフォームにはなってくれない.しかし,学生が慣れている単語はformではなくfromなのだ.資料にはきちんとformと書いてあるのに,脳内で変換されてfromと書いてしまう.

当然ながらfromではフォームはレンダリングされない.「はて?どうして?ちゃんと書いてるのになんで出てこないの?」となる.「よく見て!君の書いているタグはfromタグだよ!(fromタグってなんだよ……)」

ちなみにGoogleで「fromタグ」でググるとformの情報が山のように出てくるので,手に負えない.学生が「自分が間違っている」ということに気付かないじゃないか!

datebase:

ActiveRecordでデータベースファイルを指定するときの書き方である.正しくは database: と書かなくてはいけない.しかし,それを datebase: と書いてしまう学生が数名いた(これが驚くべきことに一人じゃないのだ).当然ながら,後者の書き方では,適切に動かない.エラーメッセージは出たっけかな.たしか無視されるだけで,データベースを指定できず動かない,という状況ではなかったか?

そしてこれもやっかいなミスである.なぜなら,教えるほうは「こんな誤りしない」と思い込んでしまっているし,学生は学生で「これで正しい」と思い込んでしまっているから,いくら眺めても見つからない.

初めてこのエラーに出くわしたときは,周囲の学生も巻き込んで数人でコードを眺め回したが,見つけるのに30分くらいかかってしまった.そんな長いコードでもなかったのに.サイゼリヤの間違い探しくらい難しかったぞ.

0 件のコメント:

コメントを投稿