Rust Programlama Dilini Tanıyalım

Güçlü ve Güvenli Programlamanın Anahtarı

Can Celik
10 min readSep 5, 2023

Merhaba herkese,

Uzun bir süredir front-end geliştirmeyle ilgileniyorum. Ancak son zamanlarda front-end dünyasının beni daha fazla heyecanlandırmadığını fark ettim. Araştırmalarım sonucunda Rust programlama dilini keşfettim. Rust öğrenmeye başladıkça, öğrenme isteğim ve merakım beni daha fazla motive etti. Öğrenme serüvenimde başımdan geçen deneyimleri paylaşmaya karar verdim. Şimdi ise Rust programlama dilinin tasarımcısından biraz bahsetmek istiyorum.

Graydon Hore yaşadığı yerden bir görüntü.
Halifax şehiri, Nova Scotia eyaleti

Graydon Hore, 1982'de Halifax, Nova Scotia’da doğdu. 2004 yılında Dalhousie Üniversitesi’nde bilgisayar bilimi alanında lisans derecesi aldı. Mezun olduktan sonra Mozilla’da Firefox tarayıcısı üzerinde çalışmaya başladı. 2006 yılında güvenli ve yüksek performanslı bir programlama dili geliştirme fikrini geliştirmeye başladı.

Bu sorunları çözmek için yeni bir sistem programlama dili geliştirmeye karar verdi. Bu dili güvenli, performanslı ve verimli olacak şekilde tasarladı. Rust’ın ilk prototipini geliştirdi. Rust’ın temel özelliklerini ve hedeflerini özetleyen bir makale yazdı. Mozilla’daki mühendisler ve yöneticilerle birebir görüşmeler yaptı. Rust’ün güvenliğini, performansını ve verimliliğini vurgulayan bir dizi sunum yaptı. Mozilla projeyle ilgilendi ve dilin geliştirilmesinde yardımcı olacak bir mühendis ekibi sağladı.

2010 yılında Mozilla tarafından resmi olarak duyurulan Servo adlı deneysel bir tarayıcı motorunun devam eden gelişiminin bir parçası olarak 2009 yılında projeye sponsor olmaya başladı. Temmuz 2010'da Graydon Hoare, Rust programlama dilini ilk kez Mozilla Yıllık Zirvesi’nde sergiledi.

2013 yılında tükenmişlik yaşadı ve teknik liderlikten ayrılmaya karar verdi. Zamana daha az duyarlı bazı projeler üzerinde çalıştıktan sonra Mozilla’dan ayrıldı ve ödeme ağı Stellar’da çalıştı.

Mozilla’dan ayrılmasının sebebini kendi açıklaması üzerinden anlayabilirsiniz:

“Rust projesinden ayrılmanın nedeni, artık tükendiğimi hissetmemdi. Rust üzerinde tam 8 yıl geçirdim, bunların 4 yılı tam zamanlı olarak projeye katkıda bulunurken geçti ve bu süre boyunca projeyi tamamlamak için büyük bir baskı altındaydım. Araştırma ve geliştirme süreci genişledikçe ve hedefler daha karmaşık hale geldikçe, işler daha zor hale geldi. Rust, şimdiye kadar katıldığım en büyük proje olmaya devam ediyor. Projeyi tamamlamak ve yayınlamak istedim; her yılın sonunda bir sürüm yayınlamak için çalıştık, planlar yaptık, bazen zorlandık ve sonunda 1.0 sürümünü yayınladık. Ancak her gün yeni sorunlar ve kararlarla karşılaşıyorduk: C++, Lisp, Haskell, Scala, Cyclone gibi diğer dillerin çekici özelliklerini Rust’a nasıl dahil edebiliriz? “Dünyanın en hızlı dili” olma hedefini nasıl sürdürebiliriz? Teknik borcu nasıl yönetebiliriz? Dahili tutarlılığı ve doğruluğu nasıl koruyabiliriz? Stabiliteyi nasıl sağlayabiliriz ve umut verici bir programa sahip bir sürümü nasıl yayınlayabiliriz? Ayrıca, Rust’ı bitirmek için sürekli bir çaba haricinde, kişisel yaşantım da ciddi bir şekilde etkilendi ve sağlığımı olumsuz etkiledi. Omuzlarımı incittim ve boyun bölgemde bir tümör bulundu (şükür ki iyi huyluydu ve ameliyatla çıkarıldı). Ayrıca, o dönemde kişiler arası ilişkiler konusunda da sorunlar yaşadım ve teknik liderlik görevlerini yerine getirmekte pek başarılı olamadım. Projenin sorumluluğunu başkasına devretmek benim için büyük bir rahatlama kaynağı oldu ve şimdi bir buçuk yıl boyunca hayatımı biraz toparlamaya çalışıyorum. Mozilla’da geçirdiğim zamanın büyük bir kısmını bağlantı ve coğrafi konum projeleri üzerinde çalışarak geçirdim ve son enerji artışı, Mozilla dışında başka fırsatları keşfetme isteğimi yeniden canlandırdı. Fırsat geldi ve bu fırsatı değerlendirdim. Ayrıca, 2009'da Mozilla’dan ayrılmayı düşündüm; o dönemde ES4 projesinin başarısızlığını yaşadık ve Rust’un doğduğu dönemdi. Ancak Rust projesine katılmak çok cazip bir teklifti ve bu şansı değerlendirmeyi tercih ettim. Şimdi, yeni bir döneme hazırım. Komplo teorileri ile ilgili bir şey yok.”

