パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

プログラマーはマシン語を理解しておくべき?」記事へのコメント

  • by sayuporn (33927) on 2007年09月21日 17時59分 (#1222647) 日記
    旅行者はその国に1日でも先に着くと、後から来た旅行者に先輩面するのです。
    自分が機械語解るからって、先輩面しちゃいけませんね。

    ショクレー先生に「コンピュータは半導体を自分で接合してから初めて『使える』と言うのです」と
    説教してもらいたいです。あとこのコピペも。

    696 :Mr.名無しさん :2007/01/09(火) 22:53:01
    電車のボックスシート(2人掛けの席が向かい合っている)で、
    隣に座ったオヤジが激しくふんぞり返って股を広げきっていたので、
    わたし「狭いんですけど」と言ったら、
    オヤジ「しょうがないだろう!これ以上どうやってよけるんだ?」
    わたし「どうやっても何も、他の人はきちんと座れてるじゃないですか」
    オヤジ「女の癖にうるさい!」
    わたし「女の癖にって、あなただって女から産まれてきたんじゃないんですか?」
    オヤジ「屁理屈を言うな!大体、それが目上の者に対する態度か!」
    わたし「目上と年上は違うと思うんですけど。
         バカでも死にさえしなけりゃ年はとれますから」
    オヤジ「目上も年上も同じだ!年上の言うことは黙って聞け!」
    その時、向かい側に座ってた初老の男性が、

    「じゃあ俺の言うことなら黙って聞くんだな?」

    と一言。
    オヤジは返す言葉がなかったらしく、席を立って
    次の駅で降りてしまいました。
    • Re:旅行者の法則 (スコア:5, おもしろおかしい)

      by leiqunni (8779) on 2007年09月21日 19時11分 (#1222705) ホームページ 日記
      ここでインテルの開発者が現われて、
      「昨今のCPUはマシン語からμopに変換するので、マシン語は相対的に高級言語だ。
      だからマシン語はμopを理解してから初めて云々」
      と言って欲しいですね。
      親コメント
      • 昔のZ80とかは制限が多くて書きにくかったみたいだけど、i386以降はバカみたいに書きやすいから、マシン語のマシン語っぽいところはほんとマイクロコードのほうに行っちゃったんだろうね。

        じゃあプログラマがマシン語のようなものを通じて知っておくべき知識ってなんだろう?

        ・スタック
        ・ポインタ(アドレス)
        ・ビット演算

        正直どれも要らない。

        プログラミングの基礎として知っておいて欲しいのはこんなところじゃないかな。

        ・無駄なリソースを使いまくらない。
        ・実際にどうやって処理されるか考えて書こう。

        特にSQLなんかだと、テキトーに書いて一生終わらないクエリがよくあるので、データベースの中でどのように処理されるのか想像できるぐらいの知識が欲しい。
        親コメント

        • ・スタック
          ・ポインタ(アドレス)
          ・ビット演算

          正直どれも要らない。

          Javaやスクリプト言語でWeb系開発するくらいなら、概ね同意ですが、
          CやC++を生業としてる人や、組み込み系な人は、上記3項目は基礎知識として必要じゃないですかね。

          プログラミングと一口に言っても、ワンマイコンチップのファームウェアから、ビジネスロジックまで、
          いろいろあるから、こればかりは、分野によるでしょうなあ。
          そういう意味では、SQLの仕組みの知識についても、分野次第で、必要だったり不要だったり。

          私の場合、C++でSQLクエリエンジンを実装したことがあるので、どちらもやる羽目に。。。

          親コメント
          • JavaやC#でも「値渡し」と「参照渡し」があります。これって結局ポインタのことでは?
            スタックもまぁ知らなくてもいいのかもしれないけど、Stackってクラスがあってスタックを知らなければ名前の由来さえわからないのかも?
            渡しは仕事がアセンブラ→C→→C++→Javaと段階的に変化してきました。もうアセンブラなんてうっすらとしか覚えてないけど、やはり知っててよかったなーとおもいます。
            親コメント
            • (アドレス) と付いているので、ポインタの言葉が意味するものがちがってますよ。
              Cみたいなむき出しのアドレスを扱える必要はない と言ってるんだと思います。
              親コメント
            • by Anonymous Coward on 2007年09月22日 13時51分 (#1223120)
              > JavaやC#でも「値渡し」と「参照渡し」があります。これって結局ポインタのことでは?

              そうやって理解しちゃうと、たとえば Algol60 の「名前渡し」なんか理解不能でしょ?
              Algol60 はちょっと古いけど、新しいところでは Haskell なんかの引数渡し方法の理解にも障害が出るよ。

              「値渡し」とか「参照渡し」とかは、そのような概念として理解して
              「参照渡し」の実現方法としてある種のハードウェアではアドレスを「値渡し」することが
              慣習上行われているが絶対唯一の方法ではないことをよく考えたほうがいいな。

              ハードウェアとかマシン語とかの理解をベースにしちゃうと
              考え方の幅が制限されて結局「プログラミング」の理解の妨げになるんだよ。
              自分が一般的なハードウェアだと思っているものが
              ごく特殊な実現方法がたまたま現在主流になっているだけだということもね。
              親コメント
              • Cのプリプロセッサのマクロ関数も「名前渡し」と同じ作用になりますね。
                まあ、「名前渡し」というか単に文字列として置換しているだけですけど。

                ja.wikipediaにある例だと、
                        #define swap(x,y) do{ tmp = (x); (x) = (y); (y) = tmp; }while(0)
                に対し、swap(i,a[i])と書くと、
                        a[a[i]]=i;
                になる。i=2とすると、
                        a[a[2]]=2;
                となる。
          • いや、どう考えても「Javaやスクリプト言語でWeb系開発」でも必要ですって。
            #1222794がいっている
            |・無駄なリソースを使いまくらない。
            |・実際にどうやって処理されるか考えて書こう。
            を実現するのに必要な知識でしょう。
            例えばPerlでリファレンス(C/C++でいうところのポインタに相当)を知らずに大量のデータを扱えばどうなりますやら。
            クエリの効率良くてもホスト言語での実装が駄目なら結局は駄目。
        • ちょっと心配になって来たんだけど、
          世間ではデータ構造のスタックにもライブラリを使って、
          内部構造、動作も考えずに使ってるってこと?
          親コメント
        • 一生終わらないクエリーなんてない!!
          莫大なリソースと時間とちょっとの運があれば(嘘

          #実際問題そんなクエリーは終わらないのと同じだけど・・・
        • ふふっ
          富豪主義のわたしには関係なさそうな話題だな
        • スタンダードな高級言語であるJavaを例に取ると

          ・スタック
           知識として必須ですね。ヒープとの違いなどが特に。
          ・ポインタ
           これも参照とほぼ同義なので理解する必要はある。
          ・ビット演算
           Java5.0以前はorで定数渡すので知識として必須。

          というわけで高級言語使いなら必要としない知識なら別のものを出すべきでしょう。
      • Re:旅行者の法則 (スコア:3, すばらしい洞察)

        by pharmer (32222) on 2007年09月22日 0時34分 (#1222926)
        ここでインテルの開発者が現われて、
        「昨今のCPUはマシン語からμopに変換するので、マシン語は相対的に高級言語だ。
        だからマシン語はμopを理解してから初めて云々」と言って欲しいですね。

        理解できるよう努力しますんでぜひとも公開してください。
        親コメント
        • μopってμopという名前の確定した命令セットではなく、
          CISCのIA32をRISC的な処理単位の組み合わせに分解するという
          一連の動作を表すために仮想的に設けている概念であって、
          コアのアーキテクチャによって実は異なっていたり
          するんじゃないか、という陰謀論は駄目かな?
          --
          ごめんなさい。
          親コメント
        • by Anonymous Coward
          つRISC86
      • by funakichi (28497) on 2007年09月22日 17時58分 (#1223169)
        昨今のCPUは、というより、昨今のx86アーキテクチャのCPUは、じゃないのかなあ。
        下のコメントのタイトルにもあるx86が筋が悪いというのはアセンブラの組みにくさだけじゃないわけで。
        CISCとも言い難いx86アーキテクチャのまま進化させるにはこれしかなかったというか。
        親コメント
    • Re:旅行者の法則 (スコア:3, すばらしい洞察)

      by Anonymous Coward on 2007年09月21日 19時35分 (#1222720)
      なぜ、マシン語などという狭い世界の話に落とし込むのかがわかりませんね。
      時代によってCPUも変わるし、プログラム言語の流れだって変わってる。

      なにで書くかなんて飾りです。それがご老人にはわからんのですよ。

      むしろ、数多くのアルゴリズムを知識として蓄積したほうが、 よっぽど「書ける」プログラマの素質なんじゃないかなと思いますけどね。 実際に、指定された言語で書けるかどうかはわからないけど、 学習は早いと思いますよ。
      親コメント
      • by Anonymous Coward
         少々考え方が狭量、というか、「そんな基礎的なお勉強なんかしてられない」でも通用する職種になってしまったのでしょうね、コンピュータは。

         時代を感じます。
      • by Anonymous Coward
        汎用機辺りもはマシン語は非公開ってのも有りますからね。(使っているCPUも?)
        まあ汎用機自体時代遅れの恐竜ですが。

        不要とは言いませんが、知っているべきと決めつけるのも乱暴でしょう。
    • Re:旅行者の法則 (スコア:1, すばらしい洞察)

      by Anonymous Coward on 2007年09月22日 5時08分 (#1223017)
      >>旅行者はその国に1日でも先に着くと、後から来た旅行者に先輩面するのです。
      >>自分が機械語解るからって、先輩面しちゃいけませんね。

      理屈になってないと思うんですが。
      別に先輩面云々といいたいわけじゃないのでは?
      何故にこれがスコア5なのか凄く疑問です。

      まぁ、氏の言うこともちょっと走りすぎている感はありますけど、
      人間が扱える最もローレベルの言語を知っておくのはメリットだと思います
      (使うかどうかは別問題)。
      というのも、個人的にはちょっと危機感を持っていて、
      予めハードウェアでもソフトウェアでも機能が用意されていないと、
      それは出来ないものだと決めてかかる輩が少なからず居るのです。
      そういう輩には単純な8bit等の不自由なCPUで学んで欲しいとは思います。
      そうすればプログラミングの考え方の基本が身につくのではないかと思います。

      >>ショクレー先生に「コンピュータは半導体を自分で接合してから初めて『使える』と言うのです」と
      >>説教してもらいたいです。あとこのコピペも。

      これを引っ張り出すのも明後日の方向に場外ホームランかも......
      親コメント
      • Re:旅行者の法則 (スコア:3, すばらしい洞察)

        by Anonymous Coward on 2007年09月22日 6時01分 (#1223021)
        言い方の問題ってことでしょ。マシン語(コンピュータ動作の基礎)知ってることに越したことは無いけど、
        「当然のことながら、プログラムというのは、マシン語を理解して初めて「書ける」と言うのです。」
        なんて言うのは傲慢すぎ。それが先輩面ってこと。

        それに自分で半導体作れなくてもコンピュータは使えるってことで。

        モデレートに文句言うのはかっこ悪いよ。
        親コメント
    • by CowardDuck (25674) on 2007年09月22日 18時37分 (#1223181)
      > ショクレー先生に「コンピュータは半導体を自分で接合してから初めて『使える』と言うのです」と
      > 説教してもらいたいです。あとこのコピペも。

      うーん。ソフトウェアの話題をしているところにハードウェアの話を
      持ち出してくるところがなんともミラクルな筋違いで、いわゆる
      KY ってやつですね。

      KY であることとは関係ないですがこの人は多分、ゲーデル先生が
      不完全性定理の証明の冒頭で論理的命題は有限個の自然数の順列と
      して表現できることを述べていることも知らないのでしょう。
      親コメント
    • by signed-coward (17953) on 2007年09月26日 20時37分 (#1224900) 日記
      ここにぶら下げるのが適当なのかな?
      プログラミング言語ヒエラルキー [geekpage.jp]
      親コメント
    • by Anonymous Coward
      読書の秋なので。

      先輩面されたとふてくされ耳をふさぐ前に、コンピューターの基礎的に
      ついて学ぶのはいかがだろうか。

      Fatalwedge 「プログラマーであれば確かにマシン語(レベルでの理解)
             をしておいた方が望ましいと思うのですが」

      オヤジ「自分が機械語解るからって、先輩面しちゃいけませんね。」

      私「読書の秋なので。・・・」(←いまここ)
      • by Anonymous Coward
        あなた「コンピューターの基礎的について」

        私「日本語でおk」(←いまここ)

ソースを見ろ -- ある4桁UID

処理中...