サーベイ、あるいは「普通の現場のプログラマ」とコンピュータサイエンスの基礎知識について
ところで、こういう↑解説記事(?)を書いていて気になったのですが、現在の日本で、「現場の普通のプログラマ」のコンピュータサイエンスの基礎知識ってどれぐらいあるのでしょうか。
- 「CPU」が何かわかる。たとえばRISCとCISCの違いや例をいえる。(細かい話は抜きにして大まかに。以下同様。)
- 「オペレーティングシステム」が何かわかる。UNIXのシステムコールの名前と(大体の)機能を何個かいえる。
- 「TCP/IP」が何かわかる。TCPとUDPの大まかな違いをいえる。
- 「命令型言語」が何かわかる。Cだけでなく、FORTRANとかPascalとかの存在を知っている。
- 「関数型言語」が何かわかる。Lisp(は微妙ですが)とかSchemeとかHaskellとかの存在を知っている。
- 「論理型言語」が何かわかる。Prologとかの存在を知っている。
- 「オブジェクト指向言語」が何かわかる。C++やJavaだけでなく、Smalltalkとかの存在を知っている。
すべて「No」だと思って良いでしょうか。いや、ここを読んでいるような方はともかく。
これらは学部レベル(できれば教養課程や高校でやってほしいぐらい)なので、文系システムエンジニアはさておき、情報系卒プログラマの多くが知らないようだと、日本の情報教育はほとんど成立していない、ということになります。きっとそうなんですが…
追記:そういう状況を改善する一つの策として、教養課程や高校の「情報」や、センター試験や二次試験の「情報」をもっと頑張ろう、という話は全国の情報系研究者が努力しています。様々な抵抗が強くてさっぱり進みませんが…
追記2:上のリストはあくまで例です。アルゴリズム関係とか、まったく網羅してません。上のほうは単なる「知識」ですが、もっと突っ込めばちゃんと「学問」になります。λ計算とか(と我田引水)。