memorandums

日々のメモです。

初心者に適したプログラミング言語

表記の話題がネット上で盛り上がっています。良く聴いているあるPodcastでは大学でPHPSQLを教えるのはレベルが低いなど。私としては残念ですが、まぁ、一つの意見として聞きたいと思います。一応、それを見聞きした学生のために本学科で3年生の主要科目にPHPを選択した理由を書いておきたいと思います。結論を先に書きますが、PHPプログラミング言語として問題があるにせよ、Webサービスを産み出す道具の一つとして立派に機能しているということです。かつ、フレームワークやパッケージ構造を意識しなくても、豊富なライブラリのお陰でそれらしいサービスが手軽に開発できます。Webの仕組みとプログラムの関わりとそれらによって提供できるサービスの関わりを少ない時間(15回×90分)で体得するには最も適した言語(環境)の一つだと私は考えています。


PHPを3年次のソフトウェア開発演習の主要言語に採用を決めたときに考えたこと。

  • ソフトウェア開発を体験するには、単一モジュールの開発ではなく、画面を含めた複数のモジュールによる開発を体験させたい。複数のモジュールを組み合わせると言えばC/S。今時のC/Sの定番と言えば特殊なミドルウェアではなくWebアプリケーション。
  • 今年度の3年生までは1年時にC言語を演習している。C言語でWebアプリ開発するのはスタンダードではない上やさしくない。PHPは文法的にC言語に近しい言語。PHPであれば1年時の知識を生かしてC/S開発ができそう。
  • XAMPPという開発環境を一発でセットアップできるツールがある。それを利用すれば演習室の環境構築も容易。かつ、自宅での自習用の環境構築も容易。
  • 高学年におけるソフトウェア開発演習では、設計→プログラムにスムーズに反映できることが望ましい。しかし、大学ではじめてプログラムを組んだ学生は絶対的にプログラミング経験が欠如している。プログラミング自体が難しい言語・環境では要求→設計→製作のサイクルを行き来することが難しい。

といったことを考えてPHPにしました。来年度からC言語ではなくJavaを学んだ学生になるため、必然的に3年生の主要言語もJavaになります。実のところ、「やりたいこと」に対して「やらなければならないことの多さ」が気になり、PHPを捨てていいのか疑問が残るところですが、Javaをやっていないことで学生が企業に入ったときに引け目を感じるくらいなら、同程度のことをJavaで演習しておけば学生のためにもなるのかと思うわけです。


そもそも大学でJavaを教えるのはどうしたものか?というごもっともな意見もありますし、大学のときにはschemeなどを学ぶのが当たり前という意見も良くわかります。ただ、本職を4年間やってきて思うことは、(学生の)成長には段階があるということです。赴任1年目には、開発現場で困るであろうこと(コードリーディングやデバッグ)に着目して演習させました。しかし、学生はそのレベルには達していないのです。ソフトウェア開発者の多くは、サンプルコードを利用して動かし、色々と痛い思いをしながら工夫すべきことを考えてきたと思います。そうした工夫の中で自動生成や関数プログラミングなどの必要性を自覚する時期がくると思います。私自身そうでした。今は、そうした情報を知り得るチャネルがたくさんあります。大学で学習しているから一生学ぶ機会がなくなるということはないはずです。学校で習っていないからわかりませーんというのは小学生の論理ですからね。ただ、確かに技術者育成を意識するあまりComputer Scienceらしくない科目が多くなってはいます。それは時代の要請*1の結果だと言えます。何が正しいのかわかりませんが、確かに、新しい原理を開拓する人間を創出する大学にとっては様々な本質・原理を教育の軸とすべきでしょうし、逆に社会の基盤として働くワーカーを育成する機関としては、自ら新しいものを産み出さなくても実務で役に立つ人材を輩出できるようなカリキュラムが求められるように思います。いずれにせよ、今、ソフトウェア業界で活躍されている方は大学の教育の成果によるというよりは、優れたスポーツ選手と同じように、小さい頃から色々な技術を吸収し、自らが進んで行動した結果によるものと思います。そうした成果を望む人は大学の授業を待つまでもなく自ら進んで必要なことを学んでいくべきでしょう。何を学ぶべきか迷ったときには気に入った先生に声をかけるといいと思いますよ。

*1:大学も社会に研究成果を還元せよ!→企業経験者の雇用(私もその一人)→実務重視になる