2020-08-02

プログラムというものが分からない

以下、プログラミングは出来ない俺の認識が間違っている場所があったら教えて下さい。あと、疑問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が正しいのであれば、(サポートするファイル形式問題などを置いておけば)windowsmacは現時点では同じCPUを使っているのだから、同じコンパイラコンパイルしたソフトwindowsでもmacでも動くのではないか

b. たまに『コンパイラを書いて』と言っている人がいるが、そんなに簡単に書けるものなのか?

  • 乞食は電子の藻屑になれ

  • 疑問a. 基本的にコンパイラはOSのシステムコールを呼び出すようにコンパイルを行う システムコールはOSごとに非互換だから、コンパイル後のバイナリをWindowsからMacに持って行っても動...

  • 同じCPUを使っている場合 動かなくはない。ただそんなもん 車にはガソリン入れれば動く みたいな ハイオクって知ってる?とかそういうのに近い 基本は純正だし なんらかの 変...

    • コンパイラというのは同じくくるまでいえば 100万円から 1億以上もあるというように どこまででも上はあるだろうが 初歩的なものであれば 大学などでも 教えていたりす...

  • b. 難しさは言語設計による 例えばbrainfuckコンパイラならコンパイラの知識は大して必要ない それよりELFとかPE32みたいな実行ファイルフォーマットやローダやリンカの知識の方が大きな...

  • あかん コンパイラとかアセンブラとか、 某アニメーターのマンガしか思い浮かばんやで(ワイ老害増田)

  • 疑問aの答え。 CPUしか考えないと動きそうに思えるけど、実際のプログラムには、 画面出力機能、キーボード/マウス入力機能辺りが不可欠になるでしょう? Windowsは画面出力に メモリ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん