Penjelajahan Assembly: Kejam, Indah, dan Jalan Menuju Kecerdasan Buatan yang Lebih Baik

Rollercoaster Tycoon bukanlah permainan komputer yang paling trendi pada tahun 1999. Tetapi jika Anda melihat lebih dalam di balik piksel-pikselnya—wahana-wahana yang reyot, kerumunan orang yang lapar, haus, dan muntah-muntah (serta para petugas kebersihan yang mengepel setelahnya)—sampai ke tingkat kode, Anda akan melihat suatu kerajinan tangan yang begitu obsesif hingga hampir terkesan gila. Chris Sawyer, satu-satunya pengembang game tersebut, menulis seluruhnya dalam bahasa assembly.

Bahasa pemrograman tertentu, seperti Python, Go, atau C++, disebut sebagai “high-level” karena cara kerjanya agak mirip dengan bahasa manusia, ditulis dalam perintah dan idiom yang mungkin cocok di sebuah pentas puisi. Secara umum, sebuah perangkat lunak seperti kompiler akan mengubahnya menjadi apa yang benar-benar dibaca mesin: blok-blok angka 1 dan 0 (atau mungkin heksadesimal) yang memberi tahu transistor sesungguhnya bagaimana harus bersikap. Assembly, yang paling rendah di antara bahasa “low-level”, memiliki korespondensi hampir satu lawan satu dengan bahasa asli mesin. Itu adalah pemrograman langsung ke logam. Membangun game komputer yang kompleks dari assembly ibarat menenun permadani dari bulu kucing yang rontok.

Mengapa ada orang yang melakukannya? Saya baru-baru ini bertanya kepada Sawyer, yang tinggal di tanah kelahirannya, Skotlandia. Dia mengatakan bahwa efisiensi adalah satu alasannya. Pada tahun 1990-an, alat-alat untuk pemrograman high-level belum lengkap. Kompiler sangat lambat. Debugger payah. Sawyer bisa menghindarinya dengan melakukan caranya sendiri dalam x86 assembly, bahasa yang umum digunakan untuk chip Intel.

Namun, kita berdua tahu itu bukan alasan sebenarnya. Alasan sebenarnya adalah cinta. Sebelum beralih ke roller coaster, Sawyer telah menulis game lain dalam assembly, Transport Tycoon. Game itu menempatkan pemain sebagai penanggung jawab jalan, stasiun kereta, landasan pacu, dan pelabuhan sebuah kota. Saya membayangkan Sawyer seperti penggemar model kereta api—meletakkan setiap ruas rel, menjahit rumput artifisial dengan tangan, setiap detail adalah pilihan dan pekerjaan. Untuk memindahkan piksel-piksel yang dibuat dengan hati-hati ini dari bitmap ke tampilan, Sawyer harus memancing keluar seluruh potensi chip. “RollerCoaster Tycoon terwujud hanya karena saya mengenal batas-batas dari apa yang mungkin,” katanya kepada saya.

MEMBACA  Retret Pasangan Saya dengan 3 Chatbot AI dan Manusia yang Mencintainya

Bekerja dalam batasan? Mungkin ini adalah ide yang asing di era kelimpahan digital ini, saat memanggil satu fungsi tunggal dalam algoritma pelatihan Kecerdasan Buatan dapat melibatkan sejuta GPU. Dengan assembly, Anda mendapatkan satu hal dan hanya satu hal, dan itu adalah hal yang Anda minta—bahkan, seperti yang telah dipelajari banyak programmer dengan susah payah, jika itu salah. Assembly brutal dan indah dengan caranya sendiri. Ia menuntut Anda untuk mengatakan persis apa yang Anda maksud.

Saya telah berbuat tidak adil kepada para pencipta assembly. Mereka menginginkan segalanya menjadi lebih mudah, bukan lebih sulit. Saya membayangkan mereka lelah memasukkan kartu plong dan membalik sakelar pada mesin leviathan steampunk mereka. Mungkin mereka memimpikan dunia seperti kita, di mana komputer dapat melakukan begitu banyak hal dengan panduan yang sangat minimal.