教育用のRuby
基調講演とM17Nについてのセッションの後は、立て続けに教育に関するセッションが並んだ。
これらはいずれも実体験に基づく興味深い内容であったが、ここでは、特に増原英彦氏の『Ruby《を》教えてるんじゃない、Ruby《で》教えてるんだってば』を取り上げる。
なぜならば、増原氏のセッションでは、Rubyについてこれまでほとんど語られることがない側面が取り上げられていたからだ。
非OOPLとしてのRubyの利用
最初に増原氏は、コンピュータサイエンスの授業でRubyを利用していることを説明した。つまり、Rubyはコンピュータサイエンスにおける諸概念をプログラミングを通して教えるためのツールとして利用しているのであり、Rubyプログラミングを教えているのではない、ということだ。
この観点から、次のようにRubyを利用している。
少ない制御構造
制御構造としては、if then elseとwhile、そしてfor i in min..(max - 1)の3種類の利用に留め、Rubyの特徴であるイテレータは教えない。
オブジェクトをオブジェクトとして意識させない
講義がオブジェクト指向パラダイムに到達するまでは、メソッド呼び出しに「.」を利用した書き方は教えず、関数的な記述か、演算子としての記述のみに限定する。
例えば、絶対値を取るために、Numeric#abs
メソッドを呼ばせたりはしない。
これらは、講義で教えたい内容以外の要素が入り込むことを避けるための方策だ。
なぜRubyを選択したか
では、なぜRubyなのか? という疑問は当然あるだろう。最初から非OOなプログラミング言語という選択肢があるからだ。これには、次のような複数の理由がある(注1)。
Macに既定でインストール済みの処理系
学生の教育用のコンピュータとしてMacが導入されているのでMacで動作することが大前提である。
自宅で自習したい学生のために、WindowsやLinuxでも簡単にインストールできる処理系
ほとんどの学生はWindowsコンピュータを所持していると考えられるため、簡単にインストールできるWindows版の存在が望ましい。ちなみにWindows版としてはActiveScriptRubyを示されているそうだ。
フリーな処理系
同様に、自習用にインストールする学生のことを考えると、フリーな処理系が望ましい。
配列が利用できること
講義で使うため、組み込みの配列が必要。最初はDrSchemeを考えていたそうだが、この点で脱落したそうだ。
対話型環境
これまでの感触から、ソースファイルをエディット、保存した後に、コンパイルするというのはバリアーになるので、対話型環境が良い。Rubyには、irbという対話型環境があるため、この点を満たしている。
標準ライブラリの充実
Benchmarkライブラリが用意されているため、アルゴリズムと計算量の関係を示すのが簡単。