Rust’ın tip sisteminde 0.2, 0.3 ve 0.4 versiyonları arasında önemli değişiklikler yapıldı. Mart 2012'de yayınlanan 0.2 sürümünde sınıflar ilk kez tanıtıldı. Dört ay sonra, sürüm 0.3, arayüzlerin kullanımı yoluyla yıkıcılar ve polimorfizm ekledi. Ekim 2012'de, kalıtım aracı olarak özellikler ekleyen sürüm 0.4 yayınlandı. Arayüzler özelliklerle birleştirildi ve ayrı bir özellik olarak kaldırıldı; ve sınıfların yerini uygulamalar ve yapılandırılmış türlerin bir kombinasyonu aldı (traitler).

2010'ların başlarında, bellek hatalarını önlemek için sahiplik sistemi aracılığıyla bellek yönetimi kademeli olarak birleştirildi. 2013 yılına gelindiğinde Rust’un çöp toplayıcısı, sahiplik kuralları uygulanarak kaldırıldı.

Dr. Dobb’s Journal
Dr. Dobb’s Journal

Ocak 2014'te, Dr. Dobb’s Journal’ın genel yayın yönetmeni Andrew Binstock, Rust’ın D, Go ve Nim (sonra Nemrut) ile birlikte C++’a rakip olma şansı hakkında yorum yaptı. Binstock’a göre Rust “geniş çapta son derece zarif bir dil olarak görülse de” versiyondan versiyona kökten değiştiği için benimsenmesi yavaşladı. İlk kararlı sürüm olan Rust 1.0, 15 Mayıs 2015'te duyuruldu.

2016 yılında Apple’dan Swift programlama dili üzerinde çalışması için bir çağrı aldı. Rust şu anda çekirdek ekipler ve gönüllü kodlayıcılardan oluşan aktif bir topluluk tarafından geliştiriliyor.

Servo tarayıcı motorunun gelişimi Rust’un kendi büyümesiyle birlikte devam etti. Eylül 2017'de Firefox, Servo bileşenlerini içeren ilk sürüm olarak “Firefox Quantum” adlı bir projede piyasaya sürüldü.

rust’un adını aldıgı pas mantarı
pas mantarı (pas hastalığı)

Hoare daha sonra, mantarın dayanıklılığına atıfta bulunarak Rust’un adını pas mantarından aldığını söyledi.

Ağustos 2020'de Mozilla, COVID-19 salgınının neden olduğu kurumsal yeniden yapılanmanın bir parçası olarak dünya çapındaki 1.000 çalışanından 250'sini işten çıkardı. Servo’nun arkasındaki ekip dağıtıldı. Ekibin bazı üyelerinin Rust’a aktif katkıda bulunması nedeniyle etkinlik Rust’un geleceği hakkında endişelere yol açtı. Sonraki hafta, Rust Çekirdek Ekibi işten çıkarmaların ciddi etkisini kabul etti ve bir Rust vakfı planlarının yolda olduğunu duyurdu.

8 Şubat 2021'de Rust Vakfı’nın kurulduğu beş kurucu şirket (AWS, Huawei, Google, Microsoft ve Mozilla) tarafından duyuruldu. 6 Nisan 2021'de yayınlanan bir blog yazısında Google, Android Açık Kaynak Projesi kapsamında C/C++’a alternatif olarak Rust’u desteklediğini duyurdu.

