Iya dan tidak. Ya, skenario klasik adalah pengembang menggunakan kompiler untuk menghasilkan kode mesin dari kode sumber, dan kode mesin kemudian didistribusikan ke pengguna.
Ada yang beberapa pengecualian untuk ini meskipun. Pertama, banyak proyek open source didistribusikan terutama (atau bahkan secara eksklusif) dalam bentuk kode sumber, dan mengharapkan pengguna akhir untuk menginstalnya dengan mengetikkan beberapa perintah seperti make
dan kemudianmake intall
. Ini akan memanggil kompiler, tautan, dll., Untuk menghasilkan kode mesin dari kode sumber untuk komputer pengguna tersebut. Dalam kasus ini, bagaimanapun, proses membangun dan menginstal adalah (setidaknya dimaksudkan untuk menjadi) otomatis ke titik bahwa pengguna jarang membutuhkan banyak pengetahuan tentang hal itu di luar fakta bahwa jika mereka tidak pernah menginstal paket source-only code sebelumnya , manajer paket mereka biasanya akan mencantumkan beberapa paket "pengembangan" sebagai prasyarat untuk menginstal aplikasi yang benar-benar mereka pedulikan (meskipun beberapa masih melihat ini sebagai tidak ramah untuk pengguna akhir).
Pengecualian lain (yang telah disinggung, tetapi tidak dijelaskan dengan sangat baik dalam jawaban lain yang saya lihat) adalah kompiler just-in-time (JIT). Beberapa contoh kompiler JIT yang jelas adalah Microsoft Common Language Runtime (CLR) dan Java Virtual Machine (JVM). Dalam kasus ini, biasanya ada dua kompiler yang sepenuhnya terpisah yang terlibat dalam menerjemahkan kode sumber ke dalam kode mesin. Satu digunakan oleh pengembang. Namun, daripada menghasilkan kode mesin secara langsung, ini menghasilkan kode byte independen mesin. CLR / JVM kemudian menyertakan kompiler kedua , sepenuhnya terpisah dari yang pertama, yang mengubah kode byte tersebut ke kode mesin untuk komputer target.
Saya harus menambahkan bahwa kompiler kedua tidak sepenuhnya diperlukan. Versi awal JVM (misalnya) hanya menafsirkan kode byte alih-alih mengkompilasinya. Ini sering membawa penalti kinerja yang cukup serius, jadi JVM paling baru yang dimaksudkan untuk penggunaan produksi termasuk kompiler JIT.