Merhabalar,

RUST programlama dilinin önümüzdeki yıllarda çok daha popüler olacağı ve bu sayede iyi paralar kazanabileceğinizi düşünüyorum.

Türkiye'de de çok popüler olduğunda bu konuyu hortlatmak amacıyla şimdiden r10'da konusu açılmış olsun istedim.

Vakit bulabilen arkadaşlar Rust'ın kendi sitesindeki kitaptan veya o'reilly programming rust kitabından öğrenmeye başlayabilir. Bu tavsiyem için muhtemelen ileride bana teşekkür edeceksiniz

Devnot sitesinden, Rust'ın ne olduğu hakkında bir yazıyı alıntılayarak konuyu bitiriyorum.

Rust programlama dili, özellikle güvenilir bir şekilde asenkron işler yapabilmek için tasarlanan, bellek güvenliği öncelikli, çoklu geliştirim yaklaşımlarına sahip bir sistem programlama dilidir. Çoklu geliştirim yaklaşımları olarak: eş zamanlı, fonksiyonel, generic, emirsel ve yapısal programlama dillerinin yeteneklerini bünyesinde barındırır. Söz dizimi olarak C++’a benzemekle birlikte, yüksek bir performans ile güvenli bellek yönetimini gerçekleştirir.
Mozilla Research’te Graydon Hoare tarafından tasarlanan Rust, JavaScript’in geliştiricisi olan Brendan Eich, ve asm.js ile birlikte internet tarayıcısı motoru olan Servo’nun geliştiricisi olan Dave Herman gibi birçok ünlü geliştiricinin katkılarıyla oluşturulmuştur. Rust dilinin tasarımcıları, Servo tarayıcı motorunu yazarken bu dili iyileştirip yeni özellikler eklemişlerdir. Özgür ve açık kaynaklı derleyiciye sahip olan Rust, Stack Overflow geliştirici anketlerinde son 4 yıl üst üste “en çok sevilen yazılım dili” olmayı başarmıştır.

Dilin Tasarımı

Rust dili, asenkron işlemler ağırlıklı, oldukça güvenilir ve büyük ölçekli sistemlerin geliştirimi için tasarlanmıştır. Bu nedenle güvenilirlik, bellek düzeninin kontrolü ve eşzamanlılık gibi birçok özelliği barındıran bir işlem kümesine sahiptir.
Rust dilinin söz dizimi, C ve C++ ile benzerlikler gösterecek şekilde, kod bloklarının birbirinden ayrıldığı süslü parantezleri ve if-else-while-for gibi kontrol akışlarını içerir. C ve C++’a özgü tüm anahtar kelimelerin bulunmasının yanında match gibi regex kontrolü sağlayan bazı özel kontrol ifadelerini içerir. Söz dizimi C ve C++’a benziyor gibi görünse de, derinlemesine ele alındığında Haskell gibi fonksiyonel dillere daha yakın niteliktedir. Kontrol akışı operatörleri de dahil olmak üzere her bir fonksiyon gövdesi çalıştırılabilir bir kod ifadesidir. Örneğin, Rust’taki sıradan bir if koşulu, C’deki 3’lü koşul operatörünün (a?x:y) yerini alabilir. Ayrıca fonksiyonların return ifadesi ile bitmeleri gerekmez, return ifadesi olmadığı durumda fonksiyon içerisindeki son ifade geri döndürülür.

Bellek Güvenliği

Rust dili bellek güvenli (memory-safe) olarak tasarlandığı için; null işaretçileri, silinen belleği gösteren işaretçiler (dangling pointers), ve birden fazla thread’in veriyi isteme durumu (data races) gibi özellikler içermez. Bu nedenle değişkenler, sadece sabitlenmiş form kümeleri (struct, enum, vb.) aracılığıyla atanabilirler. Bu form kümeleri, girdi değerlerinin halihazırda forma verilmiş olmasını şart koşmaktadır. Diğer dillerde bulunan linked list ve binary tree gibi veri yapılarındaki işlevin sağlanması için NULL ifadesi yerine Rust’ta option türü yer almaktadır. Bu tür içerisinde Some veya None olan test edilebilir iki adet veriyi barındırmaktadır. Ayrıca Rust’ta nesne yaşam döngüsünü yönetmek için borrow checker adında bir ödünç alma denetimi de mevcuttur.

Bellek Yönetimi

Rust’ın belki de en büyük özelliklerinden biri Java ve .NET’teki gibi ölü nesnelerin işaretçilerinin otomatik olarak kaldırıldığı bir garbage collection sisteminin bulunmamasıdır. Bunun yerine bellek ve diğer kaynaklar, isteğe bağlı atomik referans sayımı ile birlikte, RAII (resource acquisition is initialization) ilkesi ile yönetilirler. Bu sayede Rust, çok küçük bir iş gücü ile kaynakların yönetimini sağlar. Ayrıca Rust, stack üzerinde değişkenlerin tahsis edilmesini kolaylaştırır ve Java gibi diğer dillerde bulunan int’ten Integer’a otomatik dönüştürme (boxing) işlemine de izin vermez.
Ayrıca & (ampersand) sembolünün kullanıldığı referans kavramı da mevcuttur. Bu referanslar çalışma zamanındaki referans sayımına dahil edilmezler. Bunun yerine derleme zamanında borrow checker tarafından doğrulanırlar. Bu sayede dangling pointer veya diğer beklenmedik davranışlar engellenmiş hale gelmektedir.

Bellek Sahipliği

Rust’ta her verinin benzersiz bir sahibinin olduğu bir sahiplenme (ownership) mekanizması mevcuttur. Bu sistemde verinin scope’u (çalışma alanı), sahibinin scope’u ile aynıdır. Böylece verinin scope’u tamamlandığında, sahibi de boşa çıkmış olur. Değerler, &T operatörü kullanılarak, immutable (değiştirilmez) referanslar tarafından değişkenlere atanabilirler. Değiştirilebilen (mutable) refarans operatörü olarak, &mutT veya sadece T kullanılabilir. Uygulama içerisinde her zaman ya birden çok immutable referans vardır, ya da yalnızca bir adet mutable referans bulunmaktadır. Rust derleyicisi derleme anında referansların doğru olarak atanıp-atanmadığını kontrol ederek bu kuralları uygular.

http://devnot.com/2019/rust-programlama-diline-giris/