at posts/single.html

プログラミングと初心者

神様なんて信じない僕らのために - Cの老害?を読んだ。

まず配列がわからない子はプログラマにならなくて良い。 アルゴリズムとかデータ構造が理解できない子もプログラマにならなくて良い。 どうして配列がわからない子をプログラマにしないといけないの? 運転技術がなく理解もできてない人をタクシーのドライバや旅客機のパイロットにしたい?

「興味ない」と思っている人はWebとか上層レイヤを選ぶ。 「興味ある」と思っている人は組み込みとか下層レイヤを選ぶ。 どうせ、そのレイヤ層の中にも上澄みと沈殿物があるんだから。

後半は賛成だけど、前半は見方次第かなって思う。 しばたさんが「まともなプログラム」かそうでないかなんて国際基準があるわけでもないと言っている通りかなぁ。

例えばRailsを使ったWebアプリの場合…

Webアプリケーション
ActiveRecord, ActionPack
ActiveSupport
Rubyライブラリ
Rubyコア
C言語
アセンブラ
機械語
---
CPU, メモリ
半導体
シリコン
…

と、いろんな層が重なり合って出来ている訳で、全てを知ることは無理だし。 これだけ複雑なものがこれだけたくさん使われるようになったんだから、それぞれの層で分業するしかなくて、アルゴリズムやデータ構造が分からなくても活躍できる分野はあるんじゃないかなぁ。

もちろん、「プログラマ」として比較した場合に、低レイヤを知っていることは強みになる。 でも、低レイヤのことを勉強する時間を、プログラミング以外の他のことを学ぶために費やす選択肢もあってもいいんじゃないかな。

以下、カレーなる辛口Javaな転職日記 - 初心者向けの言語より引用。

LISPのような関数型言語やRubyのようなスクリプト言語は,初心者には良くないと思う.すべからく抽象度が高すぎて,初心者だと「(ノイマン型)コンピューターの内部では,あんな風に動作してるんだ」と誤解する危険もある

これも一理あるけど、プログラムが期待通りに動けばよくて、コンピュータの内部でどう動いているかなんて興味が無い人もいる気がする。 高度なデータ操作や動作速度を追求するのでなければ、抽象度が高い状態でプログラミングできるというのもアリなんじゃないかなぁ。 配列やポインタが理解できない素質が無い人でもプログラムが書けるようになれば*1、それも一つの利点になる。 Windowsが良くも悪くもパソコンを誰でも簡単に使えるようにしたようにね。 (繰り返しになるけど、低レイヤの知識が不要って訳じゃなくて、あくまで分業の話)

関連する日記