Dokumen spesifikasi baharu untuk S-expressions telah memperkenalkan sambungan kontroversial yang secara asasnya mencabar konvensyen sintaks pengaturcaraan tradisional. Perpustakaan S-expr mencadangkan penambahan rentetan berbilang baris, komen, dan yang paling ketara, blok transpos yang membolehkan kod ditulis dalam susun atur dua dimensi dengan orientasi menegak dan mendatar.
Dokumen tersebut, yang ditujukan kepada pemula pengaturcaraan, mencadangkan sambungan ini boleh meningkatkan kebolehbacaan kod dengan menangani masalah biasa kurungan bersarang dalam bahasa gaya Lisp. Walau bagaimanapun, respons komuniti pengaturcaraan adalah sangat skeptikal.
Perbandingan Sintaks String
Jenis | S-expr Tradisional | Sambungan S-expr |
---|---|---|
String satu baris | "text" |
"text" |
String berbilang baris | Tidak disokong | ***\ntext\n*** |
Komen | ;comment |
//comment// atau ///\ncomment\n/// |
Blok 2D | Tidak disokong | *\nvertical\ntext\n* |
Prinsip S-Expression Tradisional Diserang
Sambungan yang dicadangkan melanggar prinsip teras yang telah menjadikan S-expressions berjaya selama beberapa dekad. S-expressions tradisional mengabaikan kebanyakan ruang kosong dan boleh dihurai secara linear tanpa jejak balik. Struktur 2D baharu ini secara asasnya memecahkan model ini dengan memerlukan penghurai untuk melompat secara menegak melalui kod dan membaca sepenuhnya blok berbilang baris sebelum meneruskan dengan elemen bersebelahan.
Pengaturcara Lisp yang berpengalaman telah sangat mengkritik pendekatan ini. Komuniti menunjukkan bahawa alatan sedia ada dan pengoptimuman selama beberapa dekad telah dibina berdasarkan model penghuraian linear, menjadikan sambungan ini tidak praktikal untuk kegunaan dunia sebenar.
Persoalan Kebolehbacaan
Mungkin aspek yang paling kontroversial ialah sama ada sintaks yang dicadangkan benar-benar meningkatkan kebolehbacaan. Spesifikasi tersebut mengubah ungkapan mudah seperti (eq (mul (a a)) (pow (a 2)))
kepada susun atur 2D yang kompleks merangkumi berbilang baris dengan simbol asterisk menandakan kawasan transpos.
Ahli komuniti telah mencadangkan alternatif yang lebih mudah untuk meningkatkan kebolehbacaan S-expression. Ada yang mencadangkan indentasi seperti pokok asas atau bahkan notasi matematik seperti x*x = x^2
untuk contoh yang diberikan. Alternatif ini mengekalkan kesederhanaan penting S-expressions sambil menangani kebimbangan kebolehbacaan.
Penyelesaian Kebolehbacaan Alternatif yang Dicadangkan oleh Komuniti
- Notasi pokok: Struktur berindentasi ringkas yang menunjukkan hierarki
- Notasi matematik:
x*x = x^2
berbanding(eq (mul (a a)) (pow (a 2)))
- Gaya Wisp: Sintaks berasaskan indentasi tanpa kurungan
- Sambungan Clojure: Vektor
[]
, peta hash{}
, set{}
- Sweet-expressions: Pendekatan hibrid dengan pembuangan kurungan terpilih
Penyelesaian Sedia Ada Sudah Tersedia
Perbincangan mendedahkan bahawa fungsi serupa sudah wujud dalam bentuk yang lebih praktikal. Sambungan sintaks 2D Racket menyediakan pengaturcaraan berasaskan jadual untuk kes penggunaan khusus, manakala Clojure telah berjaya memperluaskan S-expressions dengan vektor, peta hash, dan set sambil mengekalkan kesederhanaan penghuraian.
Beberapa ahli komuniti menyatakan bahawa pelbagai percubaan untuk menambah baik S-expressions telah dicuba selama bertahun-tahun, tetapi pembangun secara konsisten kembali kepada format asal disebabkan keseimbangan optimum kesederhanaan dan kuasa.
Keputusan Komuniti
Walaupun ada yang mendapati pendekatan eksperimen ini menarik dari perspektif akademik, konsensus yang menyeluruh ialah sambungan yang dicadangkan mencipta lebih banyak masalah daripada menyelesaikannya. Kerumitan yang diperkenalkan oleh penghuraian 2D, pemecahan daripada konvensyen yang telah ditetapkan, dan peningkatan kebolehbacaan yang dipersoalkan telah menyebabkan kebanyakan orang menolak cadangan tersebut.
Perdebatan ini menyerlahkan kekuatan berterusan S-expressions tradisional dan kesukaran untuk menambah baik format yang telah membuktikan dirinya selama beberapa dekad penggunaan praktikal. Buat masa ini, nampaknya komuniti pengaturcaraan akan berpegang kepada pendekatan yang telah terbukti dan benar untuk ungkapan simbolik.
Rujukan: S-expr