現場のプログラマの基礎知識
http://d.hatena.ne.jp/sumii/20060415/1145065834より。
sumiiさんの「現場の普通のプログラマはコンピュータサイエンスの基礎をどの程度知っているのか?」という問い。
- 「CPU」が何かわかる。たとえばRISCとCISCの違いや例をいえる。(細かい話は抜きにして大まかに。以下同様。)
- 「オペレーティングシステム」が何かわかる。
- UNIXのシステムコールの名前と(大体の)機能を何個かいえる。
- 「TCP/IP」が何かわかる。TCPとUDPの大まかな違いをいえる。
- 「命令型言語」が何かわかる。Cだけでなく、FORTRANとかPascalとかの存在を知っている。
- 「関数型言語」が何かわかる。Lisp(は微妙ですが)とかSchemeとかHaskellとかの存在を知っている。
- 「論理型言語」が何かわかる。Prologとかの存在を知っている。
- 「オブジェクト指向言語」が何かわかる。C++やJavaだけでなく、Smalltalkとかの存在を知っている。
- 「オートマトン」が何かわかる
- 「文脈自由文法」が何かわかる
- 「チューリングマシン」が何かわかる
- 「決定不能問題」が何かわかる
これどうなんだろうなあ。情報系卒プログラマであったなら全てを知ってても「おかしくない」とは思うけど、必ずしも全部は知らない気がする。興味の方向によって抜けが一個や二個くらいありそうだ。強いていえば僕はUNIXのシステムコールあたりに自信がない。
さらに「現場」のイメージだと、OSと命令型言語、オブジェクト指向言語あたりは基礎知識としてあって、あとは分野によって、ネットワークに近い人ならTCP、組み込みな人ならCPUくらいを知ってれば支障ないような気がする。日常の開発だと、日々新しく降ってくる「技術」*1を習得することのほうが重要視されるだろうし。
まったくもって勝手な想像なんだけど、怖い噂はいろいろい聞くしなあ。実態はどんなもんなんでしょうね?はてなの人力検索でアンケートとってみたらどうなるのかな。