Sebuah postingan blog terbaru telah memicu kembali diskusi yang penuh gairah tentang salah satu masalah paling persisten dalam pemrograman: perdebatan format kode. Penulis mengenang bagaimana guru ilmu komputer mereka menyebutkan bahwa masalah ini sebenarnya sudah diselesaikan puluhan tahun lalu menggunakan sistem yang disebut DIANA, yang menyimpan kode sebagai representasi perantara daripada teks biasa.
Respons komunitas pemrograman mengungkapkan perpecahan yang mendalam tentang apakah mengejar solusi semacam itu bermanfaat atau justru menciptakan lebih banyak masalah daripada yang diselesaikan.
Fitur Sistem DIANA (1980-an)
- Menyimpan kode sebagai representasi perantara alih-alih teks biasa
- Memungkinkan preferensi pemformatan yang dipersonalisasi untuk setiap pengembang
- Mendukung kompilasi bertahap dan refactoring yang cepat
- Digunakan dalam workstation Rational R1000 untuk pengembangan Ada
- Memungkinkan pengeditan AST secara langsung (projectional editing)
Keunggulan Teks Biasa Tetap Menjadi Raja
Banyak developer berargumen bahwa beralih dari teks biasa akan merusak alat-alat fundamental yang membuat pengembangan perangkat lunak modern berfungsi. Filosofi Unix tentang alat-alat berbasis teks yang dapat digabungkan seperti grep, diff, dan sed telah terbukti sangat tahan lama. Alat-alat ini bekerja di setiap platform dan bahasa pemrograman, menciptakan fondasi universal yang diandalkan developer setiap hari.
Kekhawatirannya adalah bahwa format khusus akan mengunci tim pada IDE atau toolchain tertentu, mengurangi fleksibilitas dan membuat tugas-tugas sederhana menjadi lebih kompleks. Seorang developer menunjukkan bahwa bahkan jika Anda bisa mencari representasi perantara tersebut, Anda perlu menjalankan formatter secara terbalik hanya untuk mengetahui apa yang harus dicari, yang justru mengalahkan tujuannya.
Argumen Menentang Penyimpanan Kode Berbasis IR
- Merusak kompatibilitas dengan alat Unix universal (grep, diff, sed)
- Memerlukan perangkat khusus dan ketergantungan pada IDE tertentu
- Menambah kompleksitas dengan manfaat yang minimal
- Kontrol versi dan manajemen patch menjadi lebih sulit
- Teks biasa tetap menjadi format yang paling portabel dan mudah diakses
Masalah Bikeshedding Tetap Ada
Meskipun ada tantangan teknis, frustrasi dengan perdebatan format tetap nyata. Komunitas secara luas mengakui bahwa berdebat tentang gaya kode seringkali merupakan bikeshedding yang tidak produktif - fokus pada detail sepele sambil mengabaikan pekerjaan yang lebih penting.
Saya terlalu sibuk melakukan rekayasa perangkat lunak yang sebenarnya untuk peduli tentang di mana tepatnya semua hal ditempatkan - saya jamin setelah seminggu Anda akan terbiasa dengan format apa pun yang dipilih tim Anda.
Bahasa modern seperti Go telah mencoba menyelesaikan ini dengan membuat keputusan format pada tingkat sintaks dan menyediakan formatter yang opinionated seperti gofmt. Meskipun tidak semua orang menyukai pilihan spesifiknya, sebagian besar developer menghargai keputusan yang sudah dibuat untuk mereka.
Solusi Pemformatan Kode Modern
- Go: gofmt menyediakan pemformatan universal yang bersifat opinionated
- Python: Formatter Black menghilangkan sebagian besar pilihan pemformatan
- JavaScript: Konfigurasi Prettier dan ESLint menstandarkan gaya penulisan
- Unison: Hanya menyimpan AST, mirip dengan pendekatan DIANA
- Chrome DevTools: Prettifikasi on-demand untuk kode yang diminifikasi
Kekhawatiran Aksesibilitas dan Tipografi
Diskusi ini tidak murni tentang preferensi personal. Beberapa developer mengangkat kekhawatiran aksesibilitas, mencatat bahwa pilihan format tertentu dapat benar-benar mempengaruhi keterbacaan bagi orang dengan kebutuhan yang berbeda. Yang lain berargumen bahwa format kode melayani tujuan tipografi, membantu mengkomunikasikan makna dan struktur yang mungkin terlewat oleh alat otomatis.
Ini menambah kompleksitas pada ide bahwa semua format hanyalah preferensi subjektif yang dapat diabstraksi.
Eksperimen Modern dan Solusi Parsial
Beberapa developer menyebutkan bahwa bagian-bagian dari visi ini sudah ada. Chrome DevTools dapat mempercantik JavaScript yang diminifikasi sesuai permintaan. Beberapa tim menggunakan Git hooks untuk menerapkan aturan format yang berbeda secara lokal versus remote. Bahasa pemrograman Unison sebenarnya hanya menyimpan abstract syntax tree, mirip dengan pendekatan DIANA.
Namun, ini tetap menjadi solusi niche daripada adopsi mainstream, menunjukkan bahwa hambatan praktis tetap signifikan.
Perdebatan ini menyoroti ketegangan fundamental dalam pengembangan perangkat lunak antara keanggunan solusi teoretis dan realitas berantakan bekerja dengan alat dan alur kerja yang ada. Meskipun sistem DIANA tahun 1980-an menyelesaikan perang format untuk penggunanya, evolusi yang bergantung pada jalur dari alat pengembangan modern membuat pendekatan serupa sulit diimplementasikan saat ini.
Catatan: DIANA (Descriptive Intermediate Attributed Notation for Ada) adalah representasi perantara terstruktur pohon yang digunakan dalam lingkungan pengembangan Ada, khususnya sistem Rational R1000.
Referensi: Formatting code should be unnecessary