Dalam dunia pemrograman, hanya sedikit topik yang memicu perdebatan begitu penuh gairah seperti gaya penulisan kode. Baru-baru ini, komunitas teknologi tengah mendiskusikan dengan intens karya Arthur Whitney, ilmuwan komputer di balik bahasa pemrograman berpengaruh seperti K dan Q, serta database berkinerja tinggi termasuk Kdb+. Percakapan ini tidak berpusat pada bahasa itu sendiri, tetapi pada gaya penulisan kode C-nya yang terkenal padat dan ringkas, yang mampu memuat seluruh penerjemah (interpreter) hanya dalam beberapa puluh baris.
Diskusi ini dipicu oleh analisis mendetail terhadap kode C Arthur Whitney yang tersedia untuk umum untuk sebuah penerjemah sederhana, ditulis dalam gaya yang oleh banyak orang digambarkan sebagai sesuatu yang hampir tidak dapat dipahami. Kode ini menjadi contoh pendekatan Whitney: penggunaan makro karakter tunggal yang intens, spasi yang minimal, dan seluruh fungsi yang dipadatkan menjadi satu baris. Saat para pengembang memeriksa metodologi pengkodean yang kontroversial ini, mereka mempertanyakan hal-hal mendasar tentang apa yang membentuk kode yang baik dan apakah kepadatan ekstrem datang dengan biaya yang terlalu tinggi.
Daya Tarik Kepadatan dan Pemrograman Satu Layar
Filosofi pengkodean Arthur Whitney berputar pada menjaga seluruh unit logis tetap terlihat dalam satu layar. Pendekatan ini telah menarik minat signifikan dari pengembang yang kesulitan dalam menavigasi basis kode yang sangat besar. Komunitas mengakui bahwa gaya Whitney mewakili upaya yang disengaja untuk mengelola kompleksitas melalui keringkasan yang ekstrem, bukan dengan menyebarkannya di banyak berkas dan fungsi.
Kepadatannya berkali-kali lipat lebih tinggi daripada kebanyakan program C, tetapi itu bukan halangan besar untuk memahami jika Anda tidak mencoba 'membacanya sekilas'; Anda perlu membacanya karakter demi karakter dari atas ke bawah.
Banyak pengembang mengakui bahwa setelah Anda menyesuaikan diri dengan kepadatannya, ada keanggunan tertentu dalam memiliki semua kode terkait yang langsung terlihat. Ini menghilangkan beban kognitif untuk menggulir ribuan baris untuk memahami bagaimana bagian-bagian berbeda dari sebuah sistem saling berinteraksi. Gaya ini terutama menarik bagi mereka yang mengerjakan sistem matematika atau keuangan yang kompleks di mana melihat gambaran besarnya adalah yang paling penting.
Kekhawatiran Mimpi Buruk Pemeliharaan
Terlepas dari daya tarik intelektualnya, programmer C yang berpengalaman menyuarakan kekhawatiran serius tentang implikasi praktis dari kode yang begitu padat. Ketergantungan berat pada makro preprocessor C menciptakan apa yang oleh banyak orang dianggap sebagai kekacauan yang tidak dapat dipelihara. Ketika makro mendefinisikan ulang konstruksi bahasa dasar dan memperkenalkan variabel implisit, mereka berargumen, hasilnya pada dasarnya menjadi bahasa domain-spesifik baru yang dibangun di atas C.
Pengembang berpengalaman menunjuk bahwa gaya ini melanggar prinsip-prinsip rekayasa perangkat lunak yang fundamental. Kurangnya nama yang deskriptif, tidak adanya komentar, dan kepadatan yang ekstrem membuat kode hampir mustahil untuk dipahami dan dimodifikasi oleh siapa pun kecuali penulis aslinya. Seperti yang dicatat oleh seorang komentator, pendekatan ini mengasumsikan Anda akan selalu ingat persis apa yang Anda bangun—asumsi yang berbahaya dalam lingkungan pengembangan perangkat lunak profesional apa pun.
Tantangan debugging khususnya sangat menakutkan. Ketika setiap baris berisi banyak operasi dan preprocessor telah mengubah C yang sederhana menjadi sesuatu yang sama sekali berbeda, mengidentifikasi dan memperbaiki bug menjadi semakin sulit. Hal ini menjadi sangat penting dalam sistem keuangan di mana teknologi Whitney digunakan.
Kritik Umum terhadap Gaya Coding Whitney:
- Ketergantungan berat pada makro preprocessor C yang menciptakan DSL
- Nama variabel dan fungsi berkarakter tunggal
- Kurangnya komentar dan dokumentasi
- Seluruh fungsi ditulis sebagai baris tunggal
- Argumen implisit dan dependensi variabel
- Debugging dan pemeliharaan yang sulit
- Ekstensi C non-standar yang membatasi portabilitas
Pengaruh APL atau Keanehan Pribadi?
Komunitas terbelah mengenai apakah gaya C Whitney mewakili perluasan dari prinsip-prinsip pemrograman APL atau sekadar preferensi pribadi. Beberapa berpendapat bahwa pada dasarnya dia menulis APL menggunakan sintaks C, membawa sifat simbolis dan padat dari bahasa pemrograman array ke dalam kode implementasinya. Yang lain membantah bahwa gayanya sedikit hubungannya dengan APL itu sendiri dan lebih berkaitan dengan pendekatan individu Whitney dalam memecahkan masalah.
Yang jelas, gayanya telah sangat konsisten selama beberapa dekade karya Whitney, dari penerjemah J awal hingga implementasi K saat ini. Konsistensi ini menunjukkan bahwa pendekatannya disengaja dan tidak kebetulan. Namun, seperti yang diamati oleh seorang komentator, bahkan dalam komunitas APL, gaya C Whitney dianggap ekstrem dan bukan mewakili praktik umum.
Debat Teknik Versus Seni
Pada intinya, diskusi ini mencerminkan ketegangan fundamental dalam pengembangan perangkat lunak: haruskah kode diperlakukan sebagai artefak teknik atau ekspresi pribadi? Pendukung pendekatan Whitney menghargai keindahan matematis dan efisiensi dari kode yang padat. Mereka melihatnya sebagai pencapaian intelektual yang menunjukkan pemahaman mendalam tentang domain masalah dan bahasa pemrograman.
Kritikus membantah bahwa pengembangan perangkat lunak profesional membutuhkan kolaborasi dan kemudahan pemeliharaan di atas segalanya. Mereka menunjuk pada Hukum Kernighan: Debugging adalah dua kali lebih sulit daripada menulis program pada awalnya. Jadi, jika Anda menjadi sepintar mungkin saat menulisnya, bagaimana Anda akan mendebugnya? Prinsip ini menyarankan bahwa kode harus memprioritaskan kejelasan di atas kepintaran, terutama dalam sistem produksi yang menangani nilai keuangan yang signifikan.
Percakapan ini juga menyentuh dinamika tim dan transfer pengetahuan. Kode yang sepadat ini menciptakan apa yang oleh sebagian orang disebut sebagai keamanan kerja melalui ketidakjelasan—membuat diri sendiri tidak tergantikan dengan menulis kode yang tidak dapat dipahami. Meskipun ini mungkin menguntungkan programmer individu dalam jangka pendek, hal ini menciptakan risiko signifikan bagi organisasi yang perlu memelihara sistem kritis dalam jangka panjang.
Konteks Modern dan Implikasi AI
Yang menarik, diskusi ini mendapatkan relevansi baru di era asisten coding AI. Beberapa pengembang khawatir bahwa seiring dengan semakin banyaknya kode yang ditulis dengan bantuan AI, kita mungkin melihat peningkatan kode yang tidak dapat ditembus dan sulit dipahami serta dimodifikasi oleh manusia. Gaya Whitney mewakili contoh ekstrem dari apa yang bisa terjadi ketika kode memprioritaskan kekompakan di atas komunikasi.
Yang lain melihat nilai potensial dalam mempelajari gaya ini sebagai contoh bagaimana mengekspresikan ide kompleks secara ringkas. Bahkan jika sebagian besar pengembang tidak harus meniru pendekatan Whitney secara langsung, memahaminya mungkin membantu meningkatkan cara kita berpikir tentang organisasi kode dan abstraksi dalam gaya pemrograman yang lebih konvensional.
Bahasa Pemrograman dan Database Kunci oleh Arthur Whitney:
- Bahasa pemrograman A, K, Q: Bahasa pemrograman array yang digunakan secara luas dalam bidang keuangan
- Kdb+: Database berkinerja tinggi yang dibangun di atas subset dari K
- Shakti: Penerus Kdb+, dirancang untuk dataset mikro-baris
- J: Bahasa pemrograman array open-source (implementasi awal)
Kesimpulan
Debat yang sedang berlangsung tentang gaya pengkodean C Arthur Whitney mengungkap pertanyaan yang lebih dalam tentang apa yang membuat kode menjadi baik. Meskipun sebagian besar pengembang setuju bahwa pendekatannya tidak cocok untuk pengembangan perangkat lunak berbasis tim, banyak yang mengakui pencapaian intelektual yang diwakilinya. Gaya ini menunjukkan bahwa fungsionalitas signifikan dapat diekspresikan dengan ekonomi yang luar biasa, bahkan jika ekonomi itu datang dengan mengorbankan aksesibilitas.
Seperti yang disimpulkan dengan sempurna oleh seorang komentator mengenai pendapat yang terbelah: beberapa melihatnya setara dengan membaca necronomicon dan terkena penyakit kegilaan kosmik, sementara yang lain menghargai bagaimana gaya ini tampaknya 'memanjat tangga abstraksi' dengan sangat cepat. Pada akhirnya, diskusi ini berfungsi sebagai pengingat berharga bahwa gaya pengkodean melibatkan pertukaran antara kekompakan, kejelasan, dan kemudahan pemeliharaan—pertukaran yang harus dinavigasi oleh setiap tim pengembangan berdasarkan konteks dan kebutuhan spesifik mereka.
Referensi: Learning to read Arthur Whitney's C to become Smart