Rust programlama dilinin yaratıcısı ve geçmişi hakkında bilgi edindikten sonra, şimdi Rust’ın temel özelliklerini ve yapısını daha yakından inceleyebiliriz.

Rust programlama dilinin temel özellikleri ve genel yapısı şu şekildedir:

Güvenlik ve Hız: Rust, güvenlik ve hız odaklı bir programlama dilidir. Bellek hatalarını engellemek ve yüksek performanslı uygulamalar geliştirmek için tasarlanmıştır. Bu sayede, programlar daha güvenilir ve daha hızlı çalışabilir.

Sözdizimi (Syntax): Rust’ın sözdizimi, C ve C++ gibi geleneksel sistem programlama dillerine benzese de daha güvenli ve anlaşılır bir yapıya sahiptir. Özellikle işaretçilerin güvenli kullanımını teşvik eden özellikleri vardır. Sözdizimi açık ve okunabilir olup, ayrıntılara dikkat etmeyi gerektirir.

Sahiplik ve Ödünç Alma (Ownership and Borrowing): Rust’ın en çarpıcı özelliklerinden biri sahiplik sistemidir. Her değişken, bir sahibi vardır ve bu sahibi, değişkenin yaşam döngüsünü yönetir. Rust, aynı bellek bölgesine birden fazla işaretçi aracılığıyla erişim ve değişiklik yapılmasını engellemek için sahiplik ve ödünç alma kavramlarını kullanır.

Hafıza Yönetimi (Memory Management): Rust, dilin derleme aşamasında hafıza güvenliği denetimleri yaparak bellek hatalarını önler. Bu sayede programlar çöp toplama gibi yöntemlere ihtiyaç duymadan bellek kaynaklarını etkili bir şekilde yönetebilir.

Tür Sistemi (Type System): Rust’ın tür sistemi, güçlü ve statik bir tür sistemini temsil eder. Değişkenlerin türleri derleme zamanında belirlenir ve tür güvenliği sağlar. Bu, çalışma zamanında tür hatalarının önüne geçer.

Pattern Eşleme (Pattern Matching): Rust, pattern eşleme özelliğini sunar. Bu özellik, veri yapılarını ve desenleri eşleştirmek için kullanılır ve kodun daha okunabilir ve esnek olmasını sağlar.

Kavramsal Bütünlük (Conceptual Integrity): Rust, kavramsal bütünlüğü teşvik eden bir dil tasarımına sahiptir. Programcılar için tutarlı ve öngörülebilir bir deneyim sunar.

Thread Güvenliği (Thread Safety): Rust, çoklu iş parçacığı (thread) programlamasını kolaylaştıran ve güvenli bir şekilde yapılmasını sağlayan bir dil yapısına sahiptir. Bu, aynı kaynaklara aynı anda erişimden kaynaklanan hataları önler.

Rust programlama dilinin bu temel özellikleri, güvenilir, hızlı ve güçlü uygulamalar geliştirmek için mükemmel bir temel oluşturur. Rust’ın sahiplik modeli ve güçlü tür sistemi, hata ayıklama ve bakım süreçlerini kolaylaştırırken, programcıların daha güvenli kod yazmasına yardımcı olur.

Rust, hızlı, güvenli ve güvenilir bir programlama dilidir ve hem yeni hem de deneyimli geliştiriciler için birçok avantaj sunar.

Rust’un en büyük avantajlarından biri, performansıdır. Rust, C++ ve C ile karşılaştırıldığında benzer veya daha iyi performans sunar. Bunun nedeni, Rust’un bellek yönetimi için bir çöp toplayıcı kullanmamasıdır. Bunun yerine, programcılar bellek yönetimi için manuel olarak sorumludur. Bu, Rust programlarının daha verimli ve hızlı çalışmasına olanak tanır.

Rust’un bir başka önemli avantajı, bellek güvenliğidir. Rust, bellek sorunlarını önlemeye yardımcı olmak için bir dizi özellik içerir. Örneğin, Rust’un referans sayımı bellek yönetimi sistemi, bellek sızıntılarını ve diğer bellek sorunlarını önlemeye yardımcı olur. Rust ayrıca, null referanslar ve diğer hatalı bellek erişimlerine karşı koruma sağlayan güçlü bir tür sistemi de içerir.

