October 24, 2003

全ての応用は基本の延長線上にある

[ コンピュータ ]
歳を重ねるごとに痛感することがある。それは「全ての応用は基本の延長線上にある」ということ。基本の体得なくして、応用はあり得ない。 実例を挙げてみよう。オブジェクトや変数は、しばしば「箱」に例えられる。機械語の知識のない読者に対して、古来この「箱」は極めて有効な解説手段として使われてきた。しかし、多くの著者達が行ってきた、この安易な「逃げ」こそが、数多くのプログラマーの卵達を挫折に追いやったのではないだろうか?

以前に '富豪でいることしか知らないプログラマ' というエントリで、自分自身のことを考えたときに

「僕らは富豪でいたくて富豪的プログラミングをしているわけではなく、富豪でいることしか知らない」という話でした。敢えてリソースを贅沢に使って実現したいことを手軽に実現しているというよりは、リソースを抑える技術やプログラムをコンパクトにまとめる技術を知らないという。

というような事を書いたのですが、そんな僕にとって非常に耳の痛い話です。大学生のときに独学でプログラミングを始めて以来、僕にとっての主な教材は書籍でした。書籍を手に取るにあたって、自分が興味の沸いたこと、頭で思い描いているものを短時間で実現できることに対してのモチベーションばかりを優先して来た結果が今のような状況です。

昨今は、オブジェクトやデザインパターンといった抽象的概念が大流行しているようである。若い人が「先輩、ぼくアセンブラーというものを勉強してみたいんですけど、何から読めばいいですか?」と聞こうものなら、「そんなもので飯が食えるか!つべこべ言わずに、Java や Ruby でコードを書けるようになれ」、こんな返事が聞かれることだろう。

飯の種という意味でもそうですし、もう一つは時間の問題もあります。様々なものが抽象化され、コンポーネント技術によって再利用され、いかに効率的に開発を進めるかが重要視される昨今では、そういった抽象化にまつわるテクノロジの進歩の加速度がどんどん大きくなってきているように感じます。例えば、毎月出版されるテクノロジ関連雑誌を手にとってぱらぱらとめくる度に、あれも知らない、これも知らないと言った具合で、雑誌の中に占める自分の知らない話題の割合が日に日に大きくなってきているように思ったり。焦りを覚えます。焦りと同時に、エンジニアとしてのプライドとして、そういった技術についていかなければという思いもあります。

そんな中で、どっしり腰を据えて下層レイヤのテクノロジを学ぶという行動に出るのは、なかなか決断力の要るもののようにも感じます。ちょっと大袈裟ですが。温故知新、基本を知らずして応用を語ることなかれ、分かっちゃいるけど難しい。そういう意味で、ベテランの技術者の方々が、経験の中で確実に見につけたコアな技術というのにある種の羨ましさを覚える昨今。

この状況をどう改善するか、本気で考えた方が良いのかもしれないと思わされました。

Posted by naoya at October 24, 2003 04:43 AM | トラックバック (2)  b_entry.gif
トラックバック [2件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/559
C言語を知らない達人に会いたい
Excerpt: 日経ソフトウェア 2003/12号の特集は「目的別プログラミング書籍」。当然購入。  仕事場の本棚から特集で紹介されている書籍を積んでみました(笑 こだわって、版が違うのも積んでいません。ドラゴン・ブックも家にならあるんだけどなぁ・・ ネタはさておき、これだけ...
Weblog: 積読 2nd
Tracked: October 24, 2003 11:27 PM
「全ての応用は基本の延長線上にある」
Excerpt: 表題は NDO::Weblog から Wataru's memo(2003-10-18) にたどり着いて拝見した言葉です。いい言葉です。 会社や世の中のSEやプログラマに対して、最近よく思うことがここで書かれています。まあ、この時代に「おまえら全員アセンブラからやり直せ」とは思いませんが(とい...
Weblog: bricklife.*
Tracked: October 25, 2003 01:12 AM
コメント [2件]

レイヤを下げていけばいくほどエンジニアの価値は高まるようですが、ニーズは減っていくんですよね。そのへんのバランスをどうとったものか。
私ははじめ組込みのアセンブラ屋として仕事をはじめたのですが、四則演算から何もかも自分で揃えなければいけないという環境に嫌気がさして、Perlとかをターゲットに移った口だったりします :-)
応用が基本の延長なのは真ですが、別のレイヤは別の視点と概念で捕らえることも必要だと思います。
# 難しいなー

ただ、昨今のコンポーネント再利用指向、(過度な)フレームワーク指向、潤沢なハードウェアリソース依存指向にはほんのり危機感を感じています。その危機感はエンジニアとしてではなくて、そのようにインプリメントされたアプリケーションやシステムを利用する立場の視点からくるもののようです。
「○×コンポーネントを利用して、通常工数6ヶ月要する開発を3週間で成し遂げました!」素晴らしいことです。でもその成果が膨大なマシンリソースや運用コスト、繁雑な管理を強いるものであったとしたら、勘弁してください。って思います。

私個人の根拠の無い予測ですが、近いうちに「パフォーマンスが必要ならば、ハードウェアをスケールアップ/アウトさせれば良い」という風潮は弱まるのではないかと考えています。正しい(or 適切な)アーキテクチャ、適正なコンポーネント、正しい実装に対する要求がもうすこしだけ厳しくなるのではないかなと。
# っと横には"省メモリプログラミング"(ISBN4-89471-408-6)が転がっていたり。

[1] Posted by: oyama at October 24, 2003 11:07 PM [返信]

oyama さん

レイヤを下げていくほどニーズは減っていくというのはそうですね。周りの先輩なんかを見ていても、下層のレイヤに詳しい人で「○○さんはスーパーハッカーだ!」とか周囲で囁かれている人でも、そんな方々しか持ち得ない技術が必要になる場面って、業務上あまり多くなかったり。(あるとすれば、多くが障害の場面だったりするのがいかにもアレゲなんですが..)

コンポーネント再利用指向などに関する危機感というのは、この間の Shibuya.pm での宮川さんと竹迫さんとのやりとりにも通じるのかなって思います。

スケールアップやスケールアウトで対処、っていうのは商用UNIXからIAに移行することでコストが削減されるなどと騒がれている今だからこそ割と簡単に訴求ポイントになるのですが、巷のサーバがすべて安価になってその辺のコストが定常化されてくると、スケールアップやスケールアウトでごまかして来た部分が逆にコスト面で首を出し始めるのではないかと。

そうなってくるとやっぱりがんばらなきゃいけないのはソフトウェアの方ですし、いずれそのような状況になってくると、ソフトウェアが頑張ればもっとハードを減らせるという事実がエンジニア以外のところにも浸透してくるような気がしますね。


[2] Posted by: naoya at October 25, 2003 09:19 AM [返信]