BİLİM VE TEKNOLOJİ

Rust, bir yan projeden dünyanın en sevilen programlama diline nasıl geçti?


Hoare 21. katta yaşıyordu ve merdivenleri çıkarken sinirlendi. “Biz bilgisayar çalışanlarının bir hesap bile yapamamamız çok saçma,” diye düşündü. asansör bu çökmeden çalışır!Hoare, bu tür birçok çökmenin, bir programın belleği kullanma biçimindeki sorunlardan kaynaklandığını biliyordu. Asansörler gibi cihazların içindeki yazılımlar, genellikle programcıların çok hızlı çalışan ve oldukça derli toplu kod yazmasına izin vermesiyle ünlü C++ veya C gibi dillerde yazılır. Sorun şu ki, bu diller aynı zamanda yanlışlıkla bellek hatalarının (çökmeye neden olacak hatalar) ortaya çıkmasını kolaylaştırıyor. Microsoft, kodundaki güvenlik açıklarının %70’inin bu dillerde yazılmış kodlardan kaynaklanan bellek hatalarından kaynaklandığını tahmin etmektedir.

Çoğumuz, kendimizi 21 kat merdiven çıkarken bulsak, sinirlenir ve onu orada bırakırdık. Ama Hoare bu konuda bir şeyler yapmaya karar verdi. Dizüstü bilgisayarını açtı ve bellek hataları olmadan küçük, hızlı kod yazmayı mümkün kılacağını umduğu yeni bir bilgisayar dili tasarlamaya başladı. “Hayatta kalmak için aşırı tasarlanmış” bir grup olağanüstü dayanıklı mantardan sonra ona Rust adını verdi.

On yedi yıl sonra, Rust gezegendeki en popüler yeni dillerden biri haline geldi – belki de the en sıcak Rust’ta yazan 2,8 milyon kodlayıcı var ve Microsoft’tan Amazon’a şirketler bunu geleceklerinin anahtarı olarak görüyor. Sohbet platformu Discord, Rust’u sistemini hızlandırmak için kullandı, Dropbox dosyaları bilgisayarınızla senkronize etmek için ve Cloudflare tüm internet trafiğinin %20’sinden fazlasını işlemek için kullanıyor.

Kodlayıcı tartışma panosu Stack Overflow, dünya çapındaki geliştiriciler arasında yıllık anketini yaptığında, Rust yedi yıldır üst üste en “sevilen” programlama dili olarak derecelendirildi. ABD hükümeti bile süreçlerini daha güvenli hale getirmenin bir yolu olarak Rust’ta yazılımı hevesle teşvik ediyor. Dil, birçok başarılı açık kaynak projesi gibi, bir ambar yetiştirme haline geldi: şu anda çoğu gönüllü olan yüzlerce ölümcül katkıda bulunan var. Hoare, 2013 yılında projeden ayrıldı ve Mozilla’daki bir çekirdek ekip de dahil olmak üzere diğer mühendislere devretmekten mutlu oldu.

Birinin yeni bir bilgisayar dili yapması alışılmadık bir durum değil. Çok sayıda kodlayıcı, her zaman yan projeler olarak küçük kodlar oluşturur. Ancak, örneğin JavaScript veya Python veya Java’nın yanı sıra, birinin tutunup iyi bilinen dillerin panteonunun bir parçası haline gelmesi, meteor çarpması kadar nadirdir. Rust bunu nasıl yaptı?


Rust’ı bu kadar kullanışlı yapan şeyin ne olduğunu anlamak için, programlama dillerinin bilgisayar belleğiyle nasıl başa çıktığına bir göz atmaya değer.

Bir bilgisayardaki dinamik belleği çok kabaca bir yazı tahtası olarak düşünebilirsiniz. Bir yazılım çalışırken, kara tahtaya sürekli olarak küçük veri parçaları yazar, hangisinin nerede olduğunu takip eder ve artık ihtiyaç kalmadığında bunları siler. Yine de farklı bilgisayar dilleri bunu farklı şekillerde yönetir. C veya C++ gibi daha eski bir dil, programcıya yazılımın yazı tahtasını nasıl ve ne zaman kullandığı konusunda çok fazla güç vermek için tasarlanmıştır. Bu güç kullanışlıdır: dinamik bellek üzerinde çok fazla kontrole sahip olan bir kodlayıcı, yazılımın çok hızlı çalışmasını sağlayabilir. Bu nedenle, C ve C++ genellikle doğrudan donanımla etkileşime giren türden “bare metal” kod yazmak için kullanılır. Diyaliz makinelerinden yazarkasalara kadar Windows veya Linux gibi bir işletim sistemine sahip olmayan makineler bu kodla çalışır. (Ayrıca daha gelişmiş bilgi işlem için de kullanılır: bir noktada bir işletim sisteminin donanımla iletişim kurması gerekir. Windows, Linux ve MacOS çekirdeklerinin tümü önemli ölçüde C dilinde yazılmıştır.)

“Onun eğlenceli Rust’ı yazmak, belki söylemesi biraz garip ama dili harika. Eğlenceli. Kendinizi bir sihirbaz gibi hissediyorsunuz ve bu başka dillerde asla olmuyor.”

Parker Timmerman, yazılım mühendisi

Ama ne kadar hızlı olsalar da, C ve C++ gibi diller bir değiş tokuşla gelir. Kodlayıcının hangi belleğe yazıldığını ve ne zaman silineceğini dikkatli bir şekilde takip etmesini gerektirirler. Ve yanlışlıkla bir şeyi silmeyi unutursanız? Bir çökmeye neden olabilirsiniz: Yazılım daha sonra bellekte gerçekten bir şey varken boş olduğunu düşündüğü bir alanı kullanmayı deneyebilir. Ya da bir dijital davetsiz misafire içeri sızması için bir yol verebilirsiniz. Bir bilgisayar korsanı, bir programın belleğini doğru bir şekilde temizlemediğini keşfedebilir; meli silindi (şifreler, finansal bilgiler) hala ortalıkta dolaşıyor ve bu verileri sinsice ele geçiriyor. Bir C veya C++ kodu parçası büyüdükçe ve büyüdükçe, en dikkatli kodlayıcının bile çok sayıda bellek hatası yapması ve yazılımı hatalarla doldurması mümkündür.



Source link