4 puan yazan ffdd270 2020-07-30 | 3 yorum | WhatsApp'ta paylaş

Ruby 3 ile birlikte TypeScript benzeri type annotation desteği ekleniyor. Bu yazı, Matz ve Ruby Committer ekibinin Ruby'ye statik tipleri getirirken hangi konuları değerlendirdiğini ve hangi çözüm yollarını kullandığını anlatıyor. Aşağıda kısa bir özet yer alıyor.

Ruby 3'te RBS adlı yeni bir dil ekleniyor ve bu dil Ruby 3 ile birlikte sunuluyor.

RBS, Ruby'nin type annotation'ları için kullanılan bir dildir.

  • Ortaya çıkış nedeni

( untype ifadesi dinamik tip olarak çevrilmiştir. )

Tipler ile dinamik tipler, programlama dillerinde uzun süredir devam eden bir karşıtlıktır. Dinamik tipler hızlı geliştirme olanağı sağlar, ancak ekip ve kod tabanı büyüdükçe sorun yaratabilir; tipler ise büyük ölçek için uygundur ama esneklikleri daha düşüktür.

Reklam

Bu iki yaklaşımın avantajlarını birleştirmek için C#, tip denetimini çalışma zamanına erteleyen dynamic özelliğini sundu; PHP ve Python isteğe bağlı tip denetimini benimsedi. TypeScript ise tip belirtilmemiş bir dil için tip dili olmayı seçti.

Ruby de iki yaklaşımın avantajlarını elde etmek için standart bir tip tanımlama dili olan RBS'yi oluşturdu.

  • RBS nasıl görünüyor?

RBS, C/C++/ObjC'deki .h dosyalarına ya da TypeScript'teki .d.ts dosyalarına benzer. Bu yaklaşımın avantajı, mevcut Ruby dosyalarını değiştirmeden tip kontrolünün sağladığı avantajlardan yararlanabilmektir.

RBS'de ilgili sınıfın özellikleri ve metotlarının tipleri tanımlanır. RBS, Ruby programının yapısını açıklayan bir dildir ve geliştiricilere kodun genel görünümünü, ayrıca tanımlı sınıfları ve metotları sunar. En büyük avantajı ise hem implementasyon hem de çalışma için biçimsel tanımların doğrulanabilmesidir.

  • RBS'nin temel özellikleri

Dinamik diller için tip sistemi geliştirmek, zaten statik olarak tiplendirilmiş dillerden farklıdır. Dünyada hâlihazırda çok fazla Ruby kodu bulunuyor ve Ruby için geliştirilen tip sisteminin mümkün olduğunca çok kodu desteklemesi gerekiyordu.

Reklam

Bu yüzden Ruby kodunun iki önemli özelliği ve RBS'nin bunlara getirdiği çözümler tanıtılıyor.

  • Duck typing

Duck typing, tip bilinmese bile belirli metotların var olacağı varsayılarak kod yazma tekniğidir. RBS, bu tekniği desteklemek için interface kavramını getirdi ve argümanın ilgili metotlara sahip olup olmadığının doğrulanabilmesini sağladı.

  • Heterojenlik

Bu, bir ifadenin farklı tiplerde değerler alabilmesini sağlayan başka bir kod kalıbıdır. Ruby'de de yaygındır ve RBS bunu union type desteği ile metot overloading sayesinde mümkün kılar.

  • Tiplerle Ruby programlama
Reklam

RBS'nin başlıca avantajları şunlardır.

  • Daha fazla bug bulunabilir.

  • Nil güvenliği

  • Daha iyi IDE entegrasyonu.

  • Duck typing rehberliği

3 yorum

 
heycalmdown 2020-07-30

https://crystal-lang.org - Crystal'ın RBS ile nasıl bir ilişki kuracağını merak ediyorum. (Crystal, Ruby sözdizimini benimseyen derlenen bir dildir.)

 
ffdd270 2020-07-30

; m; Yazı sürekli ortadan kesildiği için tüm kodları kaldırdım. İstemeden spam yapmış oldum, üzgünüm yu..

 
xguru 2020-07-30

Aaah, sanırım koddaki < yüzünden olmuş. Bunun gibi kodların makale içeriğine gireceğini öngörmemiştik ^^;

İleride Markdown’un yalnızca bir kısmını ekleyip genişletmeyi düşünebiliriz; o zaman bunu da dikkate alırız.