これがベトナム大学院の実態だ!

Trường Đại Học Bách Khoa Thành Phố Hồ Chí Minhの大学院修士課程に社会人入学

Nguyên lý ngôn ngữ lập trìnhの進め方に思う

何かと物議をかもす悪名高い必修科目のNguyên lý ngôn ngữ lập trìnhであるが、そもそもの問題がどこにあるのか。
まず、教え方、教える人にはこの3パターンがあるように思う。
1. 難しいことを簡単に教える=人財=プラスになる、いい授業
2. 難しいことを難しく教える=人存=プラマイゼロ、受けても受けなくても同じ
3. 簡単なことを難しく教える=人罪=マイナス、むしろ授業を受けないほうが理解できる
できれば教える人間には1であってほしいが、どう贔屓目に見ても2ではなく、3のように思える。
また、本来プログラミング言語とは楽しいものだ。
自分の作ったものが思い通りに動く楽しさ。
が、同科目にはそのような楽しさが微塵も感じられず、ただひたすら苦行の時間を過ごすだけ。
先日からドワンゴscala攻略サイトに載っている通りのソースコードを張り付け、一部変数の値を変えたりして実行してみたのだが、やってみるとscalaは面白いものだなと分かる。
また、記述とか妙な書き方をするなと思っていたら、いわゆる{}(中かっこ)が省略できるということに気付く。
さらに、return文を書かなくても戻り値を渡せるというのもわかる。
途中、Listなる概念も出てきたが、その辺は適宜ぐぐれば進められる。
で、それでいて課題が分からない要因としては単なるscalaのコーディングではなく、ANTLRなる分野の知識が要求されるということも分かった。ANTLRとはプログラミング言語でもデータベースでもWebサーバでもなく、なんだかよく分からない概念のようだというところまでは分かった。
参考サイトとしてはこのようなものが見つかった。
ANTLRのお勉強 | threecourse's memo
ANTLRは独自のプログラミング言語の分析をする仕組みということのようだ。
確かに同科目ではMC(Micro CあるいはMini C)なる独自のプログラミング言語の仕様書が与えられていた。

結局、ANTLRなるものを実現するにはjavaを使うことが多いが、同科目においてはscalaというプログラミング言語を利用しているということなのだろう。
つまり、MC(Micro CあるいはMini C)なる独自のプログラミング言語を分析するためにANTLRという技術が必要、その実装がscalaということなのだろう。
これを初回授業において明記しておけば混乱がないように思えるが、授業開始から2か月近く経ってからぼんやりと気付き始めたということである。
もし自分が同じ授業を展開するとしたらどうするか?
1. 本科目はANTLRというものを扱う。ANTLRの何たるかを説明する。
2. ANTLRを実現するには一般的にはJavaを使うが、本科目ではscalaを使う。つまり、scalaの習得も本科目の目的となる。scala習得のサイトを紹介する。
3. ANTLRで分析するためにMC(Micro CあるいはMini C)なる独自のプログラミング言語を準備する。
これを初回において重点的に説明することだ。
この説明が何もなく、ただ「sbtをダウンロードしろ」だけ。
そもそもsbtって何だ?何の説明もなくよく分からないままに1か月が過ぎ、この授業ではscalaというプログラミング言語を使っているということに気付く。
何のことはない、scalaというプログラミング言語を便利に使うためのソフトがsbtということになる。
箇条書きにしてみれば決して難しいわけではなく、むしろやることは明確(技術的にはともかく)と思えるのだが、分かりやすく説明するというのは本当に大事だなと改めて思った。
やっていることとしてはこのサイトが参考になる。拡張子g4だし。
iwsttty.hatenablog.com

が、あいにくともう中間試験も課題2個の提出期限も過ぎてしまった。
時間を巻き戻すことができない以上、次善の策は半年後あるいは1年後の再履修で初回からPC操作一つ一つに至るまで完璧にトレースするぐらいであるが、それでもこの予備知識の有無で授業の理解度が全く違ってくると思う。
幸いこの授業は数年前から同じことばかり繰り返しやっているので、再履修になっても内容が変わらないのが救いだ。

実は後日談があり、ドワンゴ公式サイトにあるコンソール命令を使っていたら、周囲の席の学生から、どうやったのか教えてほしいと言われた。
つまり、授業ではsbt→runしか教えていないということになる。
数回あった小テストではコンソールを知らないといちいちmain関数を作ってそこに命令を書かないといけないのだが、彼らの小テストの結果はどのようなものであったろうか。

補足だが、今の授業がまさにこれ。
学校は簡単なことを難しく教えてくれるところである – アゴラ
>なんにも知らないで授業を受ける子どもには、いったい何を話しているのかすらもわからない。逆に「すでに知っている子ども」には「なにをあたりまえのことを」となる。

初見学生にはいったい何を話しているのかすらもわからない。
逆に再履修社には「なにをあたりまえのことを」となる。