Компілятори - це корисні програми - вони перетворюють текст мови програмування в машинний код. Якщо мова програмування описує програмне забезпечення, яке просто стає компілятором .....
Компілятори також можуть створювати машинний код для інших архітектур. Наприклад, Apple компілює iOS за допомогою стійок серверів на базі Intel. Компілятору не потрібно запускати створений ним код ARM, просто запишіть його на диск.
Компілятор 2.0 повинен бути написаний на мові, який компілятор 1.0 може обробляти, але він, безумовно, може створювати компілятор 2.0 з новими функціями, такими як оптимізація. Потім ви можете перекомпілювати вихідний код за допомогою компілятора 2.0 і зробити кращу версію себе. Знову ж, компілятор не знає, що робить іншу версію себе.
Якщо ми підемо досить далеко в тумани часу, тоді ми дійдемо до того моменту, коли у нас немає компілятора - першої ітерації мови високого рівня. Тоді ми повинні дістати олівці та кодувати книги та написати першу в зборах. Як ми написали перший асемблер? Прямий введення машинного коду, ймовірно, на перфоровану паперову стрічку або перемикачі на передній панелі.