Tipe di Ruby 3 - Memperkenalkan RBS, bahasa baru untuk pembedaan tipe
(developer.squareup.com)Mulai Ruby 3, Type Annotation seperti di TypeScript ditambahkan. Ini adalah tulisan yang menjelaskan pertimbangan Matz dan Ruby Committer Team saat memperkenalkan tipe statis ke Ruby, serta solusi yang mereka gunakan. Berikut ringkasannya.
Di Ruby 3, bahasa baru bernama RBS ditambahkan, dan disertakan bersama Ruby 3.
RBS adalah bahasa untuk Type Annotation di Ruby.
- Latar belakang diperkenalkannya
(untype diterjemahkan sebagai dynamic type.)
Tipe dan dynamic type adalah pertarungan lama dalam bahasa pemrograman. Dynamic type memungkinkan pengembangan cepat, tetapi memiliki masalah saat tim dan codebase berkembang, sedangkan tipe cocok untuk skala besar namun kurang fleksibel.
Untuk mendapatkan kelebihan dari kedua pendekatan tersebut, C# memilih fitur dynamic yang menunda pemeriksaan tipe hingga runtime, PHP dan Python memilih opsi pemeriksaan tipe. TypeScript memilih bahasa tipe yang membuat bahasa yang tidak menetapkan tipe.
Ruby membuat bahasa pembedaan tipe standar, yaitu RBS, untuk mendapatkan kelebihan dari kedua pendekatan itu.
- Seperti apa bentuk RBS?
RBS mirip dengan .h di C/C++/ObjC atau .d.ts di TypeScript. Keuntungan pendekatan ini adalah kita bisa mendapatkan manfaat pemeriksaan tipe tanpa memodifikasi file Ruby yang sudah ada.
Di RBS, properti kelas terkait dan tipe metodenya didefinisikan. RBS adalah bahasa yang mendeskripsikan struktur program Ruby, serta memberikan gambaran kode dan kelas serta metode yang telah didefinisikan kepada pengembang. Keunggulan terbesarnya adalah definisi formal dapat diperiksa baik terhadap implementasi maupun eksekusi.
- Fitur inti RBS
Pengembangan sistem tipe untuk bahasa dinamis berbeda dari bahasa yang sudah bertipe statis. Sudah ada banyak kode Ruby di dunia, dan sistem tipe untuk Ruby harus mendukung sebanyak mungkin kode tersebut.
Karena itu, berikut diperkenalkan dua karakteristik penting dari kode Ruby dan solusi RBS untuknya.
- Duck typing
Duck typing adalah teknik menulis kode dengan asumsi bahwa meskipun tipenya tidak diketahui, metode tertentu akan tersedia. Untuk mendukung teknik ini, RBS memperkenalkan interface, sehingga dapat memeriksa apakah argumen memiliki metode tersebut.
- Non-homogenitas
Ini adalah pola kode lain yang memungkinkan ekspresi memiliki nilai dari tipe yang berbeda. Pola ini juga populer di Ruby, dan RBS memungkinkannya melalui dukungan union type dan method overload.
- Pemrograman Ruby bersama tipe
Berikut keunggulan utama RBS.
-
Dapat menemukan lebih banyak bug.
-
Keamanan terhadap
nil -
Integrasi IDE yang lebih baik.
-
Panduan duck typing
3 komentar
https://crystal-lang.org - Saya penasaran bagaimana Crystal akan memosisikan hubungannya dengan RBS. (Crystal adalah bahasa terkompilasi yang mengadopsi sintaks Ruby.)
; m; Tulisan ini terus terpotong di tengah, jadi semua kode saya hapus. Maaf karena tanpa sengaja jadi spam huh..
Ah, sepertinya karena ada `