はてなキーワード: アセンブリ言語とは
これは 物理学 Advent Calendar 2014 の記事です。
僕は blog を持っていないので はてな匿名ダイアリー をお借りします。
しばらく話すうちにおじさんが知りたいのは『ヒッグス粒子そのもの』ではなく
『なぜ研究者はヒッグス粒子発見に大騒ぎしたのか?』なのではないかと気が付きました。
研究者がヒッグス発見に大騒ぎした理由はあまり説明されてなかった気がします。(僕が見逃しただけかもしれません)
なのでちょっと書いてみようというのがこの記事です。今更な話ですみません。
床屋での世間話的ないいかげんな話です。あまり中身はありません。
普段はてなを見ている人なら全部知っている内容かもしれません。あまり期待しないで読んでください。
(あと間違いがあったらすみません)
これから物理の基礎理論が大発展する(かもしれない)からです。
場の理論を聞いたことはあるでしょうか? 量子力学を 相対論+多粒子系 に拡張したものです。
古典力学は量子力学の、量子力学は場の理論の、近似的な理論といえます。
Ruby が C言語で記述されているように、量子力学は(原理的には)場の理論で記述できるべきものです。
C言語が正しくて Ruby が「間違っている」という訳ではないように
場の理論が正しくて量子力学が「間違っている」訳ではありません。ただ、適用できる範囲が違うのです。
さて、量子力学や場の理論がプログラム言語だとしたら、コードは何でしょうか?
実は「ラグランジアン」と呼ばれているものがそれに相当します。
ややこしいのですが「ラグランジアン」も理論と呼ばれています。
素粒子理論の研究者が「理論を作る/改良する」と言ったら、それは大体ラグランジアンの改良を指しています。 (注[1])
素粒子理論の研究者は、世界のあらゆるものを記述できるラグランジアンをつくろうとしています。
[これ]が場の理論で書かれたラグランジアン、標準理論と呼ばれているものです。(ごめんね。良い画像が見つからなかった。)
僕たちの世界で現在わかっている ”ほとんど” 全てを説明することができます。
世界の全てを記述するコードがこんなにシンプルなんて結構びっくりでしょう? そんなことない?
ちなみに一番下の項がヒッグスです。
これまで研究者達は理論の予想と実験結果の違いをヒントに理論を修正してきました。
ところが困った事が起こりました。
実験結果と全部合うなら標準理論が完璧な理論なのか? ・・というとそうではありません。
多くの研究者が現在の標準理論はまだ不完全であると考えています。
まず重力がうまく扱えません。それどころか様々な理由から場の理論そのものが、より基礎的な理論の有効理論(近似的な理論)ではないかと今では考えられています。
理論は不完全なことが分かっているのに、修正するヒントがなくなってしまったという訳です。
そんなわけで標準理論はここ40年ほどあまり変わっていません。
こんな中、標準理論で唯一まだ発見されていないのがヒッグス粒子だったのです。
ヒッグス粒子が発見されてその質量が決まるだけでも大きなヒントになるというわけです。
それはようやく標準理論のバグ取りが可能になるから。実に40年ぶりに。
つまりヒッグス粒子は研究者にとって最後の希望とかそういう・・いや、最後でもないか。
まだLHCに発見してほしいものはいろいろあります。(超対称性粒子とか・・。)
[1] 場の理論や量子力学の修正ではなく、ラグランジアンの修正です。
皆さんも自分のつくったプログラムにバグがあったら C言語のバグではなく、まずは自分の書いたコードのバグを疑いますよね? つまりそういうことです。
物理学 Advent Calendar 2014 を立ち上げ管理してくださった id:tanaka733 さん、 id:aetos382 さんに感謝致します。
皆さんの記事を楽しませていただきました。飛び入り参加ですみません。
お目汚しすみませんでした。
メリークリスマス。良い夢を。
id:allthereiznika わかりやすかった。出来れば参考ページ・書籍も示してくれるともっと良かった。
一般向けの解説書は僕はよく知らないのですが
こんなのが出るみたいですね。目次を読む限り良さそうです。
Chapter2 が標準理論の破れの話ですが、どうも最近の話題が入っているようなのでちょっと差し引いて読んでください。
Chapter3 が標準理論の改良の話(超対称性理論etc) 。 それから上でちょっとでてきましたが、
「場の理論」自体がより基本的な理論の有効理論であると思われています。(より基本的な言語・・アセンブリ言語とでも例えるべきでしょうか?)
なぜ両方使うという選択肢がない。真の技術者はウェブ標準だろうがFlashだろうがネイティブだろうが、その場その場でユーザーの体験を最善にし、クライアントの要求を最高に満たすベストの技術を使う。JavaScriptかFlashかなんて動きさえすればユーザーには関係ないんだから。実際、HTML5スゲEEEEE!!!ってページにFlashタグのブクマが間違ってつけられたりしてるよ?(笑) ウェブ標準の崇高さなんてパンピーにはわからんのです。
そもそも分からないんだけど、HTML5が「投資」するほどたいしたもの? 誰もが基礎教養として身につけているはずの、これまでのHTML+CSS+JavaScriptの延長線上の技術でしょ。今まで普通にやってきたウェブ開発者ならすぐにキャッチアップできるはずだよ。
どうせHTML5の実装の普及には当分かかるし、その時点のブラウザ環境で使用可能なものをゆっくりまったりと導入していけばいいだけ。その意味ではいわゆる遅延評価学習で十分。あわてることはないです。どうせ皆使うことになるんだから。
一応言っておくと、いいものだと思いますよ、HTML5は。現段階で頑張って凝ったものを動かしておられるイノベーターの方々もたいしたものだと思います。敬意を。マリオやらグラディウスやらは著作権的にどーなのかと突っ込みたいが。
それはシナリオのひとつですよね。Googleの甲斐性次第では十分にあり得る。それと、ジョブズが翻意するというシナリオもありますよ。今までに散々あったことですが。どこかでそれをネタにしている記事があったと思いますが。
もしEdgeを見てそう思ったのなら、Flash CSを使って制作したことがありますか? Edgeを実際に使ってみましたか? と問いたい。
他にも、最低でも、
これらにきちんと答えられない人間にHTML5 vs Flashなど語る資格はないです。そもそも対立させる時点でわかってないなー ┐(´д`)┌ って感じなのだけど。
あとFlashへの投資が無駄になると思ってるようですが、俺はFlashは投資判断「Buy」継続だと見てますよ。たとえこのままiOSで動かずともね。AIRもあるし、ブラウザのプラグインとしてのFlashだけ見ていると考えを誤るよ。ブラウザのほうにしても、GPUアクセラレーションつきの3Dが真っ先に使用可能になるのはFlash。プレイヤーの普及が速いから、WebGLと異なり、今後1~2年内に実案件で使用可能になるでしょう。そういった面ではなおカッティングエッジな技術だよ。
まあ、プラットフォームや言語の選択は投機だから、どの銘柄が買いか売りかで紛糾するのはわかる。ただ、それなら分散投資だとか、インデックス投資という考え方もあるのでね。HTML5に惚れ込んで一点買いなんて若いエンジニアがいたら、それはもう相当危なっかしいなと、視野も相当狭くなるだろうなと危惧するよ。
というか、JavaだろうがC++だろうがObjective-CだろうがLLだろうがアセンブリ言語だろうが関数型言語だろうが、一度全部触ってみなよ。いいから。HTML5で手一杯なんてのでは話にならんですよ。
世の中には、どうしても「賢い人」と「あまり賢くない人達」人たちがいて、「あまり賢くない人達」は「賢い人」の足を引っ張るモノです。
「あまり賢くない人達」が自らの愚かさゆえ、人生を無為に過ごすのはある意味しかたがないことだと思いますが、問題なのはこれから賢くあろうとする未来ある若者達が、このような「あまり賢くない人達」に惑わされ、不幸に見舞われることであります。
日向さんはこのような未来ある若者のために、わざわざ時間を割いて素晴らしいエッセイを書きおこしてくれました。
http://www5.ocn.ne.jp/~seablue/res/ckp.html
けれども日向さんの文章は、あまりのレベル差故か、極力平易に書こうとはしているものの、それでも文章が高度すぎて、対象である「あまり賢くない人達」には今一歩言わんとしていることが伝わらないのでは、と感じました。
そこで私は、日向さんの文章の意味を極力損ねないまま、このエッセイを対象である「あまり賢くない人達」向けの言葉に翻訳することを試みました。
もちろん、訳者が至らないために、間違いや勘違い、あるいは校正の際の見落としなども あるかと思います。そのようなことがないように努力はいたしますが、 お気づきの点があれば冷静にご指摘いただければ幸いです。
この書籍については、さまざまなご意見がさまざまなところに書き込まれているようです。
まったく話題にもならないたくさんの本があり、また批評もされない多数の著者たちがいるなかで、 拙著または著者に関心を持っていただいたことにまずお礼を申し上げます。
いやぁ、人気者はつらいね。いつだって妬まれる。
本書については、書籍のはじめに「本書では、初歩のプログラミングの学習を終えて、 プログラマが実践的なプログラミングに臨む時に知っておかなければならない重要な事項をわかりやすく解説します。」 と明示してあるように、プログラミングの初心者を対象にしています。
具体的には、はじめてのプログラミング言語を勉強したか、これから何か言語を学ぼうとしている人、 ふたつめの言語を選ぼうとしているひと、あるいは、 「どうしてデータ型などというものがあるのだろう?」とか、「オブジェクトって、いったい何?」という 素朴な疑問を抱いている人を対象とした書籍です。
また、筆者の「常識」を読者に押しつけようとするものではなく、プログラミングの常識とは何かという ことについて考えるヒントにする本です(このことは書籍の中でも重ねて説明しています)。
この本は エキスパートの俺様が、初心者のために書いた本だ。初心者向けって所が重要な。ついでに世の中常識のないやつが多いから、プログラミングだけじゃなく常識まで教えてやる、そういう本でもあるな。そうそう、断っておくが俺がこの本で言っていることは「世の中の常識」な。だから、異論挟むヤツはそのまま「常識」のないやつってことになる。ここも重要だ。
プログラミングに限らず、対象によって説明の仕方、取り上げる範囲、そして「何が正しいか」は異なります。 身近な学校教育という場を考えてみても、小学生には「人はみな平等です」と教えます。 しかし、それは理想であって、実際に差別は存在し、したがって、教えている対象を考慮しなければ、 小学校で教えていることは嘘ばかりである、ということになります。 実際、大学生ならば、「実際には人は平等ではない」という前提にたって、社会問題などを考える必要があることは 誰にも異論のないことでしょう。
同様に、プログラミングでも、初歩のプログラミングの学習を終えた人と、 より高度なプログラミングをマスターした人を対象にするときでは、解説の範囲も表現もすべて異なります。
ところで、みんな平等というけどさ、愚民がいるのが現実なのよ。愚民がいるなら愚民向けに方便をつかわなくちゃいけない。大人ならわかるな。
本書について、文章の真意を理解しないで書き込みをされていることも多々あるようです。 たとえば、「プログラミング言語はどれがよいか?」というトピックの主眼は、本文で 「多人数を運ぶならバス、荷物をたくさん運ぶならトラック、少人数でドライブするなら小型セダンと、 目的に応じて最も良い自動車の種類が違う」と例をあげて説明していますが、プログラミング言語においても 用途やプログラマの経験あるいは環境等々によって適する言語は異なり、 特定の具体的な条件を示したうえでなければ「プログラミング言語はどれがよいか?」という質問自体がナンセンスである、 というのがこのトピックの主眼です。
したがって、それに関連する説明は、それぞれのプログラミング言語がおおよそどのように異なるかわかればよい という立場で書いており、具体的な解説についてはたとえば環境(近くにすぐに質問できる先輩がいる、 特定の言語の学習環境が際立って整っている、特定の種類の言語をすぐに使う必要がある、など)に よって異なるという前提で書かれています。
また、このトピックは、これから最初のプログラミング言語を選ぼうとしているか、 ふたつ目のプログラミング言語を選ぼうとしているような初心者で、 車にバスから軽自動車までいろいろな種類があるように、プログラミング言語にもまた さまざまな用途の言語があるということを認識していない読者を想定して解説しているものです。 すでに複数のプログラミング言語をマスターしている読者を対象としたときには、 自ずと表現も記述するレベルや範囲も変わってきます。
で、だ。俺の書いた本にケチつけるガキ共がいるんだけどさ、ヤツラ何? 技術的なことを書くと低能なヤツラじゃ理解できないから、車の話に喩えてやる。(略)つまりヤツラは、車にもいろいろ車種ってものがあることすら、わかんないバカってことだ。
そのほか、本書について間違いであるかのように指摘されているところの多くも、本書の意図を理解できれば、 指摘したことが逆に誤っていることに気づくでしょう。 (もちろん、筆者が至らないために、間違いや勘違い、あるいは校正の際の見落としなども あるかと思います。そのようなことがないように努力はいたしますが、 お気づきの点があれば冷静にご指摘いただければ幸いです。)
また、本書の批判の多くは、本書が初心者プログラマ向けに書かれていることをまったく無視した、 きわめて無責任な意見が多く、そのような書き込みが何の批判もなく行われていることは残念でなりません。 良識のある人たちは、想定読者レベルを無視した無責任な意見は無価値であると考え 頭から相手にしていないのでしょうが、初心者はそのような判断ができないので惑わされる可能性があるからです。
ようするに、愚民向けの本を読んでも「方便」を「方便」だって読み取れないバカ?ww 指摘(笑)を通して 自分の馬鹿さ加減を世界に発信しているってことに気づかないって超ウケるじゃん? この内容は間違ってます(キリッ みたいな?wwww ま、少しでも知性があれば、恥ずかしくてで出来ねえことだよな。
わかっているヤツは わざわざ DQN の相手をしたりせず鼻で笑うだけだ。しかしお前らひよっこは、こういう低レベルな扇動に惑わされるかもしれないな。気をつけろよ。
書籍の批評ということについて、ひとつ例を示して筆者の考えを明らかにしましょう。
B.W.カーニハン/D.M.リッチーが書いた「プログラミング言語C」という本があります。現在は第2版となり訂正版として出されていますが、 日本語翻訳初版から現在まで、プログラミング言語の本として名著のひとつとみなされてきました。
実際、私もC言語についてまだほとんど何も知らない日本語訳初版が出たときにこの本を一読して、 「Hello, world」の出力のしかたから始まり、徐々に高度な内容に導いてゆく書き方に自然となじんで、 まるで読み物を読むように一気に読了し、同時に、C言語とはどういうもので、何ができて、何ができないのかを理解しました。 日本語訳初版は間違いも多く、記述の仕方もプログラミング言語の書籍としては最良とはいえないものでしたが、 C言語についてまだほとんど何も知らない私にとって、まさに「プログラミング言語C」はとても良い本でした。 また、プログラミング言語の仕様という概念が今ほど確立していなかった当時、C言語のコンパイラを実装する(開発する) ようなレベルの人にも、「プログラミング言語C」はバイブルといってよいほど重要な本でした。
ところで、今、誰かが「プログラミング言語C」と同じようなスタイルでC++かJavaの本を きわめて丁寧に間違いもほとんどなく書きあげて私に献本してくれて私個人の率直な意見を求められたら、 それを読んできっと「冗長で退屈である」と答えるでしょう。 なぜなら、私はC++やJavaについて講義(授業や講演)をする程度にすでに知っているから、 「プログラミング言語C」のような書き方の本を改めて最初から読むのは苦痛にさえなりかねないからです。
しかし、その本について公開するレビューを書いてくれと頼まれたら、 「これからC++(またはJava)を学習する人にとってはとても良い本である」と推奨するでしょう。 なぜなら、まだ何も知らない人が、まるで読み物を読むように一気に読んでその言語を理解できれば、 それはとても素晴らしいことだからです。
読む人のレベル、その本の主眼とすることとその表現のしかた、本が出版されたときの状況などによって本の価値というものは異なり、 それが本というものです。
ヤツラにも解るように具体例を示すけれどさ、ストラウストラップ?ってヤツの 「プログラミング言語 C++」って本、冗長で退屈でダセェよな。内容のレベル低すぎるしさ。けど、どうしてもオレにレビューしてくれっていわれたら、まぁ「俺には必要ないけど良い本だぜ」って紹介してやるよ。だってバカどもにはちょうど良いじゃん。バカ向けの本はバカ向けってことを考慮して評価する。それが大人ってもんだ。
インターネットが普及して誰でも自由に発言できるようになったのは良いことですが 一部のお暇をもてあましている方々が、拙著に限らず、 さまざまな著作や著者に対して誹謗中傷に近い書き込みを匿名で行っているのが見受けられます。 このような状態が続けば、 誤解を受けることを承知の上で初心者向けにあえてやさしく解説するような著者は書く気をなくし、 どのようにでも解釈できる(あるいはすでに理解している人しか理解できないような)難解な 文章を書く一部のいわゆる権威だけが著者として残る結果となり、 出版文化や書店を含む出版界はますます疲弊し、いずれ現在のように多種多様な書籍が出版できなくります。
インターネットが出来てから、そんな大人の対応も出来ないウゼえガキが増えたよな。マジ ウゼェ。ったく、「間違っている」「正しくない」とか、ウゼェウゼェウゼェ!偉大なるオレ様のやる気が無くなったらどうしてくれるのか。これでオレが本を書かなくなったら人類の損失になるって事実、わかんねぇのかコイツらは。ほんっとカスだな。
どうか、初心者の方々は無責任な批判や的外れなレビューなどに惑わされずに、 まずは本を読んでみて(買わずに図書館で借りてでもかまいません)、自分自身で判断してくださるようお願いいたします。
まぁ、カスのことはほっといて、お前らは黙って俺の本を買っておけ(貧乏だったら図書館でもいいぜ。自治体に買わせろ)。普通に考えれば有象無象の匿名ブロガーより、本まで出してるエリートのオレの本の方が信頼できるってのは、ひよっこのお前らにだってわかるだろ。つべこべ言わず買えば幸せになれるってモンさ。
さて、無責任な批判や的外れなレビューを書き続けている人には、次のように申し上げておきます。
批判する人間にもし本当に能力があるのであれば、匿名で無責任な批判をする前に、 C++、Java、アセンブリ言語、JavaScriptのようなスクリプト言語、XMLやXAMLのような記述言語を 含めて、5種類上の言語で実際に動作するプログラムを作成してそのソースコードを広く一般に公開し、 他人の批判を受けてみてから、 自分で完璧な本を書いて出版社に持ち込んで出版してみてください。
そうすれば、著作、あるいは出版というものがどういうものか、少しはわかるでしょう。
あー、それと、バカどもに言っておく。オレ様は C++、Java、アセンブリ言語、JavaScriptのようなスクリプト言語、XML・XAML のよな記述言語 を含めた5種類以上の言語に精通した超絶スーパーエンジニアだ。ハッカーと言ってもいい。しかもコードを公開して完璧な本まで書いている、マジ パねぇ男だ。 マチュアーしてるんだよ。おめぇらなんて足元におよばねぇ。身の程を知れ。(関数型言語はマイナでどうでもいいから勉強しなくてもいいぜ。あ、でもオレの Scala の本は買えよな。)
もし、自らは何も創造しないで、単に無責任な批判や的外れなレビューを続けるなら、 そういう人は、いずれ何年かのちに(そのときまでボケずに、人間社会というものを学んで人間として少しは成長したとしたら) 自分がしてきたことが無意味であり、そのようなことだけに時間を費やした自分自身の人生そのものが 無価値であったことに必ず気づくはずです。しかし、その時になって謝罪していただく必要はまったくありません。
まー、オレ様は心が広いからバカがバカであることは責めないでやる。人間生まれついてのものはどうしようもねぇ。俺はどうしようもないことは責めない主義だ。でも、お前らが無価値なゴミクズであるってことだけは理解しとけよな。ゴミはゴミなりの人生がまってるさ。身の程を知って生きればオレは哀れみくらいはかけてやるぜ?
なお、著者はあらゆる書き込みに対していちいち反論することはできません。 また、一部の低俗な掲示板のようなものを読んだり書き込んだりするのは 時間の無駄なので、私に限らずほとんどの著者は、そのようなものに書き込むことはもちろん、 目を通すこともありませんのであしからず。
最後に言っておく。お前ら如きがオレ様に意見するなんて間違っている。なぜならオレ様はいつだって正しいからだ。そして、間違った意見などに反論を書くなんて無駄な時間はオレ様にはない。お前らはせいぜい便所で落書きに勤しむんだな。あばよ。
長い文章が読めない方のために、要点のまとめを作りました。
日向さんは、本当に素晴らしい技術力をお持ちで、その著書リストをご覧になれば皆様もその高い技術力をご納得いただけるかと思います。
http://www.amazon.co.jp/exec/obidos/search-handle-url?_encoding=UTF8&search-type=ss&index=books-jp&field-author=%E6%97%A5%E5%90%91%20%E4%BF%8A%E4%BA%8C
これだけの内容の濃い本を、こんなにも沢山発行していらっしゃるので、日向さんが新たに本を書い時、気がつけば参考文献リソース 一覧が 過去の自著ばかりになった――というエピソードだけでも、日向さんの凄さの一端が伝わるかと思います。
ですので皆様も
のような「匿名の愚か者」の世迷い言に惑わされないように、ご注意願います。解っている人から見れば、日向さんの著書は総じて評価が高い という事実は、「記名の賢者」であるdankogai氏のレビュー
をご覧になっていただければ、一目瞭然かと思います。(dankogai氏は同レビュー中で日向さんを「真に初心者向けに本を書ける希有の存在」と評しています)
なお、訳者はあらゆる書き込みに対していちいち反論することはできません。 また、一部の低俗な掲示板のような増田を読んだり書き込んだりするのは 時間の無駄なので、私に限らずほとんどの著者は、そのようなものに書き込むことはもちろん、 目を通すこともありませんのであしからず。
大学教育について話題になっているようですので、私が卒業した、大阪大学基礎工学部情報科学科について書いてみたいと思います。
大阪大学基礎工学部情報科学科は、昭和45年に最初に国立大学に設立された情報工学関連学科のうちの一つで、コンピュータサイエンスの分野では日本で最も古い歴史を持っている学科、ということになります。
情報科学科の特徴は、そのプログラミング実習の充実ぶりです。入学すると、まずPascalというプログラミング言語で構造化プログラミングを勉強することになります。次にアセンブリ言語であるCASLを勉強し、Pascalとアセンブリ言語を応用してC言語を勉強します。またその後、スクリプト言語であるPerl、関数型言語のML、オブジェクト指向言語としてJavaを学習します。
また、言語だけではなく、コンピュータサイエンスの基本であるアルゴリズムやデータ構造についても幅広く学ぶことができます。
全ての実習は課題が出され、実際にコードを書かなければいけません。例えばC言語の授業の最終的な課題は、「shのようなシェルプログラムを作成すること」でした。最終的には、「Pascal風の言語をCASLに変換するコンパイラを作成する」という課題に取り組むことになります。
大阪大学は全体的に単位の取得が厳しいことで知られていますが、情報科学科も例外ではありません。もしプログラミングをあまりしたことがないのであれば、遅くまで実習室にこもることになると思います。だけど、それは情報工学の世界で生きていくためには必要な知識なのです。
実習で勉強する言語は、Javaを除くとあまり現在使われている主流の言語とは言えないのですが、様々な言語を学ぶのは「プログラミング言語はそれぞれに違いがあり、それぞれに適した用途がある」ことを理解することに繋がります。また大学を卒業してから、新しい言語を学ぶ必要が出てきたとき、それに対応する能力を磨くことができます。
日本の大学で、ここまで実戦的なコンピュータに関する教育を行っている場所はあまりないのではないか、と思います。コンピュータがどのように動いているのか、内部原理までしっかり教えてくれます。卒業生の進路は、研究者というよりは、エンジニアとして開発の現場で働くことが多いようです。
大阪大学の入試問題は、東大や京大と違って特殊な問題はそれほど出ません。努力でなんとかなるレベルだと思います。
情報工学は新しい分野なので、大学院で研究するために必要な知識は他の分野ほど多くありません。このため情報工学科では、3年生の夏に大学院の試験を受けて合格すれば、学部を卒業しなくても4年目から大学院に進むことができます。この仕組みを活用すれば、5年で大学院を卒業できます。実際、学部生の1/4くらいはこの仕組みを活用しています。
もちろん、ここに書いたのは情報科学科の全てではありません。ネットにも他に情報がありますし、もし興味があったら、大学のオープンキャンパスに行ってみるのもよいと思います。
コンピュータの世界は変化が激しくて、エンジニアとして生きていくのはとても大変ですが、それでもいい、プログラマとして将来何かを作りたいんだという人であれば、ここはそのための力を与えてくれるはずです。進学先として検討してもらえたら幸いです。
別にいいんだけどさ、細かいところで突っ込む。
なんで、Cなん?w
いや俺もガチでやるならアセンブリ言語とか、Cをやる必要はあると思うよ。
だから工学部のおにーちゃんとかがはじめに習うのは分かるよ。
ハードも意識して書かれたものだし、いろんな意味で教育効果も高い。
でもさ、とりあえず食っていきたいって感じで学んだんだろ?
ベンチャーも含めて色々求人とか見てからその言語に決めたのか?
PerlかPHPかJavaが圧倒的に多いってその時に気付かなかったか?
いや、Cが悪いとは言わないんだ。
ただ、お前が「なんとなくC」を選んだ気がして、ならないんだ。
身体を壊したのはお気の毒だと思うけれども、ちょっとお前計画性なさすぎじゃね?ってオモッタ
うむ。よくわかる。アセンブリ言語のほうが好きだよ。
いろいろ間違ってるかもしれないが、力尽きた
分類 | 開発環境 | 開発言語 | メーカー | GPU | OS | API | 備考 | URL |
---|---|---|---|---|---|---|---|---|
シェーダ言語 | _ | Cg | NVIDIA | GeForce | Linux Windows Mac OS X XBOX | OpenGL DirectX 8/9 | C言語ライクな言語 グラフィック用途向け シェーダープログラムの最適化 | http://developer.nvidia.com/page/cg_main.html |
シェーダ言語 | _ | HLSL | Microsoft | GeForce RADEON | Windows | DirectX | グラフィック用途向け シェーダープログラムの最適化 | |
シェーダ言語 | _ | GLSL | OpenGL ARB | _ | _ | OpenGL | C言語ライクな言語 グラフィック用途向け シェーダープログラムの最適化 | |
GPGPU言語 | CUDA | C言語 | NVIDIA | GeForce GeForce 8100 mGPU以上 | Linux Windows XP/Vista Mac OS X | _ | 標準C言語 | http://www.nvidia.com/object/cuda_home.html |
GPGPU言語 | Stream SDK | Brook+ | AMD | RADEON R600世代以降 (=RADEON HD2400以降) | Linux Windows | OpenCL(対応予定) DirectX 11(対応予定) | C言語ライクな言語 | http://ati.amd.com/technology/streamcomputing/index.html |
GPGPU言語 | Brook for GPU | Brook | スタンフォード大学 | GeForce RADEON | Linux Windows | OpenGL DirectX 9 | C++ライクな言語 | |
GPGPU言語 | Close to Metal(CTM) | アセンブリ言語 | AMD | RADEON | _ | Stream SDKのCALに移行 | ||
GPGPU言語 | _ | Sh | _ | _ | _ | _ | C++ライクな言語 | |
GPGPU言語 | RapidMind | C++ | _ | GPU マルチコアCPU Cell | _ | _ | Shの商用化版 |
参考文献
CUDAを使う:tech.ckme.co.jp
http://tech.ckme.co.jp/cuda.shtml
【特集】超並列プロセサ - GeForceアーキテクチャとCUDAプログラミング
http://journal.mycom.co.jp/special/2008/cuda/menu.html
Windows環境は、Visual Studioを用いてmakeを行うようになっている
アセンブリ言語は構文が単純な(1行1命令)為、m4 のようなマクロプロセッサがあればとりあえずアセンブルの真似事はできるという点が重要な気がします。
(じっさいそういう本があったはず、SPARC Architecture, Assembly Language Programming, and C ISBN:9780130255969)
他のもっと高機能な言語は brace / begin-end で文脈自由言語になってたり、BASIC でさえ変数定義/抹消を管理しなければならないので。
追記:いやもちろんバイナリは吐けないよ、とか、ELFローダ作るのは大変だよ、とか(Linkers & Loaders ISBN:4274064379 でも
実用的なローダを作るようにはなってなかった)そういう話は沢山あるのですが
アセンブラやる前ってまず論理回路やって半加算機やって…って順序をたどってからやるだろ。普通。
なんのことかわからんのでぐぐってみた…あ、やっぱり普通はこういう話もしてくれるのね。
まだ一年次なのでこれからに期待する。
ええー
アセンブラやる前ってまず論理回路やって半加算機やって…って順序をたどってからやるだろ。普通。
単に授業の提供側がへったくそなだけなんじゃん?
プログラミングの楽しさや便利さはその別の言語を通じて学ぶことになるのだし、じゃあアセンブリ言語を学ぶ意義ってなによ。
昔は、必要に迫られて使ってたんですよ。
まあ、古典だと思ってくだされ。
プログラムを学ぶ上での一番根源的なものとしてアセンブリ言語が扱われることってわりと多いように思う。
便利なプログラムもコンピューター内ではこう処理されてます、とか。
だけど、その説明ってあんまり意味が無いよなとか思ったり。
add D1 D2 D3(アセンブリの命令でD1とD2の値を足してD3へ代入を意味)なんてもはや単なるプログラミング言語に過ぎない訳で、それCでも出来るよ、としか思わない。
はいはいアセンブリ不便ですね、ってなって結局主軸は別の言語に移す。
プログラミングの楽しさや便利さはその別の言語を通じて学ぶことになるのだし、じゃあアセンブリ言語を学ぶ意義ってなによ。
c=a+bって書けばコンピューターが計算してくれますっていうのと、add D1 D2 D3ってやればCPUが計算してくれますっていうのは感覚としては同じ。
本当に根源的なものまで突き詰めるのなら電気信号をどう解釈してどういう仕組みで演算して数を格納してっていうことをやってほしい。
アセンブリを根源扱いして崇めることにはなにか抵抗を感じる。
「私、プログラミング好きだよ」と言うプログラマに、好きな言語や開発ツールを聞いて「C/C++/C#」の名前があがってくるとげんなりする。心底がっかりする。C/C++/C#は俺も大好きだし、素晴らしい曲開発環境だと思うけども、臆面も無く低レベルプログラミング言語を挙げる人のほとんどが、それ以外の低レベルプログラミング言語を知らないんだもの。それどころか、IA-32の仕様書があることすら知らないし、興味が無い。せめて4004の基本構造くらい理解してから言ってもらえませんかね。
要するに「プログラミングを理解する知識の深い私」を演出するために、いちばんてっとり早くて優等生な回答なんですよね。C/C++/C#は。あと、アセンブリ言語や、機械語もこのカテゴリに入る。
確かにUnixを記述したC言語として鉄板なことは間違いないけど、本当にプログラミングが好きならもっとたくさんの名前が挙がってもいいと思う。もっと書けよ!インテル系以外も!最近のも!「C」「アセンブラ」「MMX」「SSE」「3DNow!」のコンボはもう飽きました。
1度だけ悲しきAdaという回答が返ってきて、土下座せんばかりに感動したことがあります。あ…この方、本当にプログラミングを趣味でやってるんだ…と思ったよ。
ごめんなさい、僕、嘘をつきました。