Shorty: Pustaka C++ Baharu Menawarkan Sintaks Lambda Lebih Ringkas, Membahagikan Komuniti Pembangun

BigGo Editorial Team
Shorty: Pustaka C++ Baharu Menawarkan Sintaks Lambda Lebih Ringkas, Membahagikan Komuniti Pembangun

Sebuah pustaka C++ baharu yang dipanggil Shorty telah muncul, menjanjikan untuk memudahkan ungkapan lambda dengan sintaks yang lebih ringkas. Pustaka ini telah mencetuskan perbincangan yang hangat dalam kalangan pembangun, dengan reaksi yang berbeza-beza dari rasa teruja hingga ngeri terhadap apa yang dilihat oleh sesetengah pihak sebagai menambah satu lagi lapisan kerumitan kepada bahasa pengaturcaraan yang sudah kompleks.

Shorty bertujuan untuk menyediakan alternatif yang lebih ringkas kepada sintaks lambda standard C++, menggunakan awalan tanda dolar seperti $lhs, $rhs, dan $it untuk mengakses argumen fungsi. Pendekatan ini membolehkan pembangun menulis kod yang lebih mudah dibaca untuk operasi biasa seperti pengisihan, penapisan, dan transformasi.

Kontroversi Tanda Dolar

Salah satu aspek Shorty yang paling banyak dibincangkan ialah penggunaan tanda dolar ($) dalam pengecam, yang dinyatakan oleh beberapa pengulas sebagai tidak standard dalam C++. Walaupun tanda dolar telah diterima sebagai sambungan oleh banyak pengkompil sejak awal kewujudan C, ia bukan sebahagian daripada standard bahasa rasmi.

Ia adalah sambungan biasa tetapi bukan standard. Kedua-dua C23 dan C++23 hanya membenarkan pengecam bermula dengan aksara Unicode XID_START, yang mengecualikan $.

Pembangun pustaka ini jelas sedar akan batasan ini, kerana projek mereka merangkumi pilihan pengkompil untuk menyekat amaran tentang penggunaan bukan standard ini. Sesetengah pengulas mengesan sambungan ini kembali kepada sistem VMS, mencadangkan ia mungkin sebab mengapa GCC pada asalnya menyokong tanda dolar.

Templat Ungkapan dan Pendahulu

Beberapa pembangun dalam komen mengenali bahawa Shorty bukan memperkenalkan konsep yang sama sekali baharu, tetapi membina atas teknik-teknik yang telah mantap dalam C++. Pustaka ini menggunakan templat ungkapan, teknik pengaturcaraan meta yang telah digunakan dalam pelbagai pustaka C++ selama bertahun-tahun.

Ramai pengulas membandingkan Shorty dengan pustaka terdahulu yang mempunyai matlamat serupa, terutamanya Boost.Lambda, Boost Lambda2, Boost HOF, dan Boost Hana. Walau bagaimanapun, terdapat pengiktirafan bahawa Shorty kelihatan lebih lengkap dari segi ciri berbanding sesetengah pendahulunya, menawarkan pelbagai keupayaan yang lebih luas untuk akses argumen, panggilan fungsi, dan transformasi.

Ciri-ciri Utama Shorty

  • Akses Argumen: $0-$9, $lhs, $rhs, $it, $a-$f, $x, $y, $z
  • Pertanyaan Argumen: $argc, $args
  • Penangkapan: $(v), $ref(v), $value(v), $val(v), $copy(v), $fixed, $const
  • Panggilan Fungsi: $<callable>(args...), $call(args...)
  • Penukaran Jenis: $<T>(expr), $cast(expr)
  • Penciptaan Tuple: ($a, $b, $c), ($0, $1)
  • Operasi Penetapan: $a += 2, dan sebagainya.

Perpustakaan Serupa

  • Boost.Lambda (usang)
  • Boost Lambda2
  • Boost HOF
  • Boost Hana

Sambutan Bercampur-campur

Reaksi komuniti terhadap Shorty mendedahkan perspektif yang berbeza mengenai pengaturcaraan meta C++ dan sambungan bahasa. Sesetengah pembangun menyatakan kegembiraan tentang potensi pustaka ini, dengan seorang pengulas mengakui bahawa pada mulanya mereka tidak menyukai sintaks tersebut tetapi kini mula menerimanya. Yang lain mencadangkan mereka mungkin menggantikan tanda dolar dengan garis bawah sebelum menggunakannya, serupa dengan pendekatan Boost::Lambda2.

Di hujung yang bertentangan, sesetengah pembangun menggambarkan pustaka ini sebagai menakutkan atau terkutuk, menyatakan kebimbangan bahawa ia menambah satu lagi lapisan kerumitan kepada C++. Seorang pengulas secara khusus menyebut potensi untuk mesej ralat yang lebih sukar difahami—satu titik kesakitan yang terkenal dalam pembangunan C++ yang pernah mengilhamkan pertandingan di mana penyertaan yang menang menghasilkan mesej ralat 5.9 bilion kali lebih besar daripada kod sumber.

Walaupun terdapat kritikan ini, beberapa pengulas teknikal mendapati implementasi tersebut mengejutkan kerana boleh dibaca dan berstruktur baik berbanding pustaka pengaturcaraan meta templat lain, mencadangkan bahawa konsep itu sendiri mungkin mempunyai merit walaupun pilihan sintaks tetap kontroversi.

Ketika C++ terus berkembang dengan standard yang lebih baharu seperti C++23, pustaka seperti Shorty menunjukkan ketegangan berterusan antara ketulenan bahasa dan kepraktisan ekspresi yang telah mencirikan pembangunan C++ selama berdekad. Sama ada Shorty akan mendapat penggunaan meluas atau kekal sebagai eksperimen yang menarik masih belum dapat dipastikan, tetapi ia pasti telah mencetuskan perbincangan yang mendalam tentang arah masa depan sintaks C++.

Rujukan: terser (shorter) lambda == SHORTY