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'ta `unsafe` Olmadan C'nin Rahatlığında Sistem Programlama Yapmak İstiyordum, Yanılmışım!

byteon

Üye
Katılım
14 Mart 2026
Mesajlar
30
🔥 "Bu Sefer C Değil, Rust!" Dedim Ama...

Kafayı yiyecektim. Yıllardır C ile yazdığım, bellek adresleriyle oynadığım, pointer'ları dans ettirdiğim o düşük seviyeli sistem rutinlerini, "artık modern ve güvenli olacak" diyerek Rust'a taşımaya karar verdim. Amacım basitti: unsafe bloğuna hiç bulaşmadan, C'deki gibi rahat rahat bellek yönetebilecektim. Meğer ne hayalmiş!

🧠 Ownership ve Borrow Checker Duvarı

İlk engel, tabii ki Ownership ve Borrow Checker. C'de bir pointer'ı istediğin yere paslar, istediğin gibi kopyalar, değiştirirsin. Rust'ta ise derleyici, her adımda "Bu verinin sahibi şu an kim?", "Bunu birden fazla kişi değiştirmeye çalışıyor mu?" diye sorguluyor. Basit bir çift yönlü bağlı liste (doubly linked list) yazmaya kalktığımda, derleyicinin bana söylediği hata mesajları adeta bir felsefe kitabı gibiydi.

Kod:
struct Node {
    value: i32,
    next: Option<Box<Node>>,
    prev: Option<mut Node>, // İşte burada başladı sıkıntı...
}

prev için raw pointer (mut Node) kullanmak zorunda kaldım çünkü Box veya Rc ile döngüsel referansı güvenli bir şekilde kurmak imkansız hale geliyordu. Ve raw pointer dediğin şey, seni hemen unsafe bloğunun kucağına atıyor! "Ama ben unsafe kullanmayacaktım!" diye isyan ettim kendi kendime.

⚡ C'nin "Serbest Stili" vs Rust'ın "Disiplinli Koridoru"

C'de yapardın şunu: malloc, işini yap, sonra umursamaz bir şekilde free et (ya da bazen unuturdun). Rust'ta ise her şey scope'un sonunda otomatik temizleniyor (drop) evet, bu harika. Ama bu rahatlığın bedeli, veri yapılarını tasarlarken bu otomatik temizlemeyi ve mülkiyet kurallarını her an düşünmek. C'deki gibi "şu struct'ın içindeki şu alana şu adresi ata, gitsin" özgürlüğü yok. Her şey, derleyicinin onayladığı "güvenli koridorlar"dan geçmek zorunda.

💡 Peki Neden Devam Ediyorum?

Çünkü o segmentation fault'ların, use-after-free'lerin, data race'lerin artık derleme zamanında yakalanıyor olması büyük bir huzur. Evet, C'deki gibi "rahat" değil, daha disiplinli, daha düşünerek yazıyorsun. Ama yazdığın kod, bir kere derlendikten sonra, bellek güvenliği konusunda çok daha sağlam oluyor.

Sonuçta, Rust, C'nin rahatlığını ve doğrudan kontrol hissini unsafe olmadan sunmuyor. Onun yerine, farklı bir paradigma sunuyor: güvenlik ve performansı bir arada, ama katı kurallarla. Alışması zor, bazen sinir bozucu, ama bir kere alışınca, C'ye döndüğünde "burada potansiyel bir bug var aslında" diye düşünmeden edemiyorsun.

Siz de Rusta geçerken benzer bir "kültür şoku" yaşadınız mı? Özellikle sistem seviyesinde unsafe kullanmadan kompleks veri yapıları kurmanın daha temiz yolları var mı? Fikirlerinizi bekliyorum!
 

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