プログラミングの母国語

母国語と言っても日本語とか英語とかの話ではなく、初めにどの言語でプログラミングを学ぶかということである。上司の響教授曰く、「初めに学んだプログラミング言語がマザーランゲージとなる。プログラミングの発想を決めるマザーランゲージは変えることはできない。だから教育上重要だ。ちなみに俺のマザーランゲージはアセンブリだ。」響教授の意見には同意しかねる。私は初期は主にC言語でITを学び、研究開発も行ってきた。後に教育上の知識を広げるためにC++を勉強し、研究用プログラムにも適用するようにした。プログラムの構造は大きく変わった。C++による設計方針は何ら問題なく受け入れることが出来た。PrologやLispで開発している研究者もプログラミングは他の言語で学んだだろう。マザーランゲージというほど大げさな問題があるとはとても思えない。1990年代は教育用言語はPascalという偏見(?)が強かったように思う。現在のPascalが教育用言語としての地位を失冠している事実からもそう思う。

当時のプログラミング教育は初めの2年間Pascalの後でC言語に移行。無駄なオーバーヘッドがかかるだけだから、C言語から始めたらどうかという意見を出したこともあるが、Pascal信奉者からの反対は根強かった。響教授もその一人であるが、「論文ではアルゴリズムをPascalで書くからだ」という主張だった。確かに論文でPascalっぽい記述は見たことがあるが、Pascalとも違うようだ。同僚に聞いたところ、「ALGOLじゃねえの。だったらALGOLで教育せな。」と返ってきた。

Pascal信奉者は「Cだと汚いコーディングが出来てしまう。Pascalできっちりしたプログラミングを教えたい。」と全面的に反対だ。汚いコーディングが何を指すのかは明かされなかったが、彼は大域変数を嫌っていたのは間違いない。学生が安易に大域変数を使うのは予想できるが、Pascalだから避けられるということもないだろう。わざわざ大域変数を使えない教育用言語を開発した大学もあったらしい。C言語に賛成する教員からのPascalライクに教えれば良いという意見も納得してもらえなかった。

時は流れ、C++やJavaなどのオブジェクト指向言語も普及し、2000年頃にある教員からオブジェクト指向教育をするために初めからC++を採用したいという意見が出された。プログラミングの初歩を手続き型からオブジェクト指向に移行するという訳だ。今回はPascal信奉者の反対はなかった。あれだけPascalを主張し続けてきたのだから、Delphiを提案してくるかと思ったがそれもなかった。もっともこの時期にはPascalで書かれたテキストも激減して教科書を指定するのも難しい。ここまでPascalを引き延ばす意味があったのかは全く疑問である。