要はどんなプログラマになりたいか? かなとか。

via ときどきの雑記帖さん。

Javaだけ、というのはまあ極端にしても、 アセンブリ言語とかCの知識って「必須」といえるほどのものなんだろうか? と考えることがあります (「必要ない」とまでは云っていないのでその辺よろしく)。

「仕事で」LispとかHaskellなんかを使うことはまあ皆無といわないまでも、 まずないでしょうけれども、とにかくそういった方面のプログラミングをするときに 具体的な「計算機」の低レベルな実装というのは逆に足枷になったり しないかなあと思うわけです。

404 Not Found

前提として自分は色んなプログラマがいても良いんじゃないかなぁと思いました。
低レベルを知らないと不安でしょうがない、っていう人もいれば、
そんな泥臭いところは知らなくても良いじゃん、って思う人もいるというか。


アセンブリ言語C言語の知識が「必須」という環境もあるけれど、
LispHaskellなどと言わず、
一般的なWeb系のプログラマにはこれら必要がないよなぁ、とか思います。
Write Great Codeなんかではアセンブリこそが本質ですよ、
的な感じの書き方をしていますが、Webでアセンブリなんて出現しないし、
ニーモニックとにらめっこもしない。
「Great Codeを目指すために」
というのは本当に一部の人のためのものですよね。
「必須」よりも寧ろ趣味や志の領域。


既にWeb系は一定のレイヤの上に乗ってしまっているので、
実はRubyだけJavaだけっていうのでも困らないのかもしれません。
一般的な業務の範疇ならWebでアセンブリなんて使わないし、
Cみたいな知識も求められないでしょうし。


ただ、個人的には抽象化されたレイヤだけに触れているといざというとき「勘が働かない」んじゃないかなぁとか思ってしまうことがあります。
「なんで思った通りに動かないんだ?」というとき「閃き」があるのは低レベルの知識からだったりすることが多いように感じるので。


が、Javaの下というと未だにC言語になってしまうのでどうかなぁと。
C言語って学んだ方が良いんですか?」ってきかれることもありますが、
「学びたければ」「より知りたければ」ってくらいの答えしかできなくて、


そして、結局のところ「そのプログラマの決断」なんですよね、きっと。


戦闘機のパイロットやF1ドライバは機械べったりの知識は必要ないと思うんですが、
戦闘機やF1を運転しているときに感じる(かもしれない、もっと上へいくための)違和感の正体の理由を知っているかどうかで、
よりよい運転ができるようになるかもしれないですし
人にも言葉にして伝えられるかもしれず。
(たとえはたとえということで一つ宜しくお願いします)


逆にそんな理屈めいた事に身を寄せずとも良い、っていう人もいるなぁとも思いつつ。


やっぱり自信を持って「C言語」や「アセンブリ言語」を学ぶべきとは言えない気がしました。
「うんこ」とか「いらない」、と言われるとやっぱり淋しいですけどね。


と、まぁ、結局は好きなことに注力するのが一番かなぁ、とか思いました。
スタックポインタ、アキュムレータ、プログラムカウンタ、フラグレジスタ
なんて言葉は失われていくのかもしれませんね。

ハンドアセンブルするのにNOPいれたりしたなー、なんて話は過去の遺物になってしまうのかも。
かしこ。