Rust, çoklu iş parçacıklı programlama için de iyi bir seçenektir. Rust’un çoklu iş parçacıklı programlamayı kolaylaştıran bir dizi özelliği vardır. Örneğin, Rust’un send ve sync modülleri, programcıların güvenli ve verimli bir şekilde çoklu iş parçacıklı uygulamalar oluşturmasına yardımcı olur.

Rust ayrıca, genel güvenlik açısından da güçlüdür. Rust, güvenlik açıklarını önlemeye yardımcı olmak için bir dizi özellik içerir. Örneğin, Rust’un güvenli kodlama kılavuzu, programcıların güvenli kod yazmalarına yardımcı olur. Rust ayrıca, güvenli olmayan kodları tespit etmek için bir dizi statik analiz aracı da içerir.

Genel olarak, Rust, performans, bellek güvenliği, çoklu iş parçacıklı programlama desteği ve genel güvenlik gibi birçok avantaj sunan güçlü ve yetenekli bir programlama dilidir. Hem yeni hem de deneyimli geliştiriciler için Rust, hızlı, güvenli ve güvenilir uygulamalar geliştirmek için ideal bir seçimdir.

Ayrıca, Rust’u kullanmanın bazı spesifik avantajları da bulunmaktadır:

Performans: Rust, C++ ve C ile karşılaştırıldığında benzer veya daha iyi performans sunar. Bu, Rust programlarının daha hızlı ve verimli çalışmasına olanak tanır.

Bellek Güvenliği: Rust, bellek sorunlarını önlemeye yardımcı olmak için bir dizi özellik içerir. Bu, Rust programlarının daha güvenilir ve hatasız olmasını sağlar.

Çoklu İş Parçacıklı Programlama Desteği: Rust, çoklu iş parçacıklı programlama için iyi bir seçenektir. Rust’un çoklu iş parçacıklı programlamayı kolaylaştıran bir dizi özelliği vardır.

Genel Güvenlik: Rust, genel güvenlik açısından da güçlüdür. Rust, güvenlik açıklarını önlemeye yardımcı olmak için bir dizi özellik içerir.

Rust, performans açısından kritik uygulamalar, güvenlik açısından kritik uygulamalar ve karmaşık uygulamalar için ideal bir seçenektir. Rust, yeni bir programlama dili olmasına rağmen hızla popülerlik kazanmış ve birçok büyük şirket tarafından benimsenmiştir. Bu şirketler arasında Google, Mozilla ve Microsoft gibi önde gelen isimler bulunmaktadır. Rust, güvenli, hızlı ve güvenilir uygulamalar geliştirmek isteyen herkese hitap eden bir programlama dilidir.

Bu bölümde dilin avantajlarını ve dezavantajlarını içtenlikle ele alalım.

Rust, performans, bellek güvenliği ve çoklu programlama modları için tasarlanmış bir sistem programlama dilidir. C ve C++’ın performansını ve bellek güvenliğini sunarken, C ve C++’ın sahip olduğu bazı güvenlik risklerini ve performans sorunlarını ortadan kaldırır.

Rust’un bazı avantajları şunlardır:

Yüksek performans: Rust, C ve C++ kadar hızlıdır ve aynı zamanda bellek güvenliği sağlar. Bu, Rust’u kritik sistemler için ideal bir seçim haline getirir.
Bellek güvenliği: Rust, bellek hataları için korumalar sağlar. Bu, bellek sızıntıları, çökmeler ve güvenlik açıkları gibi yaygın sorunlardan kaçınmaya yardımcı olur.
Çoklu programlama modları: Rust, çoklu programlama modlarını destekler. Bu, aynı anda birden fazla görevi çalıştırmanıza olanak tanır.

Rust’un bazı dezavantajları şunlardır:

Öğrenmesi zor: Rust, C ve C++’tan daha karmaşık bir dildir. Bu, Rust’u öğrenmenin yeni programcılar için zor olabileceği anlamına gelir.
Araç zinciri geliştirme aşamasında: Rust’un araç zinciri, hala geliştirme aşamasındadır. Bu, bazı özelliklerin eksik veya kararsız olabileceği anlamına gelir.
Küçük bir topluluk: Rust topluluğu, C ve C++ topluluklarından daha küçüktür. Bu, Rust için destek ve kaynak bulmanın daha zor olabileceği anlamına gelir.
Rust kullanırken karşılaşılabilecek potansiyel zorluklardan bazıları şunlardır:

