「プログラミング/共通知識」の版間の差分
削除された内容 追加された内容
→コマンドラインと慣れ親しむ: macOS 10.15 Catalina(2019) からディフォルログインシェルが、それまでの bash から zsh に変わった。 タグ: 2017年版ソースエディター |
タグ: 2017年版ソースエディター |
||
139 行
=== コンパイル ===
ソースコードを予めに機械語(ネイティブコード)に翻訳し、機械語のファイルを実行するという方法もあります。
プログラムのソースコードコードを機械語に変換することを、'''[[W:コンパイル|コンパイル]]'''と言います。 コンパイルするためのソフトウェアのことを'''[[W:コンパイラ|コンパイラ]]'''といいます。 言語処理系の主要な実装がコンパイ また、[[W:実行時コンパイラ|実行時コンパイラ]](JIT; Just-In-Time Compiler)と コンパイル型言語は
* [[Fortran]]
* [[COBOL]]
* [[C言語]]
* [[C++]]
* [[
などがあります。
コンパイル型言語では、ソースコードが書かれたファイルと、実行ファイルとは、別のファイルです。
そのためソースコードを変更してもコンパイルしなければ変更が反映されません。
コンパイル型言語の実行ファイルは、機械語で書かれています<ref>UCSD-PascalのP-Codeや、JavaのByte-codeの様な中間コードを生成し、中間コード・インタープリタが実行する言語処理系もあります。</ref>。
コンパイル型言語のプログラムの実行では、機械語で書かれた実行ファイルをそのまま実行するので処理が高速です。
実行ファイルは、それぞれのハードウェアやオペレーティング・システムに合わせた
Windowsをターゲットにした実行ファイルをGNU/Linuxにコピーしても実行できません<ref>同じハードウェアでも異なったOSで相互に実行ファイルが実行できない理由は、いくつかありますが、実行ファイルの形式の違いとOSの提供するシステムコールの違いが主なもので、この2つを克服した[[W:Wine|Wine]](GNU/LinuxでWindowsの実行ファイルを実行可能にする環境)や[[W:Windows Subsystem for GNU/Linux|WSL]](WindowsでGNU/Linuxの実行ファイルを実行可能にする環境)では異なったOSの実行ファイルの実行を実現しています。</ref>。
実行ファイルから元々のソースコードを取り出すこと ('''[[W:逆コンパイラ|デコンパイル]]''') は一般に困難です。
機械語にはそのハードウェア
機械語に変換された実行ファイルは、配布するプログラムのソースコードを秘
プログラムのコードをコンパイルしたファイルを実行ファイルにまとめる前のファイルを'''オブジェクトファイル'''言います。
(コンパイル) (リンク)
ソースコード1 ⇒ オブジェクトファイル1 ⇒ 実行ファイル
ソースコード2 ⇒ オブジェクトファイル2 ↑
: ↑
ソースコードn ⇒ オブジェクトファイルn ↑
という流れになります。
{{See also|w:機械語}}
|