Swift adalah Rust yang lebih praktis
(blog.namangoel.com)Rust
- Rust adalah bahasa yang sangat dicintai, cepat, dan memiliki komunitas yang hebat
- Rust memperkenalkan konsep ownership untuk menyelesaikan masalah manajemen memori
- Menyediakan utilitas seperti
Rc,Arc,Cowuntuk mendukung reference counting dan "clone-on-write" - Saat diperlukan pekerjaan tingkat lebih rendah, sistem
unsafedapat digunakan untuk mengakses raw C pointer - Rust memiliki berbagai ciri bahasa fungsional seperti tagged enum, match expression, first-class function, dan sistem tipe yang kuat
- Menggunakan compiler berbasis LLVM sehingga dapat dikompilasi ke native code dan WASM
Swift
- Swift juga telah digunakan selama beberapa tahun, dan saat mempelajari Rust terlihat kemiripannya dengan Swift
- Swift juga memiliki ciri bahasa fungsional seperti tagged enum, match expression, dan first-class function
- Swift pada dasarnya menggunakan value type dan memiliki semantik "copy-on-write"
- Saat dibutuhkan performa yang lebih cepat, kita dapat memilih sistem ownership untuk "move" nilai
- Saat diperlukan pekerjaan tingkat lebih rendah, sistem
unsafedapat digunakan untuk mengakses raw C pointer - Swift juga menggunakan compiler berbasis LLVM sehingga dapat dikompilasi ke native code dan WASM
Déjà vu?
- Swift dan Rust memiliki set fitur yang sangat mirip
- Perbedaan besarnya ada pada sudut pandang
- Jika melihat model memori dasarnya, perbedaannya menjadi jelas
Rust bersifat top-down, Swift bersifat bottom-up
- Rust dimulai sebagai bahasa sistem tingkat rendah lalu menyediakan alat untuk naik ke tingkat yang lebih tinggi
- Swift dimulai sebagai bahasa tingkat tinggi lalu menyediakan alat untuk turun ke tingkat yang lebih rendah
- Model manajemen memori adalah contoh yang paling jelas
- Swift pada dasarnya menggunakan value type dan memiliki semantik "copy-on-write"
- Rust memudahkan penggunaan nilai yang "moved" dan "borrowed", tetapi membutuhkan pekerjaan tambahan untuk menggunakan nilai
Cow - Swift memudahkan penggunaan nilai "copy-on-write", tetapi sebagai gantinya membutuhkan pekerjaan tambahan saat menggunakan borrowing dan move
- Rust pada dasarnya lebih cepat, sedangkan Swift pada dasarnya lebih sederhana dan mudah
Swift menyembunyikan ide-ide Rust dalam sintaks mirip C
- Sintaks Swift menyembunyikan konsep bahasa fungsional dalam sintaks mirip C sehingga pengembang lebih mudah menerimanya
- Perbandingan antara pernyataan
matchdi Rust dan pernyataanswitchdi Swift - Pernyataan
switchdi Swift pada dasarnya sama dengan match expression, hanya dengan nama dan sintaks yang berbeda - Swift memungkinkan penambahan method langsung ke
enum
Tipe opsional
- Rust tidak memiliki
null, tetapi memilikiNone - Swift memiliki
nil, tetapi pada dasarnya itu sama denganNone - Swift menggunakan
T?alih-alihOption, dan memaksa compiler untuk memastikan nilainya bukannil - Di Swift, tipe opsional dapat digunakan dengan mudah
Penanganan error
- Rust tidak memiliki
try-catch, tetapi menggunakan tipeResult - Swift menggunakan
do-catchalih-alihtry-catch, dantryharus digunakan sebelum pemanggilan fungsi - Penanganan error di Swift mirip dengan Rust, tetapi disamarkan dengan sintaks yang lebih familier
Compiler Rust menangkap masalah, compiler Swift menyelesaikan sebagian masalah
- Compiler Rust menangkap banyak masalah umum pada waktu kompilasi dan menyarankan solusinya
- Contoh self-referential enum
- Swift menggunakan kata kunci
indirectuntuk menandai recursive type, lalu compiler menangani sisanya
Swift kurang "murni"
- Swift dirancang untuk menggantikan Objective-C, sehingga harus dapat berinteraksi dengan kode yang sudah ada
- Swift mengambil banyak pilihan praktis, dan merupakan bahasa yang lebih besar daripada Rust
- Swift dirancang dengan "progressive disclosure" dalam pikiran, sehingga semakin banyak belajar bahasanya, semakin banyak fitur yang terbuka
- Beberapa fitur bahasa Swift:
- class / inheritance
- async-await
- async-sequences
- actors
- getter dan setter
- lazy properties
- property wrappers
- Result Builders (mis: HTML / SwiftUI)
Harga dari kenyamanan
- Swift adalah bahasa yang lebih mudah untuk mulai digunakan dan meningkatkan produktivitas
- Sintaksnya lebih familier dan banyak pekerjaan ditangani secara otomatis
- Swift adalah bahasa tingkat lebih tinggi, dan itu membawa trade-off yang sama
- Secara default, program Rust jauh lebih cepat daripada program Swift
- Rust secara default cepat dan memungkinkan Anda membuatnya lebih lambat, sedangkan Swift secara default mudah dan memungkinkan Anda membuatnya lebih cepat
- Kedua bahasa memiliki kegunaannya masing-masing
- Rust lebih cocok untuk pemrograman sistem dan embedded
- Swift lebih cocok untuk menulis UI dan server
- Seiring waktu, area tumpang tindih antara kedua bahasa ini diperkirakan akan makin besar
Ringkasan GN⁺
- Artikel ini membandingkan serta menjelaskan persamaan dan perbedaan antara Swift dan Rust
- Swift meminjam banyak ide dari Rust dan menyajikannya dengan sintaks yang lebih familier
- Kedua bahasa memiliki kekuatan dan kegunaannya masing-masing, dan diperkirakan akan memiliki lebih banyak area tumpang tindih seiring waktu
- Membantu memahami perbedaan dalam berbagai aspek seperti model manajemen memori, penanganan error, dan tipe opsional pada Swift dan Rust
- Bahasa lain dengan fitur serupa antara lain Kotlin dan TypeScript
1 komentar
Opini Hacker News
Alasan orang yang baru pertama kali memakai Rust menyukai Rust adalah karena mereka baru pertama kali mengenal bahasa keluarga ML
Rust adalah bahasa pertama yang membawa manajemen memori otomatis non-GC ke arus utama
Era Smalltalk sudah berakhir, sekarang adalah era ML
Saat mengerjakan integrasi Rust ke aplikasi iOS Swift, muncul keinginan untuk lebih banyak memakai Swift
Rust memperkenalkan konsep ownership untuk menyelesaikan masalah manajemen memori, tetapi bukan penemunya
Rust dan Swift masing-masing punya keunggulan
Tooling Swift lebih tidak nyaman daripada Rust
Pernah mencoba mempelajari Rust, tetapi kesulitan karena contoh-contohnya terlalu rumit
Swift bisa langsung menambahkan metode ke enum
Swift secara default memakai value type dan menggunakan copy-on-write semantics
Setiap kali membaca tulisan yang memuji Swift, muncul rasa penasaran tentang pengalaman para pengembang yang tidak memakai ekosistem Apple/macOS
Ingin tahu apakah saya satu-satunya yang tidak suka sintaks titik di Zig dan Swift
.variantvsType::Variant