16 poin oleh xguru 2024-06-24 | 10 komentar | Bagikan ke WhatsApp
  • Sebuah perusahaan (dirahasiakan) yang melayani ratusan juta pengguna menggunakan C dan C++ pada sistem intinya
  • Sepanjang tahun 2023, berlangsung diskusi tentang bahasa mana yang akan diadopsi antara Rust dan Zig
  • Pertimbangan utama:
    1. Interoperabilitas dengan C
    2. Skalabilitas engineer (rekrutmen, pemeliharaan, dll.)
  • Pilihan akhir: Zig
  • Proses pengambilan keputusan ini dibagikan karena dianggap menunjukkan dengan baik "faktor-faktor yang dipertimbangkan perusahaan besar ketika kode dijalankan di berbagai target dan memengaruhi ratusan juta pengguna"

Pentingnya interoperabilitas C

  • Library yang ingin ditulis ulang kemungkinan akan digunakan di semua platform (web, mobile, headset VR, konsol game, desktop, dll.)
  • Karena itu, menyediakan C API dan penggunaan melalui FFI adalah satu-satunya cara untuk menjamin eksekusi di semua platform

Isu diskusi utama

Rust

  1. Pada saat itu, lebih dari 25 kali lebih populer daripada Zig (berdasarkan survei dan subreddit)
  2. Telah berada dalam kondisi stabil lebih lama
  3. Dukungan industri untuk Rust Foundation tampak stabil
  4. LSP dan pengalaman pengembang yang sangat baik
  5. Cargo: package manager kelas atas di industri
  6. Keamanan memori dan "tidak ada undefined behavior" (tidak sepenuhnya benar, tetapi disebutkan dalam diskusi)
  7. Jika ingin meninggalkan C++, Rust lebih cocok karena tidak memiliki kemungkinan kesalahan memori dan undefined behavior
  8. Dukungan SIMD di versi nightly
  9. Dukungan WASM sama mulusnya dengan Zig
  10. Dari sisi performa setara dengan Zig, atau dalam beberapa kasus "jauh lebih cepat"
Interoperabilitas C pada Rust:
  • Rust memiliki ekosistemnya sendiri yang kaya, sehingga pentingnya interoperabilitas C relatif lebih rendah
  • Sangat baik untuk integrasi dengan bahasa tingkat tinggi seperti Python binding
  • Ada argumen bahwa keuntungan menggunakan Rust mengimbangi kekurangan dalam menyediakan binding C

Zig

  1. Mudah dipelajari oleh developer dengan latar belakang C/C++ atau TypeScript
  2. Memberikan pengalaman menulis kode yang menyenangkan bagi developer berlatar belakang C
  3. Compiler Zig juga dapat mengompilasi C dan C++, sehingga menguntungkan untuk manajemen dependensi dan membangun library C ABI
  4. Dukungan untuk berbagai platform target sangat mudah (zig targets banyak dipuji)
  5. Mudah menulis software dengan cepat (dukungan native Vector, pemanfaatan SIMD, dll.)
  6. Kompatibel dengan debugger yang sudah ada
  7. Build system yang sangat baik (100 kali lebih baik dibanding Makefile yang ada)
  8. Transparansi finansial Zig Software Foundation yang tinggi
  9. Memungkinkan porting bertahap dan "men-Zig-kan" kode C++ yang sudah ada
  10. Lebih terjamin dalam menyelesaikan masalah linking/kompilasi untuk semua platform target

Kesimpulan

  • Zig secara signifikan mengurangi waktu dan upaya yang dibutuhkan untuk mem-porting codebase yang ada serta menjamin kompatibilitas di semua platform
  • Faktor penentu yang tidak terduga:
    1. Kemudahan belajar dan perekrutan memberi pengaruh lebih besar dari perkiraan (menguntungkan Zig)
    2. Pengalaman pengembang terkait toolchain memainkan peran penting
    3. Compiler dan build system Zig sangat membantu karena kompatibilitasnya dengan codebase yang sudah ada
    4. Ekosistem, komunitas, dan jaminan keamanan memori Rust ternyata pengaruhnya lebih kecil dari perkiraan

10 komentar

 
qpfjf56 2025-04-30

Tulisan yang sangat menarik, saya membacanya dengan senang hati! Saat saya mencari tahu tentang node, bun, dan deno, saya melihat bahwa bun ditulis dengan bahasa yang asing bagi saya, yaitu zig, jadi saya penasaran bahasa seperti apa itu, dan tulisan ini memberi saya gambaran awal yang bagus!

 
ahwjdekf 2025-01-17

Satu masalah besar di Zig adalah saat ada error pada kode yang ditulis pengguna ketika kompilasi, Zig tidak memberi tahu lokasi atau informasi yang akurat. Sepertinya hanya sampai pustaka standar saja yang ditunjukkan.

 
cosine20 2024-07-01

Setelah membaca pertimbangan, isu diskusi, dan kesimpulannya, sepertinya sejak awal ini memang bukan lingkungan yang membutuhkan Rust. Pernah lihat kurir pengantar makanan berkendara dengan off-roader untuk mengantar pesanan?
Kalau memang harus dikembangkan dengan bahasa native tetapi pekerjaannya bukan yang memory-critical, yang benar adalah memilih yang lebih nyaman untuk dikembangkan. Sampai harus diperdebatkan selama setahun sih tidak juga...

 
[Komentar ini disembunyikan.]
 
botplaysdice 2024-06-24

Menargetkan ratusan juta pengguna....

Saya jadi penasaran ini perusahaan apa. Sepertinya perusahaan yang tidak terikat pada prosedur formal berupa sertifikasi... iri...

 
bus710 2024-06-24

Saya biasanya melihat-lihat zig sekali setahun, dan sepertinya hampir setiap tahun ada breaking change;;
Selain itu, pada level bahasa sendiri belum tersedia library untuk queue atau pengiriman pesan antar-thread, jadi dibandingkan dengan kematangan Rust, rasanya Zig masih harus menempuh jalan yang panjang.
Tentu saja, kalau penggunanya sangat paham API OS, ini mungkin bukan masalah besar…

 
tested 2024-06-24

Rust lebih populer lebih dari 25 kali lipat dibanding Zig, tetapi untuk perekrutan tampaknya Zig lebih menguntungkan.

 
rlcks97 2024-07-01

Sepertinya karena poin nomor 1, yaitu mudah dipelajari oleh pengembang dengan latar belakang C/C++ atau TypeScript.

 
daejin 2024-06-24

Memberikan pengalaman ngoding yang menyenangkan bagi developer dengan latar belakang C
Mudah menulis software dengan cepat (dukungan Vector native, pemanfaatan SIMD, dll.)

Rasanya seperti saat pertama kali belajar Python

 
tsboard 2024-06-24

Sambil melihat Bun dikembangkan dengan bahasa Zig, saya sempat penasaran kenapa harus Zig; tapi berkat tulisan perbandingan yang bagus dengan Rust, sekarang saya jadi paham. Ngomong-ngomong, sepertinya bahasa C benar-benar akan abadi selamanya.