コンパイラにおける最適化とは?
プログラミングの学習をしているとコンパイラにおける最適化が....
なんて言葉を耳にします。まずコンパイラ最適化うんぬんの前に
コンパイラってなんぞや!? ってなりますよね
コンパイラとは
コンパイラとは、人間が組んだプログラムを機械が認識できる形式に変換するソフトウェアのことです。
ピンと来ない方もいると思うので例としてあげると
public class Commander { public void walk(double distance) => _queue.Enqueue(Command.Walk(distance)); public void turn(double angle) => _queue.Enqueue(Command.Turn(angle)); public void speed(double speedDotPerSecond) => _queue.Enqueue(Command.Speed(speedDotPerSecond)); public void clear() => _queue.Enqueue(Command.Clear()); }
知らない方は分からないと思いますがこれはC#という人間が組んだプログラミング言語です
コードを知らないと一見訳が分かりませんがこれでも英語表記にされていて、
人間がコードを組みやすいように機械言語を変換したものになっています。
そのため、これをコンピューターはこのままでは読み取ることができません。
機械言語は数字の0と1だけを使ってあらわしたものになります。
00010101110111011011011011010101101011011010101010
↑こんな感じ
このように人間が組んだコードをコンパイラにかけて機械言語に変換することを
コンパイルというのです。
ちなみに、このコンパイルをしてできたコードのことをオブジェクトコードと、 変換される前のコードをソースコードと呼びます。
コンパイラにおける最適化とは?
では、コンパイラにおける最適化とは何なのか?
それは、コンパイラの作業をコンピューターがスムーズに行えるように
プログラムを調整することを指します
じゃあ、結局のところ何が言いたいのか。要するに、
ソースコードを組んだらコンパイルして、オブジェクトコードにしておいてくださいって
ことが言いたかったんですね。
