- Rust, çeşitli kavramların birbiriyle sıkı biçimde iç içe geçtiği bir dil; bu yüzden temel bir programı anlamak için bile birçok unsuru aynı anda öğrenmek gerekir
- Fonksiyonlar, generics, enum'lar, pattern matching, trait'ler, referanslar, ownership,
Send/Sync, Iterator gibi unsurların tümü birbiriyle etkileşime girecek şekilde tasarlanmış temel öğelerdir
- JavaScript ile karşılaştırıldığında, JS'te yalnızca bazı kavramları bilerek kod yazmak mümkünken, Rust'ta ancak dilin bütün bağlamı anlaşıldığında anlamlı kod yazılabilir
- Rust'taki bu karmaşıklık öğrenme eşiğini yükseltir, ama aynı zamanda güvenlik ve tutarlılık sağlar ve kod tasarlama biçimini güçlü şekilde etkiler
- Bu dilsel örgü, Rust'u özel kılar; “Daha küçük Rust” vizyonu da incelikle birbirine bağlanmış bir dil felsefesini yeniden düşünmeye sevk eder
Rust öğrenmenin zorluğu
- Rust'un giriş eşiği yüksek olsa da birçok kişi dokümantasyon, API ve tanılama iyileştirmelerine katkıda bulunmuştur
- Temel kavramlar arasında birinci sınıf fonksiyonlar, enum'lar, pattern matching, generics, trait'ler, referanslar, borrow checker, eşzamanlılık güvenliği, iterator'ler yer alır
- Bu kavramlar birbirine bağımlı ve iç içe geçmiş olduğundan tek tek ayrı öğrenilmeleri zordur; standart kütüphane de büyük ölçüde bu özellikleri kullanır
- Yaklaşık 20 satırlık bir Rust kodunu anlamak için bile fonksiyonel paradigma,
Result ve hata işleme, generic tipler, enum'lar, iterator'ler gibi birçok öğeyi aynı anda kavramak gerekir
Rust ve JavaScript karşılaştırması
- Aynı dosya değişikliği algılama programı Rust ve JS ile yazıldığında, Rust tarafında çok sayıda dil kavramı birbirine dolanmıştır
- JS'te temelde yalnızca fonksiyonlar ve null işleme anlaşılırsa çalışan kod yazmak yeterlidir
- Bu, Rust'un sadece daha zor olduğu anlamına gelmez; Rust'un dilin tamamının yapısal olarak anlaşılmasını gerektiren bir tasarım olduğunu gösterir
Rust'un karşılıklı bağlı tasarımı
- Rust'un özü, organik biçimde tasarlanmış özelliklerin birleşimidir
- Enum'lar pattern matching olmadan kullanışsız kalır; pattern matching de enum'lar olmadan kısıtlıdır
Result ve Iterator, generics olmadan uygulanamaz
Send/Sync kavramı ile println kısıtları, trait'ler olmadan güvenli biçimde ifade edilemez
- Borrow checker, closure'ların capture analizini kullanarak
Send/Sync güvenliğini garanti eder
- Bu karşılıklı bağ, Rust'u yalnızca bir özellikler toplamı değil, bütünleşik bir dil sistemi haline getirir
Daha küçük Rust vizyonu
- 2019'da without.boats, “Smaller Rust”tan söz ederek küçük ve rafine bir Rust olasılığını tartıştı
- Bugün Rust çok daha büyümüş olsa da, daha küçük Rust fikri incelikle kenetlenmiş dil tasarımının özünü hatırlatır
- Rust'un çekiciliği, dil öğelerinin birbirinden bağımsızken bir araya geldiklerinde güçlü ifade kabiliyeti ve güvenlik sunmasında yatar
Sonuç
- Rust'u öğrenmek zordur, ancak birbirine geçmiş kavramların tutarlılığı ve bütünlüğü büyük bir güçlü yön olarak öne çıkar
- Bu yapı sayesinde Rust, geliştiricilerin yalnızca kod yazmasını değil, güvenlik ve performansı aynı anda düşünen bir yaklaşım benimsemesini sağlar
- Rust'un özü, “küçük ve incelikle tasarlanmış bir çekirdek dil”dedir; bu da günümüzde genişlemiş Rust'ta bile önemli bir felsefe olarak varlığını sürdürür
Henüz yorum yok.