マシン語を知らない子ども達というエントリを見かけました。
プログラムが書ける、という状態は「マシン語が書ける」という状態の延長線上にあるべきで、マシン語を理解していないということはマシンを理解していない、つまりプログラムを理解していないのとほぼ同じだと思います。
マシンを理解しているというのは、「ソフトウエアから見たCPUアーキテクチャ(レジスタ、プログラムカウンタ、スタック、アドレッシングモードなど)を理解している」に近い意味と取って良いのかなぁ?ヘネシー&パターソンの「コンピュータの構成と設計」あたりを理解しておくと良いという感じでしょうか?まあ、確かに理解していた方が良いですよね。ただ、あくまで知っていた方が役に立つよ程度で、これらを理解していないことが、プログラムを理解していないのとほぼ同じとまでは言えないのかなと思います。
ちなみに、上記のエントリ、あるいは、コメントでは80386やZ80系のCPUがあがっていることが多いようでしたが、私個人は、昔、Z80とMC6809のアセンブラを書いていたことがあります。特に、MC6809はお仕事で書いていました(残念ながらファミコンやApple IIで使われていたMC6502ではありません)。最近のCPUでは、気にする必要はないと思いますが、本当にアセンブリ言語(ニーモニック)で、プログラムを書くということが重要だとするのであれば、たとえば、乗算や除算命令を使わず、ビットシフトと足し算で掛け算を実現した方が使用するトータルのクロック数が少ない場合があるとか、C言語のswitch相当の処理をアセンブリ言語で記述するときとかの方法とか、パイプラインを考慮した命令順序とか、その手の話が出てきそうなのにまったく出てこないところを見ると、マシン語云々とか、本当にアセンブリ言語でプログラムを書くというよりも、あくまでソフトウエアからみたCPUアーキテクチャを理解していることが重要だよと言っているエントリなのかな??
Perl、PHP、Javaといった言語でプログラミングしているときに、この辺の知識はあれば便利だけどプログラムを理解していないとまでは言えないでしょうね。そりゃ知っているに越したことはなけど。それに、これらの言語では「データ構造とアルゴリズム」に関する知識の方が重要な気がします。個人的には、アセンブラでパフォーマンスチューニングするより前にアルゴリズムを検討した方が格段にパフォーマンスがよくなると思っていますし、実際、それでパフォーマンスが上がることが多いです。アセンブラレベルのパフォーマンスチューニングはアルゴリズムによる改善が見られないときに行う方法でしょう。アセンブリ言語で実装する場合にもデータ構造とアルゴリズムは非常に重要ですし・・・
まあ、個人的には、アセンブリ言語を知っていたおかげで、コンパイラのバグを発見できたことは3?4回あるので役にはたっています。興味のある方は多少お勉強してみても良いかもしれませんね。あと、実は、LispやPrologやMLといった良く使われている言語とは違うモデルの言語でのプログラミングを知っていると本当は便利なときがあったりますが、Lisp以外はなかなか試す環境がないですね。
ただ、これらのことをちゃんと理解しないままプログラミングをやっている方が多いために、海外に比べて日本のソフトウエアのレベルが低いと言われているのかもしれないなぁとちょっとだけ思ってしまいました。インドや中国とかのソフトウエアエンジニアは、コンピュータサイエンス学科を出ていたりすることが多いので、この辺の知識はありますからねぇ・・・
※このエントリは CNET Japan ブロガーにより投稿されたものです。シーネットネットワークスジャパン および CNET Japan 編集部の見解・意向を示すものではありません。
iPhonista Nightの事後報告
コンテンツ市場14兆円の中身と行方
もっとパラリンピックに目を向けよう
経営者が無断ビデオ撮影するとき
SNS開発で携帯は??
(エンジニアにとっての)モテ論(2)/Mozillaの陰謀(説)
除名せよ!福田康夫
1年も持ちこたえたのは本当に「ご立派」としかいいようのない福田総理
イーモバに冷たい各社
まず10年間は泥のように働け3みんなのお題では、ブロガー同士で質問を出し合いそれに対する回答や意見を集めています。今日はどんな話題が盛り上がっているでしょう?
サーバ仮想化・グリーン化の利点を最大化!CNET Japan ブログネットワークは、元はCNET Japanの一読者であった読者ブロガーと、編集部の依頼により執筆されているアルファブロガーたちが、ブログを通じてオンタイムに批評や意見を発信する場である「オピニオンプレイス」、また、オピニオンを交換するブロガーたちが集うソサエティです。
広い視野と鋭い目を持ったブロガーたちが、今日のIT業界や製品に対するビジョンや見解について日々熱く語っています。
CNET Japanやその他サイトが提供するITニュースやコンテンツへの意見や分析、 ビジネスやテクノロジーに対するビジョンや見解について語っていただける方を 募集しています。ご応募はこちらから
ブログの投稿はこちらから(※ブロガー専用)
今年最も活躍したブロガーを表彰します。詳細はこちらから
これは、CNET Japan 編集部の依頼に基づいて執筆されているCNET Japan アルファブロガーによるブログの印です。
CNET Japan ブログネットワーク内で拍手の代わりに使用する機能です。ブログを読んで、感激した・役に立ったなど、うれしいと思ったときにクリックしてください。多くGood!を獲得した記事は、より多くの人に読まれるように表示されます。
今週の新製品総チェック:ノート、デスクトップ、UMPCまでPC秋モデルが続々
今週の新製品総チェック:薄さ13.9mmのサイバーショット登場!NEC「LaVie」はデザインモデルが