Kuliah penerima penghargaan Turing Award terkenal Edsger Dijkstra tahun 1972 berjudul The Humble Programmer terus memicu diskusi sengit di kalangan developer, dengan banyak yang menganggap peringatannya tentang kompleksitas pemrograman sangat relevan dengan tantangan pengembangan perangkat lunak saat ini. Pengamatan ilmuwan komputer legendaris ini tentang kompleksitas perangkat keras, desain bahasa, dan disiplin profesional tampaknya telah memprediksi banyak perjuangan yang dihadapi programmer modern setiap hari.
Kompleksitas Perangkat Keras Menciptakan Masalah Baru Alih-alih Menyelesaikan Masalah Lama
Pengamatan Dijkstra bahwa industri elektronik tidak menyelesaikan satu masalah pun, melainkan hanya menciptakannya, sangat beresonansi dengan developer saat ini. Komunitas menunjuk hierarki memori modern sebagai contoh sempurna - sementara kita sekarang memiliki cache L1 yang sangat cepat berjalan pada kecepatan nanodetik, kita juga berurusan dengan penyimpanan dingin yang dapat memakan waktu berhari-hari untuk diakses. Rentang perbedaan latensi yang ekstrem ini membuat optimisasi menjadi lebih kritis dari sebelumnya.
Revolusi multi-core telah menambahkan lapisan kompleksitas lain yang tidak dapat sepenuhnya diantisipasi oleh Dijkstra . Developer modern harus terus-menerus memikirkan tentang thread contention dan lokalitas memori untuk mencapai performa yang baik. Beberapa developer menganjurkan untuk selalu mengingat suhu rata-rata cache L1, dengan berargumen bahwa jika Anda dapat menjaga working set tetap hangat di cache L1, sebagian besar masalah performa lainnya menjadi sekunder.
Rentang Latensi Hierarki Memori (Sistem Modern)
- Cache L1: Waktu akses dalam hitungan nanodetik
- Penyimpanan Dingin/Tape: Waktu akses hingga 24 jam
- Rentang perbedaan latensi ekstrem: 6+ tingkat besaran
Desain Bahasa Pemrograman Masih Berjuang dengan Kompleksitas Baroque
Kritik Dijkstra terhadap bahasa pemrograman yang terlalu kompleks seperti PL/I, yang ia bandingkan dengan menerbangkan pesawat dengan 700 tombol, sakelar, dan pegangan, menemukan target baru dalam lanskap pengembangan saat ini. Diskusi komunitas mengungkapkan frustrasi serupa dengan bahasa modern yang terus menambahkan fitur alih-alih fokus pada kesederhanaan dan kejelasan.
Perdebatan meluas ke bahasa populer seperti Java dan C++, dengan developer mencatat bagaimana bahasa-bahasa ini terus mengakumulasi fitur dan alat baru, menciptakan apa yang disebut beberapa orang sebagai monster baroque. Ini mencerminkan kekhawatiran Dijkstra tentang bahasa yang memprioritaskan kelengkapan fitur daripada kemampuan pengelolaan intelektual.
Bahasa Pemrograman yang Disebutkan dalam Konteks Sejarah
- FORTRAN: Dikritik sebagai kendaraan pemikiran yang sudah ketinggalan zaman (1972)
- LISP: "Cara paling cerdas untuk menyalahgunakan komputer"
- ALGOL 60: Dipuji karena definisi yang tidak bergantung pada implementasi
- PL/I: Dikritik sebagai "monster barok" yang terlalu kompleks
Metode Formal dan Pengembangan Berbasis Bukti Mendapat Relevansi Baru
Salah satu ide paling progresif Dijkstra adalah mengharuskan programmer membuktikan bahwa loop mereka berakhir dan mempertahankan invarian yang tepat. Meskipun ini tampak tidak praktis pada tahun 1972, alat modern seperti Coq dan Dafny sekarang membuat verifikasi formal semacam itu mungkin dilakukan di tingkat compiler.
Komunitas melihat potensi kebangkitan metode formal, terutama dengan bantuan AI yang membuat biaya formalisasi dan pembuktian menjadi jauh lebih rendah. Beberapa developer percaya bahwa kualitas kode yang dapat dibuktikan bisa menjadi pembeda kunci saat kode yang dihasilkan AI menjadi lebih umum, membuat program yang diverifikasi secara formal menonjol di lautan perangkat lunak yang dihasilkan secara otomatis.
Alat Verifikasi Formal Modern
- Coq : Menerapkan pembuktian terminasi loop
- Dafny : Pemeriksaan invarian di tingkat kompiler
- Keduanya mengorbankan kelengkapan Turing untuk kebenaran yang dapat dibuktikan
Perjuangan Abadi Antara Trik Pintar dan Kode yang Jelas
Dijkstra memperingatkan terhadap programmer yang puzzle-minded dan sangat menyukai trik pintar, sebaliknya menganjurkan kode yang jelas dan dapat dipahami. Ketegangan ini bertahan hingga hari ini, terutama dengan compiler Just-In-Time (JIT) yang dapat mengoptimalkan kode kompleks saat runtime.
Tetapi mereka tidak dapat menjelaskan mengapa rekan kerja mereka yang malang yang harus membaca dan memelihara kode tidak layak mendapat pertimbangan yang sama seperti mesin!
Meskipun optimisasi JIT memungkinkan developer menulis kode yang lebih sederhana tanpa mengorbankan performa, beberapa programmer menggunakan ini sebagai alasan untuk menulis kode yang tidak perlu kompleks, dengan asumsi compiler akan memperbaiki inefisiensi mereka.
Disiplin Profesional Tetap Sama Pentingnya
Mungkin yang paling mencolok, seruan Dijkstra agar pemrograman menjadi profesi yang lebih disiplin terus beresonansi. Pengamatannya bahwa masyarakat menjadi tidak puas dengan kinerja programmer dan produk mereka pada tahun 1960-an terdengar familiar bagi siapa pun yang mengikuti perdebatan saat ini tentang kualitas dan keandalan perangkat lunak.
Komunitas mencatat bahwa meskipun telah mengalami kemajuan selama beberapa dekade, banyak tim masih mengejar output cepat daripada desain yang bersih, hanya untuk kemudian menemui tembok di kemudian hari dalam pengembangan. Ini menunjukkan bahwa pesan fundamental Dijkstra tentang perlunya disiplin intelektual dalam pemrograman tetap relevan hari ini seperti halnya lebih dari 50 tahun yang lalu.
Kuliah Dijkstra berfungsi sebagai dokumen sejarah dan komentar yang mengejutkan tentang tantangan yang dihadapi pengembangan perangkat lunak modern. Penekanannya pada kerendahan hati, disiplin, dan pemikiran yang jelas daripada trik pintar terus menawarkan panduan berharga bagi programmer saat ini yang menavigasi lanskap teknologi yang semakin kompleks.
Referensi: The Humble Programmer