はてなキーワード: コンパイラとは
例えばbrainfuckコンパイラならコンパイラの知識は大して必要ない
それよりELFとかPE32みたいな実行ファイルフォーマットやローダやリンカの知識の方が大きなウェイトを占めるだろう
はて、難しさはどんなもんだろうか
コンパイラというのは同じくくるまでいえば 100万円から 1億以上もあるというように どこまででも上はあるだろうが 初歩的なものであれば 大学などでも 教えていたりするように 簡単なものには含まれる
以下、プログラミングは出来ない俺の認識が間違っている場所があったら教えて下さい。あと、疑問2つを教えて下さい。
【俺の認識】
1. コンピューター(というかCPU)が実行する命令は【機械語】で書かれている。たとえばx86CPUの場合、0x04ならば『imm8をALに加算する』命令、0x90ならば『何もしない』などである。
2. 流石に機械語のままでは人間がプログラムするには不便なので、機械語をそのまま人間にも意味が分かるように1対1対応で書き直した【アセンブラ言語】というのがある。0x04ならば『ADD AL, imm8 』、0x90ならば『NOP』と表記される。
3. アセンブラ言語のように機械語と1対1対応している言語を【低級言語/低水準言語】と言う(この呼び方、4で書く高級言語が出来てから生まれたレトロニムか?)
4. アセンブラのままでプログラムするのも困難である場合が多いので、機械語と1対1対応していないプログラミング言語もある。このような言語を【高級言語/高水準言語】と言う。
5. 高級言語で書かれたものはそのままではコンピューターには実行できないので、【コンパイラ】というソフトによって機械語に変換している。
6. 高級言語で書かれた状態を【ソースコード】と言う。このソースコードをx86用のコンパイラでコンパイルすればx86で動くソフトになり、SPARC向けにコンパイルすればSPARCで、PowerPC向けにコンパイルすればPowerPCで動くソフトになる。
【疑問】
a. 認識6が正しいのであれば、(サポートするファイル形式の問題などを置いておけば)windowsとmacは現時点では同じCPUを使っているのだから、同じコンパイラでコンパイルしたソフトはwindowsでもmacでも動くのではないか?
ちょっとちがうけど
Dの音をこうだしたいから
バイオリン右に
あと、こうして こうして
みたいな話はある
IntelのCore i7ようとCore i5ようとXeonようではそもそもコンパイラが吐き出すコードも変えることはできるが、
積んでいる命令セットの違いごとにアセンブラを変えておくことができる
それをC++から呼び分けていく いまJavaのバイトコードを勉強している別の言語では1ど作ったつぎはJava シンプルな構造のVM
Googleと同じことをすればいい。ARTと同じものをつくればいい。ここは規模があまり大きくないから ひとりで 勉強がてらつくれる おもしろい でも ひとりでやった実例が ふえていくと
みんなにも できるんだ という自信が増える
ようやく 人数がそろってきている 層が あつくなっている
Qiitaで下らない記事を見つけたとき、その投稿者のプロフィールを見てみると、高確率で他も下らない記事ばっか書いている。
しかも、そいつらの記事を書くスピードは早い。息するゴミ製造機である。
初学者が学習メモを投稿しているのではなく、当の本人は彼なりの「理解」と「拘り」に基づいて書いていることが伝わってくる。だから、余計に痛々しい。
目立つゴミ記事の特徴は、とにかく実質的に何も説明していないこと。そして、キーワードとキーワードをつないで、技術的なトレンドを把握したような気になっていることだ。
たとえば、明らかにCPUやコンパイラの仕組み、アセンブリ等の知識のない人たちが、「コンピュータは二進法で動いている」みたいな表面だけの全く内容のない記事を量産している。
もちろん「まだ学習途中で、大雑把な仕組みは知っていますが、詳細は分かりません。より詳しく知りたい人はパタヘネとか読んで下さい」とでも言っているなら、まだ好感が持てる。
しかし、ゴミ記事は内容を説明せずに、とにかくたとえ話や関連キーワードの羅列に走る。書いている本人にとっては、それこそがコンピュータの技術を勉強することなのだという気迫と拘りだけは伝わる。それだけに、傍から見るとすごくイタい。
これは検索エンジンのしくみ上仕方ないのだが、そういう記事はSEO効果がめちゃくちゃ高い。何せ、人が検索するようなキーワードが散りばめられているし、馬鹿でも読めるので多くの人がアクセスするから。だから余計に目立つ。本当に迷惑。
こういうのは現実にもいて、色々知っててすげえなあと思って実際会ってみたら、バブルソートとクイックソートの計算量の違いも説明できない人だったみたいなことが幾度となくある。
もう、こういうのやめませんか?誰の得にもなってない。
アメリカの掲示板でC++がCと違うものだと言う人が増えた という投書があった
まぁ 拳銃を持てない国に言われてもな って 返しておいた
ちょっとオプションが付いているC というふうにはC++という文字からは わからない といわれると まぁ しょうがない
Objective-C といわれると Objectiveという機能が 追加されたCなんだろうなぁと思う
C言語の型は原則 コンパイル時決定なんだが実行時決定などを使いたい といわれると
そりゃRuntime-Cとか なんかひとことCにつけたほうが売れるだろう
なぁ
それにともない、いわゆるプログラマーも、いわゆるデザイン系の知識というものが必要と言われるようになってきた。
いらないといわれれば、サーバ系を中心として、CUI時代の知識でも十分
難しいところではあるが、色についても各色8Bitという時代から各色10Bit 40Bit colorの時代に突入している。
そりゃそうだわな。誰が見ても、コンピューターの色
まぁ 廉価版
それがいつの間にか48Bitの時代 そこそこ見られるようになっている。
リクエストも増えてくる
われわれにはCanonの色づくり Nikonの色づくり Sonyの色づくりというものがあるんだ。
ということまでで十分。それ以上はしらなくていいという世界。
一般的にはワークスがやっていて、市販品ではない技術が コンパイラ技術の発展でデフォルトライブラリに含まれ始めた
金銭的には思うことはあるが、それはマネージャーが考えれば良い。技術屋は考慮こそするが、そこまで考えることではない。
C++11がC++2Aということで10年の歴史を経て安定気に入り採用が増えてきたことが1つの少佐であろう.
実用に十分な性能があるから、これまで個別のメーカアプリの機能だったものをデフォルトライブラリの範疇と考えて良いと思う。
ま、車で言うところの3No.アプリが増えている。