Yanlış tiplendirmeler: Rust, yanlış tiplendirmeler için katı bir kontrol sistemi kullanır. Bu, kodunuzun derlenmesinden önce hataları tespit etmenize yardımcı olabilir, ancak aynı zamanda hata bulmanızı daha da zorlaştırabilir.
Bellek yönetimi: Rust, akıllı işaretçiler kullanarak bellek yönetimini otomatikleştirir. Bu, bellek sızıntıları gibi sorunları önlemeye yardımcı olabilir, ancak aynı zamanda bellek yönetimini anlamak için biraz çaba gerektirebilir.
Araç zinciri sorunları: Rust araç zincirinin hala gelişme aşamasında olması, bazı sorunlara yol açabilir. Örneğin, araçlarınız düzgün çalışmayabilir veya güncellenmiş araç sürümlerine geçiş yapmak zor olabilir.
Genel olarak, Rust, performans, bellek güvenliği ve çoklu programlama modları için güçlü bir seçenektir. Ancak, Rust’un öğrenmesi zor olabileceğini ve henüz tam olarak gelişmiş olmadığını hatırlamak önemlidir.

Yolda karşılaştığım zorlukları ve başarıları sizinle paylaşarak, Rust öğrenme serüvenimin ilerlemesini ve belki de başkalarının benimle aynı yolu paylaşmasını umuyorum. Rust hakkında daha fazla bilgi ve deneyim paylaşımı yapmaya devam edeceğim. Eğer benzer bir yolculuğa çıkmayı düşünüyorsanız, sormak istediğiniz herhangi bir soru varsa, lütfen çekinmeden sorun.

Yolculuğumun devamını bekleyin!

Burada paylaştığım bilgileri araştırırken ziyaret ettiğim ve bilgi edindiğim web sitelerine ait linkleri aşağıda bulabilirsiniz:

1. Şenyurt, B. S. (2021, 25 Aralık). Programcıdan Programcıya rust. Medium. Bağlantı

2. Öztoprak, R., By, Öztoprak, R., Rabia Öztoprak, Muharrem Demirel, digicentralized. (2023, 23 Ağustos). Rust 101: Rust Programlama Diline Genel Bir Bakış. Digicentralized. Bağlantı

3. Ayan, Z. (tarih bilinmiyor). Devnot. Bağlantı

4. Bhagyashree R, By, R, B., Expert Network, Packt Editorial Staff, Savia Lobo. (2019, 20 Haziran). Rust’s original creator, Graydon Hoare on the current state of system programming and safety. Packt Hub. Bağlantı

5. Bogan, D. (2019, 10 Ekim). Uses this: Graydon Hoare. The latest interviews. Bağlantı

6. “Graydon Hoare — Crunchbase Person Profile. Crunchbase. Bağlantı

7. Graydon Hoare. Graydon Hoare Wiki. (2021, 1 Nisan). Bağlantı

8. “I wonder, why Graydon Hoare, the author of rust, stopped contributing into it and switched to swift?. reddit. (tarih bilinmiyor). Bağlantı

9. Murat Demirci. (2023, 15 Ağustos). Rust Programlama Dili. Bağlantı

10. Nguyen, P. (2022, 21 Mart). Rust creator Graydon Hoare recounts the history of compilers — inapps 2022. InApps. Bağlantı

11. Rust programlama Dili Hakkında Düşüncelerim. Nazım Can Altınova. (tarih bilinmiyor). Bağlantı

12. Rust Programlama Dili: Hız, Güvenlik ve çoklu i̇ş Parçacığı Desteği — all is ready. All Is Ready | Teknoloji, Yazılım ve Daha Fazlası. (2023, 16 Şubat). Bağlantı

13. The rust programming language. Introduction — The Rust Programming Language. (tarih bilinmiyor). Bağlantı

14. Rust. Rust Programming Language. (tarih bilinmiyor). Bağlantı

15. Wikimedia Foundation. (2023a, 27 Mart). Servo (software). Wikipedia. Bağlantı

16. Wikimedia Foundation. (2023b, 21 Haziran). Rust (Programlama Dili). Wikipedia. Bağlantı

--

--