« 脳内メーカー | トップページ | 初音ミク »

マシン語必須論について

 ある方の、「当然のことながら、プログラムというのは、マシン語を理解して初めて「書ける」と言うのです。」という発言がちょっとした議論を呼んでいるようで、スラドにまで投稿されていたので、元プログラマとして一言(^^)。

 前提として言っておくが、ぼくは某世界的な外資系大企業でアセンブラで BIOS を書いていたこともあるし、マシン語ならではのギミックを使った最適化を得意としていた方で、先輩とかからは、あんまり細かいところに凝らないでもっとソフトウェア工学的にわかり易いコードを書け、と言われることの多かったタイプのプログラマである(^^)。

 したがって、マシン語を理解することによる恩恵は、わかりすぎるほどわかっているつもりだ。しかし、極論を言えば、この世の中に知らなくてもいい知識などないのであって、一個人のもつ有限な能力や時間では、この世のありとあらゆる知識を身につけることなど不可能だというのが大前提であろう。そう考えれば、できるのは、いろんな分野の知識に対費用効果(対労力効果と言ったほうがよいかもしれないが)に基づいて優先順位をつけ、優先順位の高い順に吸収していくということしかない。

 もちろん、優先順位の間に閾値を決めて、その閾値から上か下かで必須か必須でないかを決めるという方法は考えられるが、では、そのような閾値はどのように決めればよいであろうか。

 まず思いつくのは、対費用効果の「効果」の方から逆算する、という方法だろう。言い換えれば、プロのプログラマとして必要な能力というものを先に決め、そこから、その能力に必要な知識というものを逆算する方法である。

 しかし、現在では、「プロのプログラマ」に必要な能力は多岐に渡っている。その中にはもちろん、マシン語の知識が必須と言えるような現場や仕事もあるだろう。しかし、あらゆる現場や仕事に必須な能力の積集合をとれば、その中には、マシン語の知識は入ってこないであろうし、逆に和集合をとれば、範囲が大きくなりすぎてあまり意味をなさないであろう。 だいたい、今時の求人で、「プログラマ募集」などという漠然とした求人はほとんどなく、「Java プログラマ」とか「Web プログラマ」のように、もっと職種を絞った求人がほとんどなのだから、そういう意味でも、和集合をとる意味はあまりないと言える。

 現に、ぼくがかつて所属した職場には、ぼく以外にマシン語を知っている人が数人しかいないという職場がいくつもあったし、そのマシン語を知らないプログラマ達も、プロとして立派に給料をもらっていた。これは、今みたいにライトウェイト言語の流行っていない時代だったから、今ならなおさらそうであろうと考えられる。

(ちなみに、かつての第二種情報処理技術者試験では、CASL という仮想のマシン語による試験があったが、これは必須ではなく、COBOL や FORTLAN との選択であった。現在の基本情報処理技術者試験でも、C・COBOL・アセンブラ言語・Java からの一言語選択である。)

 もう一つ考えられるのは、対費用効果曲線自体の性質から閾値を決める方法である。代表的なのは、限界効果が限界費用を下回る点を閾値とする、というものだろう。言い換えれば、勉強に必要な労力よりも、その知識によって得られるものが小さい知識は、勉強する必要がないという考え方だ。

 しかし、これも結局は、その人の所属する現場や仕事に依存するので、上に書いたプロとしての最低ラインより範囲が広がることは確かだろうが、その中にマシン語の知識が入ってくる可能性は低そうだ。もし、そのような意味でマシン語の知識が必須であるなら、ぼくのかつての同僚たちも、マシン語の勉強を始めているはずであるが、そんな気はまったく見られない人がほとんどであった。もちろん、彼らの中には対費用効果基準に基づいて行動をしていない者もいるだろうが、全員がそうであるとは考えにくい。

 もう一つ、このような考え方が問題なのは、「プログラマに必要な知識」に限定することの意味があやふやになってくることである。というのは、純粋に対費用効果だけを考えるなら、「プログラマに必要な知識」だけを対象とする必要はなくて、「管理職に必要な知識」とか「営業マンに必要な知識」とかを先に勉強した方が得かもしれないからだ。ぼくのかつての同僚たちも、おそらくはそういう基準に基づいて行動していたのだろう。

 つまり、あるプログラマが考える「プロのプログラマ」としての基準を満たしていない、その人から見れば半人前のプログラマの方が、その人本人より金を稼いでいるとか幸せな生活をしているということがありうるのであって、そういう人に対して、「お前は半人前だ」と認定することに何の意味があるのだろうか、みたいな話になりかねない。

 長々と論じたが、結論としては、「マシン語の知識」はないよりはあった方がよいが、その人の所属する現場や仕事と無関係に必須か必須でないかを決めるのは難しいという、つまらない話になる(^^)。最初の記事が問題なのは、必要以上に大げさな言い方をしたことで、最初から、「知っていた方がよい」と書いて、その効用を書いておけばよかったのである。そうすれば、親切な人として尊敬されたであろう。それだけの話だと思う。

 スラドのコメントには、マシン語が必要か必要でないかを知るためにも、マシン語を勉強すべきだみたいな、ちょっとヒネった意見があったが、そんなのは、ブックレビューの妥当性を論じるのに、レビュー対象の本を読めばわかると言ってるようなもんで、この議論の意味が根本的にわかってない意見だろう。そもそもこの議論は、マシン語を知らない人に対して、マシン語を学ぶべきか否かという判断基準を与えることに意味があるのだから(^^)。

(自分で読み直して感じたのだが、多分、「○○という仕事は○○でなければならぬ」という言い方は、徒弟制の産物なのではないだろうか。徒弟制では、職業人のあるべき姿というものを決める正統性を師匠が独占していたので、「仕事を教えること=自分の美学を伝承すること」という等式が成り立っていたわけだ。ぼくはそういう制度を全否定する気はなくて、おそらく社内教育などでは、そういうやり方が有効な場面もあるとは思う。ただ、今のような労働市場の流動化した時代にインターネットで全世界に向けて発信するのにふさわしい言説ではない、ということではないかな(^^)。)

|

« 脳内メーカー | トップページ | 初音ミク »

パソコン・インターネット」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67762/16534958

この記事へのトラックバック一覧です: マシン語必須論について:

« 脳内メーカー | トップページ | 初音ミク »