わさっきhb

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

プログラミング初回授業の準備〜創造性と再現性,英語とは別の言語

後期授業は10月1日より始まります.木曜です.これまで,木曜3・4限だった,3年生向けの演習科目が,1・2限に移動し*1,木曜3・4限には,前期と同じ情報処理科目を行います.
シラバスでは,初回は前期の復習と書いていまして,その準備も進めています.ですが,復習問題を解かせ,後半に解説して,トータル90分というのは,面白みに欠けます.
そこでプログラミングの入門として,「なぜプログラミング?」「プログラムを書いたり読んだりするときに,何を知っておくといいか?」を伝えたり,ちょっとした問題を解いてもらったりしようと考え,いろいろ調べています.
「なぜプログラミング?」については,まずはGoogle頼みです.興味深いのが見つかりました.

読んでいくと,複数の記事で「創造性」という言葉を目にしました.「誰もしなかったことをする」と言い換えられますし,そこまでいかなくても(とくに教育目的としては)「自分が作ったプログラムで,動くのを楽しむ」というのも,プログラミング教育を通じて培うことのできる,創造性なのかもしれません.
その一方で,検索するより前に思い描いていた「再現性」が出てこなかったのが,少し気になります.「誰が実行しても同じ結果になる」と言い換えられます.再現性は学術研究に限った話ではなく,もし,再現性が担保されていないなら,例えばコンピュータ制御の家電製品や自動車などで,抽出検査ではなく出荷する全てに対して細かなテストをしないといけなくなり,高コストとなってしまいます.
「誰もしないことをする」と「誰がやっても同じ」という,両極端に見える観点に折り合いをつけて,限られた期間にプログラミングの楽しみを伝えるのが,情報処理教育の中のプログラミング指導なのかなと考えながら,「なぜ」の準備を進めていきます.
もう一つの,プログラミング入門にあたり「何を知っておくといいか?」というと,思い浮かぶのは,プログラミングは一つの言語だということです.以下,文法ではなく語彙に焦点を当てます.小さなプログラムコードを見直してみると,英単語もよく使われますが,Cならprintf,RubyならRegexpのような,英語辞書におそらく載っていない語*2も,決して少なくはありません.
注意したいのは,カッコ類です.1つの式に複数のカッコが必要なときに*3,小カッコ( )・中カッコ{ }・大カッコ[ ]を使ったり,カッコの大きさを変えて対応を表現したりすることが,プログラミングではできません.そもそも( )と{ }と[ ]はそれぞれ異なる用途となり,他のカッコを使うと構文エラーになってしまいます.
むかし,プログラミング授業(自主演習だったか)の中で,カッコの対応が正しいか判定するプログラムを扱ったことがあります.「(((())))」や「(()()())」は正しく,「(((()))」や「(()))(()」は正しくありません.1種類のカッコであれば,その判定方法はそこそこ簡潔に書けるので,さてこれを,今年度の1年生に尋ねることにするかどうか…
ちなみに,Cプログラミングを学びながら自習するのに適した本として,『Cプログラミング入門以前』があり,当ブログでもときどき取り上げています.はてなブログで今年,読んだという記事があるほか,Kindleや,Googleブックスでも読むことができることを知りましたので,リンクしておきます.

Cプログラミング入門以前

Cプログラミング入門以前

*1:シラバスや時間割表では,実施教室は別棟となっています.この件,いろいろあって,例年どおりの演習室を使用できるようになりました.教室変更は掲示済,2人の授業Webページでも赤字で書いていますが,学生がそれらを読んでくれる保証はありませんので,別棟にも当日,変更の掲示をお願いする予定です.

*2:printfの語源はprint formatで,かつてのC処理系では外部識別子は6文字までだったという事情もあります.「かつて」について,ANSIによると書かれたものがhttps://msdn.microsoft.com/ja-jp/library/e7f8y25b.aspxにて確認できます.Regexpはregular expression(正規表現)ですね.学生時代は(そしてRubyから離れますが)regexのほうがなじみでした.

*3:前期の情報処理授業,それもExcelで,他のセルの値を使ってBMIを計算する式を書く際に,カッコの入れ子を用いていました.

*4:「書籍のプレビュー」をクリックして,飛ばし読みしたところ,ときどき「このプレビューに表示されません」と出ますが,かなり読むことができます.「Cは英語とは違う」と題する文章も,https://books.google.co.jp/books?id=BOVSAgAAQBAJ&lpg=PP1&hl=ja&pg=PA67#v=onepage&q&f=falseに載っていました.