Kalau mau vibe coding, kenapa tidak pakai C saja?
(stephenramsay.net)- Vibe coding memang benar-benar bekerja dengan baik, tetapi karena menghasilkan kode yang bahkan tidak sepenuhnya dipahami oleh penulisnya sendiri, kesenangan hakiki dari pemrograman pun berkurang
- Semua bahasa pemrograman pada dasarnya adalah alat yang dirancang untuk kenyamanan manusia, bukan mesin, dan keunggulan seperti keamanan, abstraksi, serta keterbacaan pada akhirnya adalah struktur untuk membantu manusia berpikir
- Kalau begitu, apakah kode yang ditulis AI benar-benar masih memerlukan bahasa yang ramah manusia?, muncul usulan tentang VOPL (Vibe-Oriented Programming Language), yakni bahasa baru yang ramah mesin dan berpusat pada AI
- Bahasa ini dapat mencakup berbagai kemungkinan, seperti pseudocode yang dapat dieksekusi, perluasan dari literate programming, atau bentuk berbasis bahasa alami dengan tata bahasa tertentu
- Seperti pada masa awal stored-program computer, penolakan terhadap paradigma komputasi baru adalah sejarah yang terus berulang, dan vibe coding mungkin saja menjadi tahap berikutnya dalam arus tersebut
Ketegangan antara pemrograman dan vibe coding
- Bagi penulis, pemrograman adalah kesenangan, bukan pekerjaan, dan telah menjadi objek gairah sejak akhir 1990-an
- Ia telah mengajar pemrograman selama 25 tahun, dan hal yang paling ia banggakan adalah mengubah orang non-teknis menjadi programmer
- Saat memrogram, ia sangat menghargai kenikmatan memahami sendiri proses pemecahan masalah
- Sebaliknya, vibe coding adalah proses ketika AI menulis kode sebagai gantinya, sehingga penulis berada dalam kondisi tidak sepenuhnya memahami hasilnya
- Rasanya seperti sedang “cheating” (meski tidak sesederhana itu), namun lebih tepatnya menimbulkan rasa tidak nyaman yang sulit dijelaskan
- Ini terasa seperti merampas banyak kesenangan dari kegiatan coding itu sendiri
- Meski begitu, vibe coding bekerja cukup baik hingga mampu menghasilkan sistem nyata dengan kualitas tinggi
- Bukan sekadar menggantikan pencarian, tetapi juga menyelesaikan secara tepat masalah yang sebenarnya malas kita tangani sendiri
- AI lebih mahir daripada manusia dalam melacak error dan mengelola memori, dan penulis berulang kali terkejut oleh hasil yang muncul saat ia melemparkan ide program ke AI
Bahasa pada dasarnya adalah alat untuk manusia
- Seperti dalam Structure and Interpretation of Computer Programs karya Abelson & Sussman, bahasa pemrograman adalah sarana ekspresi untuk manusia
- Kode adalah “sesuatu yang dibaca manusia”, dan mesin tidak membutuhkan keterbacaan
- Semua bahasa pemrograman dirancang sebagai media untuk membantu cara berpikir dan berekspresi manusia
- Keamanan di Rust, abstraksi di C++, konkurensi di Go, semuanya adalah fitur untuk kenyamanan manusia, bukan mesin
- Pengelolaan memori, konkurensi, dan type safety hanyalah abstraksi untuk membantu struktur berpikir manusia
- Karena itu, di era ketika AI menulis kode, desain bahasa yang berpusat pada manusia bisa jadi menjadi tidak diperlukan
Jadi, apakah AI membutuhkan bahasa seperti ini? : makna dari usulan “lakukan vibe coding dengan C”
- Dalam vibe coding, manusia sudah menulis program dalam kondisi tidak sepenuhnya memahami seluruh kode
- Dalam situasi seperti ini, alasan untuk mempertahankan sintaks yang ramah manusia menjadi lebih lemah
- Alih-alih bahasa yang ramah manusia, bisa jadi lebih masuk akal untuk menulis langsung dengan bahasa yang ramah mesin (C atau assembly)
- AI dapat menangani undefined behavior, dealokasi memori, off-by-one, dan sebagainya di C dengan lebih presisi daripada manusia
- Seperti compiler yang lebih pandai melakukan optimisasi, AI juga menunjukkan kemampuan pengelolaan eksekusi kode yang lebih akurat daripada manusia
- Maka pertanyaannya: bukankah kita membutuhkan bahasa yang lebih cocok digunakan AI?
- Mengapa harus melakukan vibe coding dengan bahasa “berpusat pada manusia” seperti Python, Rust, atau C++?
Usulan VOPL (Vibe-Oriented Programming Language)
- Jika ada bahasa yang sejak awal diasumsikan untuk vibe coding, kita bisa membayangkan kemungkinan seperti berikut
- Bahasa tingkat sangat tinggi yang mendekati pseudocode yang dapat dieksekusi
- Seperti bentuk sempurna dari literate programming, manusia hanya menulis deskripsi dan AI menghasilkan kode mesin
- Struktur yang terlihat seperti bahasa alami, tetapi memiliki “ungkapan idiomatik” tertentu
- Konsep seperti ekspresi konkurensi berbasis istilah sehari-hari (slang) alih-alih istilah seperti
goroutine
- Arah yang dibayangkan adalah merancang sistem ekspresi yang berpusat pada mesin agar AI dapat memahami masalah secara tepat dan cepat menghasilkan kode yang dapat dijalankan
- Memang ada persoalan tentang bagaimana mengajarkan bahasa baru kepada AI, tetapi saat ini pun banyak developer sudah melemparkan pseudocode ke AI dan membuat kode lewat percakapan
Ada kemungkinan bahwa semacam VOPL sebenarnya sudah sedang dipelajari
Perubahan pada tindakan memrogram
- “Menulis kode dengan tangan” di masa depan mungkin akan diperlakukan dalam pendidikan vibe coder seperti pendidikan dasar ala Montessori
- Mirip seperti latihan menggambar tangan sebelum Photoshop, atau latihan menyelesaikan persamaan di atas kertas yang tetap bertahan di kurikulum meski sudah ada kalkulator elektronik
- Penolakan terhadap datangnya paradigma baru telah berulang kali terjadi dalam sejarah
- Contoh penolakan pada masa awal penerapan stored-program computer (ENIAC → EDVAC)
- Bahkan Grace Hopper pun pernah melawan kritik bahwa “mesin tidak bisa menulis perintah untuk mesin”
Pesan penutup
- Vibe coding sudah menjadi kenyataan, dan pengembangan di masa depan bisa menuntut perancangan ulang bahasa itu sendiri
- Dari era bahasa yang berpusat pada manusia, mungkin sudah saatnya secara serius membahas kemungkinan peralihan ke bahasa yang berpusat pada AI
“Same vibe, as the kids say.” — Kalau pakai istilah anak zaman sekarang, vibe-nya sama.
4 komentar
Kalau mau vibe coding, kenapa tidak pakai C saja?
Percaya bahwa saat ngoding dengan language model, mesin akan otomatis membuatkan ekspresi yang dekat dengan mesin secara ajaib itu pola pikir yang tamak.
Semakin banyak batasan, semakin baik ia bekerja di dalam batasan itu.
Meskipun
aiyang menulis kode, tanggung jawab atas layanan tetap harus ditanggung oleh pengembang. Rasanya sulit untuk bertanggung jawab atas kode yang bahkan tidak bisa dipahami oleh diri sendiri."Bahkan kalau melakukan vibe coding, sebaiknya pakai bahasa yang benar-benar dikuasai agar hasilnya tetap bisa ditinjau."
Ada kalimat yang sangat penting di komentar itu.
Opini Hacker News
Saya kembali merasa betapa beragamnya profesi pengembangan perangkat lunak
Saya mengerjakan backend, khususnya pengembangan API, dan hambatan produktivitas terbesar adalah kebanyakan orang tidak bisa mendefinisikan requirement dengan baik
Kalau ditanya ke PM, mereka menghindar, dan developer frontend menunggu backend memberikan API
Pada akhirnya, yang paling sulit bukan coding, melainkan proses berpikir untuk menemukan dan menafsirkan requirement
Pemrograman yang sesungguhnya adalah tindakan mewujudkan sistem yang kita rancang sendiri dan memberinya kehidupan
Kalau sekadar menulis kode di perusahaan lalu mengira itu adalah ‘Programming’, kesalahpahaman seperti ini memang bisa muncul
Namun, sepertinya dia tidak punya banyak pengalaman dalam pengembangan perangkat lunak komersial berskala besar
Prediksinya tentang “masa depan pemrograman” memang keren, tetapi dalam konteks industri ada kemungkinan agak terbatas
(Referensi: Tentang Stephen Ramsay)
Pada akhirnya yang penting adalah mindset dan seberapa besar paparan kita terhadap teknologi
LLM sangat meningkatkan produktivitas saya — terutama bagi saya yang punya cara berpikir arsitektural
Hal yang dulu butuh beberapa bulan sekarang bisa dibuat hanya dalam beberapa jam
Belakangan ini saya memakai LLM untuk menerjemahkan kode Shockwave Lingo lama ke bahasa modern demi memulihkan game legacy
Kalau vibe coding adalah masa depan, itu pada akhirnya mengandung asumsi bahwa AI belum sempurna
Begitu kita menetapkan kemampuan dan batas AI imajiner secara sewenang-wenang, pembahasannya sendiri jadi kabur
Biasanya harus rapat empat atau lima kali dengan para stakeholder dulu supaya jelas
Saya sudah mencoba vibe coding dengan C, dan saya tetap tidak suka C
AI lupa membebaskan memori seperti manusia, lalu memperbaikinya belakangan
Saat memakai Rust, jauh lebih menyenangkan, dan memahami ekosistem dependensi suatu bahasa adalah keahlian yang sesungguhnya
AI membantu menelusuri ‘pengetahuan buku’ seperti ini dengan cepat
Di C, kita harus mengecek satu per satu apakah memori sudah dibebaskan, tetapi di Rust hampir tidak ada kekhawatiran seperti itu
Bahkan kalau tetap melakukan vibe coding, saya rasa Rust jauh lebih baik karena punya pengaman di level bahasa
Fitur-fitur Python yang ramah manusia juga membantu AI
Sekarang berkat AI, membuat UI atau utilitas baru sendiri jadi lebih mudah,
dan mengimplementasikan hanya bagian yang butuh performa dalam C++ juga jadi sederhana
Kalau saya debug sendiri dengan GDB, mungkin butuh jauh lebih lama
Saya puas karena AI menangani bagian yang menyebalkan seperti pemrosesan string atau pengelolaan pointer
Kode yang dihasilkan compiler memang selalu lebih efisien, tetapi saya menjadikan kesalahan AI sebagai kesempatan belajar
Bahkan dengan LLM lokal, verifikasi seperti pembebasan memori bisa diotomatisasi
Baru-baru ini ada diskusi berjudul “Why AI Needs Hard Rules, Not Vibe Checks”
(tautan)
Alasan Rust cocok untuk vibe coding adalah karena fitur verifikasi gratis seperti jaminan tipe dan lifetime
Tanpa verifikasi seperti ini, LLM mudah menghasilkan kode yang tidak aman
Abstraksi dibutuhkan bukan hanya oleh manusia, tetapi juga oleh LLM
Bahasa yang mengharuskan semua fungsi, variabel, tipe, dan exception didefinisikan secara ketat
Mungkin tidak nyaman ditulis, tetapi strukturnya akan mudah dibaca dan diverifikasi
Artikel itu membahas sulitnya menerjemahkan sambil mempertahankan niat kode, bukan hanya jalur eksekusinya
Alat seperti Shellcheck juga bisa membantu pemula menjadi ahli
Untuk meningkat lewat RL, harus bisa menilai konsistensi kode secara otomatis
Perlu ada perhatian baru pada bahasa berbasis logika seperti Prolog
Kalau LLM menghasilkan kode yang penuh bug, hasilnya akan mirip walaupun bahasanya berbeda
Awalnya vibe coding terasa menakjubkan, tetapi tak lama kemudian loop revisi yang terus-menerus terasa menguras mental
Rasanya seperti scroll feed algoritmik yang merampas fokus
Sekarang saya menulis kode sendiri, lalu menyerahkan hanya bagian yang membosankan ke ChatGPT
Selain itu, tidak ada yang dipelajari juga
Dengan begitu requirement jadi lebih jelas, dan lebih mudah pindah ke AI lain
Saya ragu LLM bisa membuat kode C tanpa memory leak
Ini area yang bahkan developer manusia pun sering salah, jadi LLM dengan kualitas data pelatihan yang rendah lebih berbahaya lagi
Kalau membuat program yang segfault lewat vibe coding, itu hanya buang waktu
Hampir tidak pernah rusak dan selalu berhasil dikompilasi
Manusia lelah, tetapi LLM tidak
Kalau dilatih ulang dengan kode C yang bagus, masih ada peluang untuk membaik
AI bisa menghindari undefined behavior di C? Sulit dipercaya
Kalau model dilatih untuk membuat kesalahan seperti manusia, besar kemungkinan bug yang dihasilkan juga sama
Karena mereka memprediksi token yang paling mungkin, kesalahan umum jadi lebih jarang
Ia juga cukup baik dalam menemukan penyebab crash
Bahasa modern seperti Zig atau Rust jauh lebih baik
Alasan vibe coding membuat saya tidak nyaman bukan semata-mata karena terasa seperti ‘curang’
Pemrograman adalah seni yang memiliki jiwa
Cara tiap orang memecahkan masalah berbeda-beda, dan di situlah kreativitas berada
Vibe coding terasa seperti tindakan mesin menyerap kreativitas itu
Pada akhirnya, pikiran, keputusan, dan kesalahan semuanya diambil alih oleh mesin
Ada usulan untuk membuat “vibe-oriented programming language(VOP)”
Tetapi kalau bahasanya untuk LLM, justru seharusnya ketat dan verbose
Semua kondisi dan exception harus dinyatakan dengan jelas, dan tidak boleh bisa dikompilasi kalau tidak demikian
Bagi manusia ini tidak nyaman, tetapi bagi LLM justru punya kelebihan dalam mengurangi kebingungan
Diperlukan struktur di mana manusia menjelaskan konsepnya, lalu AI mengubahnya menjadi kode
Sekali berhasil dikompilasi, hampir selalu berjalan dengan benar
Bahkan kalau melakukan vibe coding, sebaiknya dilakukan dengan bahasa yang benar-benar kita pahami agar hasilnya masih bisa ditinjau
Kalau tidak, mungkin lebih baik sekalian bereksperimen dengan brainfuck
Saat ditanya, “Kalau begitu bagaimana kalau pakai assembly x86?”,
jawabannya ditolak dengan alasan, “Saya harus bisa me-review dan mengembangkannya sendiri”
Vibe coding murni hanyalah eksperimen pemikiran, bukan tujuan yang realistis
Mungkin suatu hari AI bisa menangani QA juga, tetapi untuk saat ini bahasa yang aman dan verifikasi manusia tetap wajib
Saya sudah cukup lama jadi developer sampai debat seperti ini pun terasa melelahkan