OS or compilers first?

Pertanyaan yang cukup iseng dari seorang senior saya di Ilmu Komputer. Ya, pertanyaannya cukup sederhana dan tidak penting, yaitu, manakah yang lebih dulu ada, OS (sistem operasi) atau compiler?

Pertimbangannya adalah sebagai berikut, untuk membuat suatu sistem operasi, jelas diperlukan suatu compiler untuk menerjemahkan kode dalam bahasa pemrograman menjadi kode yang dapat diproses oleh komputer. Sebailknya, untuk membuat suatu compiler, diperlukan lingkungan yang mendukung untuk menuliskan kodenya, karena itu kita memerlukan sistem operasi (OS). Karena kelihatannya saling membutuhkan dan seperti infinite loop, maka cukup wajar jika ditanyakan, mana yang harus dibuat terlebih dahulu, OS atau compiler?

Hmm, kalau diperhatikan, pertanyaan ini mirip dengan pertanyaan yang cukup terkenal, mana yang lebih dulu ada, ayam atau telur?

Ternyata pertanyaan ini dijawab sendiri (dengan perkiraan) oleh sang penanya. Menurutnya, OS pertama kali (yang paling primitif) dibuat hanya dengan assembler (bahasa assembly), atau justru langsung dengan bahasa mesin. Setelah OS primitif itu jadi, barulah orang membuat compiler di atasnya. Setelah compiler itu jadi, barulah orang membuat OS yang lebih canggih lagi, dan seterusnya.

Mungkin muncul pertanyaan. OS pertama dengan assembly? Bukankah assembly juga memerlukan compiler? Jawabannya tidak. Assembly hanya membutuhkan sebuah assembler, dan assembler tidak sama dengan compiler, karena pekerjaan sebuah assembler hanyalah men-translating, tidak seperti compiler yang juga harus mem-parsing (yah, memang cukup membingungkan).

Yah, untung saja kita hidup di zaman yang sudah maju, di mana compiler bahasa pemrograman tingkat tinggi sudah banyak “bertebaran”. Kita tidak perlu lagi berepot-repot menggunakan assembly untuk memprogram komputer. Sulit dibayangkan, bagaimana kehebatan para ahli komputer zaman dahulu dalam merancang sistem operasi atau compiler pertama kali.

Kalau kita mau lebih iseng, masih banyak pertanyaan yang bisa dibuat. Bagaimana orang pertama kali membuat assembler? Bagaimana komputer dapat mengerti kode dalam bahasa mesin? Apakah ada hubungannya dengan Mesin Turing?

Ya, memang pertanyaan-pertanyaan yang sangat iseng, dan hanya bagi mereka yang benar-benar iseng dan tidak ada pekerjaan =D

Diskusi asli dapat dilihat di sini.