Pernyataan terbaru Martin Fowler bahwa Large Language Model merepresentasikan perubahan fundamental dalam abstraksi pemrograman telah memicu perdebatan sengit di kalangan developer. Meskipun Fowler membandingkan dampak LLM dengan transisi dari bahasa assembly ke bahasa pemrograman tingkat tinggi, komunitas masih terbagi dalam menilai apakah ini merepresentasikan abstraksi sejati atau hanya otomatisasi tingkat lanjut.
Perbandingan Evolusi Bahasa Pemrograman:
- Assembly ke Bahasa Tingkat Tinggi: Memperkenalkan pernyataan, kondisional, iterasi, variabel bernama
- Keterbatasan Awal: Fortran IV tidak memiliki klausa ELSE, memerlukan konvensi penamaan variabel yang spesifik
- Perbaikan Modern: Struktur blok, pemrograman fungsional, tetapi model komunikasi fundamental yang sama
- Perbedaan LLM: Memperkenalkan abstraksi non-deterministik bersamaan dengan antarmuka tingkat yang lebih tinggi
Kontroversi Determinisme
Salah satu poin paling kontroversial dalam diskusi ini berpusat pada sifat non-deterministik LLM yang dipersepsikan. Banyak developer berargumen bahwa karakterisasi ini menyesatkan, dengan menunjukkan bahwa LLM dapat beroperasi secara deterministik ketika dikonfigurasi dengan benar. Dengan mengatur parameter temperature ke nol dan menggunakan seed generator angka acak yang tetap, developer dapat mencapai output yang konsisten di berbagai proses. Realitas teknis ini menantang premis utama Fowler bahwa pemrograman dengan LLM memerlukan penerimaan terhadap non-determinisme fundamental.
Perdebatan meluas melampaui spesifikasi teknis ke pertanyaan filosofis tentang apa yang merupakan pengembangan perangkat lunak yang dapat diandalkan. Beberapa developer mengungkapkan kekhawatiran tentang meninggalkan perilaku deterministik untuk manfaat yang tidak pasti, sementara yang lain berargumen bahwa non-determinisme tidak secara inheren bermasalah ketika melayani tujuan spesifik seperti meningkatkan akurasi atau performa.
Konfigurasi Determinisme LLM:
- Pengaturan temperature: 0 untuk output deterministik
- Seed RNG tetap: Diperlukan untuk hasil yang konsisten
- Versi model: Harus dipatok (contoh, gemma3n:e4b digest: 15cb39fd9394)
- Hasil yang sama dapat dicapai di berbagai perangkat dan konfigurasi GPU yang berbeda
Keterbatasan Pemrograman Bahasa Natural
Komunitas telah mengangkat kekhawatiran signifikan tentang penggunaan bahasa natural sebagai antarmuka pemrograman, dengan banyak yang merujuk kritik klasik Edsger Dijkstra tentang pemrograman bahasa natural dari beberapa dekade lalu. Isu inti tetap tidak berubah: bahasa natural kekurangan presisi yang diperlukan untuk pengembangan perangkat lunak yang dapat diandalkan. Tidak seperti bahasa pemrograman formal di mana setiap istilah memiliki makna yang spesifik dan tidak ambigu, bahasa natural bergantung pada konteks dan interpretasi.
Yang terlewatkan oleh banyak orang dan disorot dalam artikel adalah sebagai berikut: bahwa tidak ada cara untuk 'presisi' dengan bahasa natural. 'Definisi operasional' dari presisi melibatkan formalisme.
Keterbatasan ini menjadi sangat jelas dalam lingkungan tim di mana miskomunikasi sudah umum terjadi di antara para ahli yang mendiskusikan perubahan perangkat lunak. Banyak developer melaporkan bahwa bahasa terstruktur tetap menjadi cara paling efektif untuk menghindari kesalahpahaman dan memastikan implementasi yang akurat.
Abstraksi Versus Otomatisasi
Ketidaksepakatan fundamental telah muncul tentang apakah LLM merepresentasikan abstraksi sejati atau otomatisasi canggih. Kritikus berargumen bahwa abstraksi sejati memerlukan semantik yang jelas dan detail implementasi yang presisi, yang saat ini tidak dimiliki LLM. Mereka berpendapat bahwa yang membuat orang tertarik dengan LLM adalah terutama aspek otomatisasi daripada bentuk abstraksi baru apa pun.
Perbedaan ini penting karena abstraksi pemrograman tradisional membangun satu sama lain dengan cara yang dapat diprediksi, memungkinkan developer untuk menciptakan sistem perangkat lunak yang dapat diandalkan. LLM, sebaliknya, beroperasi lebih seperti mesin pencari yang menghasilkan respons berdasarkan pola data pelatihan, tanpa perlu memahami konsep yang mendasari atau mempertahankan konsistensi di berbagai query yang serupa.
Implikasi Masa Depan untuk Pengembangan Perangkat Lunak
Meskipun ada kritik, beberapa developer melihat potensi dalam LLM untuk pengembangan perangkat lunak, terutama jika teknologi berkembang melampaui generasi teks sederhana. Proposal termasuk melatih model pada proses kompilasi kode, jejak eksekusi, dan spesifikasi formal untuk menciptakan sistem yang memahami bukan hanya seperti apa tampilan kode, tetapi apa yang sebenarnya dilakukannya.
Diskusi juga menyentuh apakah LLM harus menghasilkan kode tingkat tinggi atau langsung melompat ke generasi bytecode. Sebagian besar developer lebih memilih mempertahankan kode yang dapat dibaca manusia untuk tujuan review dan debugging, meskipun beberapa membayangkan masa depan di mana bahasa natural langsung menghasilkan program yang dapat dieksekusi.
Perdebatan pada akhirnya mencerminkan pertanyaan yang lebih luas tentang masa depan pemrograman dan apakah kenyamanan antarmuka bahasa natural membenarkan trade-off dalam presisi dan keandalan yang secara tradisional telah mendefinisikan pengembangan perangkat lunak.
Referensi: LLMs bring new nature of abstraction