Dalam dunia pembangunan perisian, hanya beberapa topik yang mampu menjana perbincangan beremosi seperti format data. Catatan blog terkini oleh pemaju permainan veteran Ron Gilbert, pencipta Maniac Mansion dan Monkey Island, telah mencetuskan debat segar tentang alat yang digunakan pemaju setiap hari. Walaupun Gilbert berkongsi pengalaman peribadinya dengan Git, JSON, dan Markdown, komuniti pemaju dengan pantas menumpukan perhatian kepada satu kontroversi tertentu: batasan JSON berbanding pendahulunya, XML.
Kebangkitan Semula JSON Bertemu Nostalgia XML
Perbincangan ini mendedahkan perubahan menarik dalam sentimen pemaju. Ramai pemaju berpengalaman kini melihat semula XML dengan penghargaan baru, mengenal pasti ciri-ciri yang dahulu diambil mudah. Kesederhanaan JSON menjadikannya sangat popular, tetapi kesederhanaan yang sama kini menunjukkan batasannya dalam aplikasi kompleks.
JSON adalah salah satu tragedi paling ikonik yang berlaku dalam pembangunan perisian. Bukanlah JSON itu sendiri tidak baik, tetapi ia jelas untuk dikarang oleh mesin, bukan untuk manusia.
Konsensus komuniti mencadangkan bahawa tujuan asal JSON sebagai format boleh baca mesin telah diregangkan melebihi kes penggunaan yang dimaksudkan. Pemaju kini menggunakan JSON untuk segala-galanya daripada fail konfigurasi hingga skema data kompleks, mendedahkan batasannya untuk kandungan dikarang manusia.
Ciri Hilang: Lebih Daripada Sekadar Komen
Walaupun kekurangan komen dalam JSON kerap disebut, perbincangan komuniti mendedahkan kebimbangan yang lebih mendalam. Pemaju menunjuk kepada ketidakupayaan JSON mengendalikan metadata, ketiadaan alat pengesahan piawai setanding dengan XML Schema, dan cabaran mewakili hubungan data kompleks.
Perbincaraan ini menekankan bagaimana JSON sedang menemui semula XML Schema, XML DTD dan lain-lain, apabila kita sudah memilikinya suku abad yang lalu. Sentimen ini bergema dalam ulasan, dengan beberapa pemaju menyatakan bahawa perkakasan dan pemiawaian XML jauh lebih matang daripada apa yang tersedia untuk JSON hari ini.
Ciri-ciri XML Yang Terlepas Pandang Pembangun dalam JSON:
- Sokongan komen terbina dalam
- Pengesahan skema (XML Schema, DTD)
- Keupayaan transformasi (XSLT)
- Metadata melalui atribut
- Perkakas dan perpustakaan penghuraian yang diseragamkan
- Sokongan rendering pelayar dengan helaian gaya
Konfigurasi Konundrum
Salah satu titik perbincangan paling hangat berpusat pada penggunaan JSON untuk fail konfigurasi. Pemaju berkongsi penyelesaian kreatif untuk batasan JSON, termasuk menambah medan komen khas untuk menyimpan teks penjelasan. Ini menyerlahkan ketidaksesuaian asas antara reka bentuk JSON dan corak penggunaannya yang biasa.
Komuniti juga membincangkan alternatif seperti YAML dan TOML, dengan reaksi bercampur. Walaupun ada yang lebih suka kebolehbacaan YAML, yang lain menyatakan kerumitan penghuraian dan kebimbangan keselamatannya sendiri. Pencarian untuk format konfigurasi sempurna berterusan, tanpa pemenang jelas muncul dari perbincangan.
Format Alternatif yang Dibincangkan:
- YAML: Superset JSON yang mudah dibaca manusia, tetapi dengan kerumitan penghuraian
- TOML: Fokus pada fail konfigurasi dengan kebolehbacaan yang lebih baik
- JSON5: Sambungan JSON yang menyokong komen, koma jejak
- XML: Standard matang dengan peralatan yang meluas
Jurang Perkakasan
Beberapa pengulas menunjuk kepada jurang signifikan dalam perkakasan antara JSON dan XML. Ciri seperti XSLT untuk transformasi, sokongan pelayar terbina dalam untuk memaparkan XML dengan helaian gaya, dan sistem pengesahan matang diserlahkan sebagai kekuatan XML yang masih kurang dalam JSON.
Seorang pemaju berkongsi: Saya ingat ketika laman web Blizzard hanyalah XML+XSLT. Saya membina sejenis penghurai untuk mereka dan keliru seketika apabila skrip Python saya mengembalikan XML kosong ketika mengambil halaman depan. Contoh ini menggambarkan bagaimana pendekatan bersepadu XML untuk data dan persembahan menyediakan penyelesaian yang sistem berasaskan JSON masih berusaha untuk mencipta semula.
Faktor Manusia
Di luar spesifikasi teknikal, perbincangan kerap kembali kepada faktor manusia dalam reka bentuk format data. Keperluan ketat JSON mengenai koma mengekor dan kekunci berpetik diperdebatkan secara meluas, dengan pemaju berkongsi kedua-dua kekecewaan dan justifikasi untuk pilihan reka bentuk ini.
Perbincangan mendedahkan bahawa ramai pemaju telah menulis penghurai JSON tersuai untuk melonggarkan sekatan ini, hanya untuk menemui isu keserasian dengan alat piawai. Ketegangan antara kemudahan dan pemiawaian ini masih tidak diselesaikan dalam komuniti.
Penyelesaian Alternatif Pembangun Biasa untuk Batasan JSON:
- Menambah medan "comment":
{"_comment": "Ini adalah komen", "data": "value"}
- Menggunakan JSON5 atau JSONC untuk fail konfigurasi
- Parser JSON tersuai yang membenarkan koma tertinggal dan kunci tanpa petikan
- Pengesahan skema luaran dengan JSON Schema
Melihat Ke Hadapan
Perbincangan mencadangkan bahawa format data ideal mungkin belum wujud. Walaupun JSON cemerlang dalam pertukaran data mudah antara mesin, dan XML menyediakan ciri berkuasa untuk pemprosesan dokumen kompleks, kedua-duanya tidak sempurna menangani spektrum penuh keperluan pembangunan moden.
Renungan komuniti tentang alat ini menunjukkan kematangan dalam pemikiran pemaju. Daripada hanya mengejar teknologi terbaru, pemaju berpengalaman mengambil pendekatan lebih bernuansa, menilai alat berdasarkan kekuatan dan batasan khusus mereka untuk kes penggunaan tertentu.
Evolusi berterusan format data mencerminkan evolusi lebih luas pembangunan perisian itu sendiri - tindakan mengimbang berterusan antara kesederhanaan dan kuasa, antara kebolehbacaan manusia dan kecekapan mesin, antara produktiviti segera dan kebolehkekalan jangka panjang.
Seperti yang dinyatakan seorang pengulas tentang pencarian berterusan untuk alat lebih baik: Ia mengingatkan saya tentang perkara NoSQL dari dulu juga, dipermudahkan ia adalah 'bagaimana jika kita campak gumpalan JSON dalam storan kunci/nilai?' Ia mengambil masa bertahun-tahun untuk menyedari bahawa pangkalan data hubungan dan SQL tidak sebenarnya begitu teruk. Corak menemui semula penyelesaian mapan ini nampaknya berulang dengan format data.
Rujukan: Git, JSON dan Markdown walk into bar