Shorty: Pustaka C++ Baru Menawarkan Sintaks Lambda yang Lebih Ringkas, Memecah Belah Komunitas Pengembang

BigGo Editorial Team
Shorty: Pustaka C++ Baru Menawarkan Sintaks Lambda yang Lebih Ringkas, Memecah Belah Komunitas Pengembang

Sebuah pustaka C++ baru bernama Shorty telah muncul, menjanjikan untuk menyederhanakan ekspresi lambda dengan sintaks yang lebih ringkas. Pustaka ini telah memicu diskusi yang cukup besar di kalangan pengembang, dengan reaksi mulai dari antusiasme hingga kengerian terhadap apa yang dianggap sebagai penambahan lapisan kompleksitas baru pada bahasa yang sudah kompleks.

Shorty bertujuan menyediakan alternatif yang lebih ringkas untuk sintaks lambda standar C++, menggunakan awalan tanda dolar seperti $lhs, $rhs, dan $it untuk mengakses argumen fungsi. Pendekatan ini memungkinkan pengembang untuk menulis kode yang lebih mudah dibaca untuk operasi umum seperti pengurutan, penyaringan, dan transformasi.

Kontroversi Tanda Dolar

Salah satu aspek yang paling banyak dibahas dari Shorty adalah penggunaan tanda dolar ($) dalam pengidentifikasi, yang menurut beberapa komentator bukanlah standar dalam C++. Meskipun tanda dolar telah diterima sebagai ekstensi oleh banyak kompilator sejak masa awal C, itu bukan bagian dari standar bahasa resmi.

It's a common extension but it's not standard. Both C23 and C++23 only allow identifiers to start with a Unicode XID_START character, which excludes $.

Para pengembang pustaka jelas menyadari keterbatasan ini, karena proyek mereka menyertakan opsi kompilator untuk menekan peringatan tentang penggunaan non-standar ini. Beberapa komentator melacak ekstensi ini kembali ke sistem VMS, yang mungkin menjadi alasan mengapa GCC awalnya menyertakan dukungan tanda dolar.

Template Ekspresi dan Pendahulunya

Beberapa pengembang dalam komentar mengenali bahwa Shorty bukanlah memperkenalkan konsep yang sepenuhnya baru, tetapi lebih membangun berdasarkan teknik-teknik yang sudah mapan dalam C++. Pustaka ini menggunakan template ekspresi, teknik metapemrograman yang telah digunakan dalam berbagai pustaka C++ selama bertahun-tahun.

Banyak komentator membandingkan Shorty dengan pustaka sebelumnya yang memiliki tujuan serupa, terutama Boost.Lambda, Boost Lambda2, Boost HOF, dan Boost Hana. Namun, ada pengakuan bahwa Shorty tampaknya lebih lengkap fiturnya dibandingkan beberapa pendahulunya, menawarkan berbagai kemampuan yang lebih luas untuk akses argumen, pemanggilan fungsi, dan transformasi.

Fitur Utama Shorty

  • Akses Argumen: $0-$9, $lhs, $rhs, $it, $a-$f, $x, $y, $z
  • Kueri Argumen: $argc, $args
  • Pengambilan: $(v), $ref(v), $value(v), $val(v), $copy(v), $fixed, $const
  • Pemanggilan Fungsi: $<callable>(args...), $call(args...)
  • Pengubahan Tipe: $<T>(expr), $cast(expr)
  • Pembuatan Tuple: ($a, $b, $c), ($0, $1)
  • Operasi Penugasan: $a += 2, dll.

Pustaka Serupa

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

Penerimaan Beragam

Reaksi komunitas terhadap Shorty mengungkapkan perspektif yang terbagi mengenai metapemrograman C++ dan ekstensi bahasa. Beberapa pengembang mengekspresikan kegembiraan tentang potensi pustaka ini, dengan satu komentator mengakui bahwa mereka awalnya tidak menyukai sintaksnya tetapi mulai menerimanya. Yang lain menyarankan mereka mungkin mengganti tanda dolar dengan garis bawah sebelum menggunakannya, mirip dengan pendekatan Boost::Lambda2.

Di sisi lain, beberapa pengembang menggambarkan pustaka ini sebagai mengerikan atau terkutuk, mengekspresikan kekhawatiran bahwa ini menambahkan lapisan kompleksitas lain pada C++. Satu komentator secara khusus menyebutkan potensi untuk pesan kesalahan yang lebih tidak dapat dipahami—titik nyeri terkenal dalam pengembangan C++ yang pernah menginspirasi kompetisi di mana entri pemenang menghasilkan pesan kesalahan 5,9 miliar kali lebih besar dari kode sumbernya.

Terlepas dari kritik ini, beberapa komentator teknis menemukan implementasinya mengejutkan mudah dibaca dan terstruktur dengan baik dibandingkan dengan pustaka metapemrograman template lainnya, menunjukkan bahwa konsep itu sendiri mungkin memiliki manfaat meskipun pilihan sintaks tetap kontroversial.

Saat C++ terus berkembang dengan standar yang lebih baru seperti C++23, pustaka seperti Shorty menunjukkan ketegangan yang berkelanjutan antara kemurnian bahasa dan ekspresivitas praktis yang telah menjadi ciri pengembangan C++ selama beberapa dekade. Apakah Shorty akan menemukan adopsi luas atau tetap menjadi eksperimen yang menarik masih harus dilihat, tetapi pustaka ini tentu telah memicu diskusi yang penuh pemikiran tentang arah masa depan sintaks C++.

Referensi: terser (shorter) lambda == SHORTY