アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
下層レイヤを知ってれば有利だよって事? (スコア:1)
役立つといえばVB6.0から無理やりWin32 APIを呼び出す時(Cの知識)とか、
何故か落ちるプログラムをデバッガで追っかける時(アセンブラ)ぐらいでしょうか?
ネットワークでも同じでWebブラウザだけでなく、HTTPプロトコルとかIPのルーティングさらに物理層の挙動まで知っておけばトラブルシューティングがやりやすいとか。
そりゃ無いよりは有ったほうが良いかと思いますが。
結局、その言語の直下のレイヤ、そしてその下のレイヤみたいな感じ繰り返していくとマシン語になっただけで、
そのコードが最終的に何処にどのように作用するかを知っておくべきという抽象的な物ではないかと思いますが・・・
シリアルポートに毎ループデバッグメッセージ書き出しの件も別にマシン語を知っていたからではなく、その中間レイヤ(OSのシステムコールとか?)の知識があったからこそであって、最終的に「マシン語だけ」ではなく「マシン語まで」でしょうね。
# x86はリファレンスとお友達になりつつしか書けないけどID。
# Z80はMSX上で少し触ったけど既に忘却済みorz
Re:下層レイヤを知ってれば有利だよって事? (スコア:4, 参考になる)
元記事には、マシン語の知識が無いとPHPやJavaScriptで遅くなってしまった時にピンとこない、というような事がかかれてますが、ではマシン語の知識があればPHPやJavaScriptで速いコードが書けるのかというと、一概にそうとも言えないでしょう。PHPやJavaScriptのエンジンがどのように動いているかという事を理解しているほうがむしろ高速化に役立つような気がします。
例えばPHPでのリファレンス、関数との間のやりとりを値でやるかリファレンスでやるか、マシン語の知識があると「リファレンスのほうが速そうだな」と思ってしまう。でもマニュアルにはそれを察してか、リファレンスでの返しの部分に、「パフォーマンス向上の目的でこれを使うな、そんな事しなくてもPHPエンジンが最適化してくれる」と書かれるんですよね。
余談ですが、じゃ、最終的なのまマシン語なのかというと、今では確かにそうかもしれないけど、ハンドアセンブルしていた頃はそうでもなかったんですよね。どの命令が具体的にどのような処理をするか(何クロック必要か)を知っていると、速いコードが書けたわけです。特にZ80で拡張された命令はどれが速くてどれが遅いかとか…。
まぁ、理想論から言えば、下層レイヤは意識する必要が無ければ無いにこしたことはないでしょう。それが各層での技術の見せどころでしょうかね。
結局程度の問題 (スコア:1, すばらしい洞察)
この日本語ってさ、鍵括弧の部分が何をどの程度まで指すのかによって解釈が大きく変わるわけじゃない。だから、命題として真であるか偽であるかという問題じゃなくて、どの程度が実際に必要(役立つ)かということが問題なんだよね。
リンク先には「最低でも、論理回路だけで桁上がりをサポートした加算機を作れる程度の理解」「論理回路、マシン語、C言語の3つは(略)最低限おさえておきたい」「80386を(略)理解しないままマルチタスクOS上で動作するプログラムを書くことはほとんど自殺行為」とあって、自分にはかなり積極的な考えに思える。
学習のコストとか学習内容のパフォーマンスへの反映なんかにはかなりの個人差があるし、リンク先で「ただ読むだけでもとても面白い本」が紹介されている(ただ楽しむために学習するならコストは度外視できる)けれど、この辺は個人の資質が強く影響するから「このくらいが最低線」というのを安易に言ってしまうのは確かに乱暴だと思う。
# リンク先の意図としては「このくらいまでなら確実にコストを回収できる」というラインを示したかったのだろうけど
一方で、学習がどれだけの役に立つかは実際にコストをかけてみないとわからないわけで「体験談の1つ」としては非常に参考になる話だし、具体的な学習法や活用法にまで言及されていて、十分説得力のある主張になっていると思う。
# 実務に携わる人なら、もっと逼迫した需要が山のようにあって、とてもそちらまでコストをかけられないというケースは多いだろうけど、学生の人なんかは、これを機会に本でも眺めてみるのもいい考えなんじゃないかな
Re:下層レイヤを知ってれば有利だよって事? (スコア:1)
有利であって、毎回必須ではないということがポイントです。必要ないときは上位レイヤのことだけ考えて最適化すれば十分です。最適化は上位レイヤからですから。
下層レイヤを知っていれば、上層レイヤを書くときに良いコードが書く事ができます。
たとえば、コンパイラの挙動を知っていれば(こう書けばこういうコードが出てくるというのが分かっていれば、わざわざマシン語で書かなくても十分性能が出せて、ポータビリティや記述量の点で有利です。
(Write great code [0xcc.net]の思想ですね)
Re:下層レイヤを知ってれば有利だよって事? (スコア:0)