アカウント名:
パスワード:
・スタック・ポインタ(アドレス)・ビット演算正直どれも要らない。
ここでインテルの開発者が現われて、「昨今のCPUはマシン語からμopに変換するので、マシン語は相対的に高級言語だ。だからマシン語はμopを理解してから初めて云々」と言って欲しいですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
旅行者の法則 (スコア: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アーキテクチャのまま進化させるにはこれしかなかったというか。
Re:旅行者の法則 (スコア:3, すばらしい洞察)
時代によってCPUも変わるし、プログラム言語の流れだって変わってる。
なにで書くかなんて飾りです。それがご老人にはわからんのですよ。
むしろ、数多くのアルゴリズムを知識として蓄積したほうが、 よっぽど「書ける」プログラマの素質なんじゃないかなと思いますけどね。 実際に、指定された言語で書けるかどうかはわからないけど、 学習は早いと思いますよ。
Re:旅行者の法則 (スコア:0)
時代を感じます。
Re:旅行者の法則 (スコア:0)
まあ汎用機自体時代遅れの恐竜ですが。
不要とは言いませんが、知っているべきと決めつけるのも乱暴でしょう。
Re:旅行者の法則 (スコア:1, すばらしい洞察)
>>自分が機械語解るからって、先輩面しちゃいけませんね。
理屈になってないと思うんですが。
別に先輩面云々といいたいわけじゃないのでは?
何故にこれがスコア5なのか凄く疑問です。
まぁ、氏の言うこともちょっと走りすぎている感はありますけど、
人間が扱える最もローレベルの言語を知っておくのはメリットだと思います
(使うかどうかは別問題)。
というのも、個人的にはちょっと危機感を持っていて、
予めハードウェアでもソフトウェアでも機能が用意されていないと、
それは出来ないものだと決めてかかる輩が少なからず居るのです。
そういう輩には単純な8bit等の不自由なCPUで学んで欲しいとは思います。
そうすればプログラミングの考え方の基本が身につくのではないかと思います。
>>ショクレー先生に「コンピュータは半導体を自分で接合してから初めて『使える』と言うのです」と
>>説教してもらいたいです。あとこのコピペも。
これを引っ張り出すのも明後日の方向に場外ホームランかも......
Re:旅行者の法則 (スコア:3, すばらしい洞察)
「当然のことながら、プログラムというのは、マシン語を理解して初めて「書ける」と言うのです。」
なんて言うのは傲慢すぎ。それが先輩面ってこと。
それに自分で半導体作れなくてもコンピュータは使えるってことで。
モデレートに文句言うのはかっこ悪いよ。
Re:旅行者の法則 (スコア:1)
> 説教してもらいたいです。あとこのコピペも。
うーん。ソフトウェアの話題をしているところにハードウェアの話を
持ち出してくるところがなんともミラクルな筋違いで、いわゆる
KY ってやつですね。
KY であることとは関係ないですがこの人は多分、ゲーデル先生が
不完全性定理の証明の冒頭で論理的命題は有限個の自然数の順列と
して表現できることを述べていることも知らないのでしょう。
Re:旅行者の法則 (スコア:1)
プログラミング言語ヒエラルキー [geekpage.jp]
Re:旅行者の法則 (スコア:0)
先輩面されたとふてくされ耳をふさぐ前に、コンピューターの基礎的に
ついて学ぶのはいかがだろうか。
Fatalwedge 「プログラマーであれば確かにマシン語(レベルでの理解)
をしておいた方が望ましいと思うのですが」
オヤジ「自分が機械語解るからって、先輩面しちゃいけませんね。」
私「読書の秋なので。・・・」(←いまここ)
Re:旅行者の法則 (スコア:0)
私「日本語でおk」(←いまここ)