アカウント名:
パスワード:
・スタック・ポインタ(アドレス)・ビット演算正直どれも要らない。
ここでインテルの開発者が現われて、「昨今のCPUはマシン語からμopに変換するので、マシン語は相対的に高級言語だ。だからマシン語はμopを理解してから初めて云々」と言って欲しいですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
にわかな奴ほど語りたがる -- あるハッカー
旅行者の法則 (スコア:5, 興味深い)
自分が機械語解るからって、先輩面しちゃいけませんね。
ショクレー先生に「コンピュータは半導体を自分で接合してから初めて『使える』と言うのです」と
説教してもらいたいです。あとこのコピペも。
696 :Mr.名無しさん :2007/01/09(火) 22:53:01
電車のボックスシート(2人掛けの席が向かい合っている)で、
隣に座ったオヤジが激しくふんぞり返って股を広げきっていたので、
わたし「狭いんですけど」と言ったら、
オヤジ「しょうがないだろう!これ以上どうやってよけるんだ?」
わたし「どうやっても何も、他の人はきちんと座れ
Re:旅行者の法則 (スコア:5, おもしろおかしい)
「昨今のCPUはマシン語からμopに変換するので、マシン語は相対的に高級言語だ。
だからマシン語はμopを理解してから初めて云々」
と言って欲しいですね。
知っていて欲しいのはSQLの処理のされかたぐらい (スコア:4, 参考になる)
じゃあプログラマがマシン語のようなものを通じて知っておくべき知識ってなんだろう?
・スタック
・ポインタ(アドレス)
・ビット演算
正直どれも要らない。
プログラミングの基礎として知っておいて欲しいのはこんなところじゃないかな。
・無駄なリソースを使いまくらない。
・実際にどうやって処理されるか考えて書こう。
特にSQLなんかだと、テキトーに書いて一生終わらないクエリがよくあるので、データベースの中でどのように処理されるのか想像できるぐらいの知識が欲しい。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:2, 参考になる)
Javaやスクリプト言語でWeb系開発するくらいなら、概ね同意ですが、
CやC++を生業としてる人や、組み込み系な人は、上記3項目は基礎知識として必要じゃないですかね。
プログラミングと一口に言っても、ワンマイコンチップのファームウェアから、ビジネスロジックまで、
いろいろあるから、こればかりは、分野によるでしょうなあ。
そういう意味では、SQLの仕組みの知識についても、分野次第で、必要だったり不要だったり。
私の場合、C++でSQLクエリエンジンを実装したことがあるので、どちらもやる羽目に。。。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:1)
スタックもまぁ知らなくてもいいのかもしれないけど、Stackってクラスがあってスタックを知らなければ名前の由来さえわからないのかも?
渡しは仕事がアセンブラ→C→→C++→Javaと段階的に変化してきました。もうアセンブラなんてうっすらとしか覚えてないけど、やはり知っててよかったなーとおもいます。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:1)
Cみたいなむき出しのアドレスを扱える必要はない と言ってるんだと思います。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:1, 参考になる)
そうやって理解しちゃうと、たとえば Algol60 の「名前渡し」なんか理解不能でしょ?
Algol60 はちょっと古いけど、新しいところでは Haskell なんかの引数渡し方法の理解にも障害が出るよ。
「値渡し」とか「参照渡し」とかは、そのような概念として理解して
「参照渡し」の実現方法としてある種のハードウェアではアドレスを「値渡し」することが
慣習上行われているが絶対唯一の方法ではないことをよく考えたほうがいいな。
ハードウェアとかマシン語とかの理解をベースにしちゃうと
考え方の幅が制限されて結局「プログラミング」の理解の妨げになるんだよ。
自分が一般的なハードウェアだと思っているものが
ごく特殊な実現方法がたまたま現在主流になっているだけだということもね。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
まあ、「名前渡し」というか単に文字列として置換しているだけですけど。
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;
となる。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
#1222794がいっている
|・無駄なリソースを使いまくらない。
|・実際にどうやって処理されるか考えて書こう。
を実現するのに必要な知識でしょう。
例えばPerlでリファレンス(C/C++でいうところのポインタに相当)を知らずに大量のデータを扱えばどうなりますやら。
クエリの効率良くてもホスト言語での実装が駄目なら結局は駄目。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
つーか、DB周りはノウハウの有無で影響がありすぎるよ。
ちょっと問題だと思うんだけどなぁ・・・。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:1)
世間ではデータ構造のスタックにもライブラリを使って、
内部構造、動作も考えずに使ってるってこと?
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
うちの新人にArrayListだったか何かの使い方を教えるのに「C言語の配列だと一度サイズを決めたら、それ以上増やせないけど、ArrayListを使えばいくらでも変数を入れられるよね」みたいな教え方してましたから。
そもそも内部構造なんて興味を持つ必要がないし、持たないほうが正解だともいえます(使い方さえ知ってれば、実装が変わっても慌てない)。
#ふつーのプログラマは、そもそもスタックなんて高級な機能を使うことは無いと思うけど。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:1)
抽象化される対象なのかも知れませんね。
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
莫大なリソースと時間とちょっとの運があれば(嘘
#実際問題そんなクエリーは終わらないのと同じだけど・・・
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
富豪主義のわたしには関係なさそうな話題だな
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:2, すばらしい洞察)
O(exp(N))についていく富豪というのは、逆にCPUロードがあげたいがために一生懸命アプリを探している、
某京速なんとかな人たち?
Re:知っていて欲しいのはSQLの処理のされかたぐらい (スコア:0)
・スタック
知識として必須ですね。ヒープとの違いなどが特に。
・ポインタ
これも参照とほぼ同義なので理解する必要はある。
・ビット演算
Java5.0以前はorで定数渡すので知識として必須。
というわけで高級言語使いなら必要としない知識なら別のものを出すべきでしょう。
Re:旅行者の法則 (スコア:3, すばらしい洞察)
理解できるよう努力しますんでぜひとも公開してください。
Re:旅行者の法則 (スコア:1)
CISCのIA32をRISC的な処理単位の組み合わせに分解するという
一連の動作を表すために仮想的に設けている概念であって、
コアのアーキテクチャによって実は異なっていたり
するんじゃないか、という陰謀論は駄目かな?
ごめんなさい。
Re:旅行者の法則 (スコア:0)
Re:旅行者の法則 (スコア:1)
下のコメントのタイトルにもあるx86が筋が悪いというのはアセンブラの組みにくさだけじゃないわけで。
CISCとも言い難いx86アーキテクチャのまま進化させるにはこれしかなかったというか。