2007年9月24日月曜日

マシン語至上主義

このブログ記事をはてなブックマークに追加

とあるブログで、プログラムというのはマシン語を理解して初めて「書ける」とあった。それはどうかと思う。特に最近よく使われるようになったLL言語なんてのは、内部を隠すように設計されていて、どのコンピュータ・どの環境でもその違いを見せないようにしているのにマシン語が必要なんて矛盾している。

もちろん、マシン語はハードウェアを知る上でも習得しておいたほうが良いが、わざわざ強制してマシン語を覚えさせることはないなぁ。下手するとマシン語を変に良く知っているせいで、それが災いすることもある。

例えば、以前あるプログラミング雑誌でC++の記事を読んだことがあるのだが、その記事によると、プログラムからアセンブリ言語を予想できなければいけないと書いてあり、実際にその記事にはプログラムコードが示されるたびに、それをアセンブリ言語に変換したものが載っていた。で、そのコードをみて、こういう動作をするのでこのように書くこともできると、規格外の書き方が記載されていたのだ。確かに、そのコンピュータのその環境ではうまく動くかもしれないが、それは標準規格では動作を保障していない。「正しい」プログラムは「正しい」書き方をしたものでなければならない。その場だけで通用する書き方ではだめなのだ。

マシン語至上主義は「良くない」と思うが、自分自身はマシン語を覚えていて良かったと思う。コンピュータを使い始めたころはプログラムでも組まなくてはあまり使い道がなかったのもあって、マシン語・アセンブリ言語でいろいろ遊んでみた。ハンドアセンブルしていたことが懐かしい。マシン語は覚えるのは簡単だけど、それで複雑な仕事をさせるのはかなり大変。そういえば、ゲーム雑誌ログインには毎回ゲームのマシン語ダンプリストが載っていたなぁ。今じゃCD付けて終わりってところだろうけど、自分で打ち込んだ苦労があるからか、そこに載っていたゲームは面白いものが多かったように思う。確かあの木屋さんが作ったドラゴンスレーヤーのダンプリストもあったはず。

あまり関係ないけど、以前、知り合いで計算速度ではFORTRANが一番速いって言っていたのを思い出した。FORTRANが吐き出したコードはすべてマシン語で書くことができて、(作成の困難さを度外視すれば)マシン語で書かれたものが一番速いか最悪で同じ速度って言ってもなかなか理解してもらえなかった。そういや、以前のg77 FORTRANコンパイラはひどく性能が悪かったなぁ。

0 コメント: