Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Rust ile Sistem Programlamaya Giriş: Güvenlik ve Performansın Yeni Adresi ⚙️

asternix

Üye
Katılım
14 Mart 2026
Mesajlar
12
Rust ile Sistem Programlamaya Giriş: Güvenlik ve Performansın Yeni Adresi ⚙️

Selam dostlar! Bugün sizlere, son yıllarda yazılım dünyasını sallayan ve özellikle sistem programlama alanında adından sıkça söz ettiren bir dilden, Rust'tan bahsetmek istiyorum. Eğer C++'ın performansını seviyor ama bellek hatalarıyla (null pointer, use-after-free) boğuşmaktan yorulduysanız, Rust tam size göre olabilir. Gelin, bu modern dilin neden bu kadar heyecan yarattığına birlikte bakalım.

Rust Nedir ve Neden Bu Kadar Özel?

Rust, Mozilla tarafından geliştirilmeye başlanan ve şu anda bağımsız bir vakıf tarafından yönetilen, sıfır maliyetli soyutlamalar, bellek güvenliği ve iş parçacığı (thread) güvenliği üzerine odaklanan bir sistem programlama dilidir. En büyük vaadi şu: "C/C++ gibi hızlı çalışır, ancak derleme zamanında yakaladığı hatalarla çok daha güvenlidir."

Peki bu nasıl oluyor? Cevap, dilin kalbindeki mülkiyet (ownership), ödünç alma (borrowing) ve ömür (lifetime) kavramlarında yatıyor. Bu kavramlar sayesinde Rust derleyicisi (rustc), programınızı derlerken olası bellek erişim hatalarını ve veri yarışı (data race) durumlarını tespit edip sizi uyarır. Yani, hatalar çalışma zamanında (runtime) değil, derleme zamanında ortaya çıkar. Bu, bir sistem programcısı için paha biçilmez bir özelliktir.

Rust'a İlk Adımlar: Kurulum ve "Merhaba Dünya!"

Rust'ı kurmak inanılmaz kolay. Resmi sitesinden `rustup` aracını indirip çalıştırmanız yeterli. Bu araç, Rust derleyicisini (`rustc`), paket yöneticisini (`cargo`) ve dokümantasyonu tek seferde kurar.

Terminalinizi açın ve şu komutu verin:
Bash:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Kurulum tamamlandığında, ilk projemizi oluşturalım. Rust'ın resmi paket yöneticisi ve yapı sistemi olan `cargo` bu işi bizim için çok basit hale getiriyor.

Bash:
cargo new merhaba_dunya
cd merhaba_dunya

`cargo new` komutu, `src` klasörü içinde bir `main.rs` dosyası ve proje yapılandırması için `Cargo.toml` dosyası oluşturur. Şimdi `src/main.rs` dosyasını inceleyelim:

Kod:
fn main() {
    println!("Merhaba, dünya!");
}

Gördüğünüz gibi söz dizimi oldukça temiz. `fn` fonksiyon tanımlamak için kullanılır. `println!` ise bir makro (macro)'dur (sonundaki `!` işareti bunu belirtir). Programı çalıştırmak için proje dizininde şunu yazın:

Bash:
cargo run

`cargo run` komutu, kodu derleyecek ve çalıştıracaktır. Terminalinizde "Merhaba, dünya!" yazısını göreceksiniz. 🎉

Rust'ın Temel Güçleri: Mülkiyet ve Ödünç Alma

Rust'ın felsefesini anlamak için basit bir örnekle başlayalım. Diyelim ki bir `String` değişkenimiz var.

Kod:
fn main() {
    let s1 = String::from("Merhaba"); // s1, bu string'in sahibidir.
    let s2 = s1; // Burada veri KOPYALANMAZ, MÜLKİYET s1'den s2'ye GEÇER.

    println!("{}", s1); // HATA! Bu satır derlenmez.
}

Bu kod derlenmeyecektir! Neden? Çünkü `let s2 = s1;` satırından sonra `s1` artık o string verisinin sahibi değildir. Mülkiyet `s2`'ye geçmiştir. Rust, aynı anda bir verinin sadece bir sahibi olmasını garanti eder. Bu, çift serbest bırakma (double free) gibi hataları imkansız kılar.

Peki veriyi kopyalamak veya başkasına "ödünç vermek" istersek? İşte burada referanslar ve ödünç alma devreye girer.

Kod:
fn main() {
    let s1 = String::from("Merhaba");
    let uzunluk = hesapla_uzunluk(&s1); // & işareti ile s1'in REFERANSINI (ödünç) veriyoruz.
    println!("'{}' kelimesinin uzunluğu {} karakterdir.", s1, uzunluk); // s1 hala geçerli!
}

fn hesapla_uzunluk(s: &String) -> usize { // Parametre olarak bir String referansı alıyor.
    s.len()
} // Burada referansın kapsamı dışına çıkılıyor, ancak sahip olduğu şey ödünç alınmış bir veri olduğu için hiçbir şey serbest bırakılmaz.

Bu kod sorunsuz çalışır. `&s1` ile `s1` değişkeninin değiştirilemez bir referansını (immutable reference) fonksiyona ödünç verdik. Fonksiyon işini bitirdikten sonra mülkiyet hala `s1`'de kaldığı için onu kullanmaya devam edebiliriz.

Özetle Rust'ın Temel Kuralları:
  • Her değerin bir sahibi vardır.
  • Aynı anda bir kapsamda, bir değere ait ya bir tane değiştirilebilir referans (&mut T) ya da birden fazla değiştirilemez referans (&T) bulunabilir. İkisi aynı anda olamaz.
  • Referanslar her zaman geçerli olmalıdır (dangling pointer olamaz).

Neden Rust Öğrenmeliyim?

  • Güvenlik: Derleme zamanı bellek ve eşzamanlılık güvenliği sağlar. Bu, işletim sistemi çekirdeği, tarayıcı motorları (Firefox'un Servo'su), gömülü sistemler gibi kritik yazılımlar için altın değerindedir.
  • Performans: C/C++ seviyesinde performans sunar. Çalışma zamanı çöp toplayıcısı (garbage collector) yoktur, bellek yönetimi derleme zamanında planlanır.
  • Verimlilik: `cargo` paket yöneticisi, birçok modern dilde olduğu gibi bağımlılık yönetimini, testleri ve dokümantasyon oluşturmayı inanılmaz kolaylaştırır.
  • Gelişen Ekosistem: WebAssembly (Wasm), blok zinciri, oyun motorları, komut satırı araçları gibi birçok alanda aktif olarak kullanılıyor ve kütüphane (crate) ekosistemi hızla büyüyor.

Rust, ilk başta öğrenme eğrisi dik gibi görünebilir (özellikle mülkiyet sistemi). Ancak bu sistemi sindirdiğinizde yazdığınız kodun ne kadar sağlam olduğunu görmek, bu çabaya değer. 🧠

Sizce sistem programlama dünyası Rust ile yeni bir çağa mı giriyor? Daha önce Rust deneyiminiz oldu mu? Ya da C++/C ile karşılaştığınız bellek hikayelerinizi paylaşmak ister misiniz? Yorumlarda buluşalım!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri