2011-01-15

http://anond.hatelabo.jp/20110115212704

残念ながら、その読書履歴だと、ここで言う「原理」には辿り着いてないと思います。挙げられた本はどれも計算に関する抽象概念からさらに上の、アーキテクチャ言語化する部分に関してです。それらも原理と言えば原理なのですが、そこからスタートしてもC言語でのプログラムは書けるようになりません (Rとかなら書けるかもですが)。

ここで言う『原理』すなわち、なぜ char x[sizeof(int)]; がダメなのか、という理解につながる原理は、「レジスタ」「ALU(CPUの中の計算ユニット)」「バス」「メモリ」といった原理ですメモリアクセスやヒープ・スタックの使い方、アセンブラといったような話です

なんで言語約束事の上っ面を覚えるのが難しいか、というと、「原理」を理解していないからなんです原理を理解せずに約束事だけ覚えたって使えません。曖昧で良いので、プログラムを動かしているときにどのようにメモリが構成されどのようにアクセスされるのかを知る努力をして下さい。その上でC言語をよく見ると、いかCPUアーキテクチャに近い所で記述されているのかがわかるようになると思います(*)。

それだけで、目の前の箱がどう動いているかの理解度が劇的に上がる筈です

*: 理解したつもりになるだけですが、現実コンパイラCPUも、そのさらに7歩ぐらい先に行っています。ですが、この領域は進めば進むほど泥沼なので、「あ、Cって高級アセンブラなんだな」という所で実用上は十分だと思います。てか、偉そうなこと言っている私(某大学博士課程在籍、要は増田現実逃避中のダメ学生)も、そこから先はちゃんと理解していません…。

記事への反応 -
  • もちろん if(i%15){ std::cout << "fizzbuzz" << std::endl;}else if(i%5){ std::cout << "buzz" << std::endl;}else if(i%3){ std::cout << "fizz" << std::endl;}else{ std::cout <<...

    • さらに横だが、これを「瑣末なこと」と思う人はコンピュータ業界には向いてないよ。

      • それは重々理解しておりますが、時代が時代なので、プログラム書かないと生きていけないんです。 困ったもんです。本当に。社会は個々人の適正なんてガン無視ですからね。当然です...

        • トラバ打つ場所間違えた ^_^; それはさておき。あなたが職務上どうしてもきちんとしたプログラムを書かないといけなくて、また、書けるようになりたいと思うのであれば、言語の約束...

          • ありがとうございます。 パタヘネは(ヘネパタも)読んだことないですね…。 プログラム自体を好きになって、好きを原動力に色々やれるのが一番理想的なんですけどねえ。 原理原則系の...

            • 残念ながら、その読書履歴だと、ここで言う「原理」には辿り着いてないと思います。挙げられた本はどれも計算に関する抽象概念からさらに上の、アーキテクチャを言語化する部分に...

              • 仰る通り、ハードウェアアーキテクチャについては知らないですね(スタックやヒープがどうとかは表面上わかりますが)。 というのはズバリそこが非常に嫌い(肌に合わない)で、意...

                • コンピュータがコアスキルってのもよしあしで、コンピュータってのは合理化の権化なので、自分達で自分達の仕事をどんどん減らすのが良い技術者なんですよ。行き着く先は市場飽和...

                  • 一番良いのはコンピュータをコアスキルとして数学に手を伸ばすタイプな気がしますね。 グーグルの人達とか、日本だとPFIとかの人とか、みんなそんな感じですよねえ…。 下請けコーダ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん