どのようなコードをコンパイルすると


コンピュータは理解できるmachine code , はlow-level programming language* , 一般的に数字で構成されています.
人々が話す時の大部分machine code , 彼らはbinary code** (ベース2の数値システム- 1か0のいずれか).それで、我々はマシンコードがsequences of ones and zeros . 以下にバイナリコードの断片があります:
01101000 01100101 01101100 01101100 01101111 
00100000 01110111 01101111 01110010 01101100 
我々はコンピュータと共謀する必要があるので、そうするためには、彼らの言語を話す必要があります.でも書くことmachine code 非常に非実用的であるので、我々は我々自身の言語に似ている言語を考え出さなければなりませんでした.我々はこれらの言語を呼び出すhigh-level programming languages . いくつかの例は次のとおりです.Python、Ruby、C CHERHERまたはJavaです.
現在、問題はコンピュータがこれらの言語を直接理解していないということですtranslator それはコンピュータに我々の指示を説明することができます.これがcompilers and interpreters*** 生まれた.それらはプログラムですtranslate 高水準言語を使ってコードをマシンコードに書くコード.Compiling 私たちがコードを書き終えた後にcompiler (プログラムは)私たちのコードを取り、それを見て、使用されるプログラミング言語の規則をコード化していることを確認します(構文エラーをチェックします).誤りが見つからないならば、コードは効果的に機械コードに翻訳されることができて、コンパイルされたコードを含んでいるファイルが生成されます.
人々がコードを言うのを聞くdoesn't compile . これは、コードをチェックしている間、コンパイラがエラーを見つけ、マシンコードへの変換が成功しなかったことを意味します.通常、プログラマはコードをデバッグするのを助けるいくつかのエラーメッセージを見るでしょう.すべてのエラーが修正された後のみ、コードがコンパイルされます.
重要
コードがコンパイルされるからといって、プログラムが機能しているわけではない.これはコンパイラが論理的エラーをキャッチできないためです.それは逆直観的に聞こえるかもしれませんが、文法的な誤りやタイポなしで英語のテキストを書くようにそれについて考えるので、語は彼ら自身で正しいです、しかし、一緒に読むとき、彼らは意味をなしません.
(*)低レベルプログラム言語はコンピュータの命令セットに近い言語です.命令セットは、プロセッサが理解する命令のセットです.
(**)マシンコードは16進数のような他の数値形式で表現することができます.これらのフォーマットは人間によって読みやすいです、しかし、コンピュータはそれらを理解することができないので、結局、彼らは二進法に変換されます.
(**)インタプリタはソースコードをマシンコードに翻訳するのにも使われますが、コンパイラとは異なります.