Intel'in önde gelen mühendislerinden birinin konuşması: "Rust, sistem programlamanın geleceğidir, C ise yeni montajcıdır"

Yakın zamanda düzenlenen Açık Kaynak Teknoloji Zirvesi'nde (OSTS) Josh TriplettIntel'de kıdemli bir mühendis olan Intel, şirketinin Rust'un yakın gelecekte sistemlere ve düşük seviyeli geliştirmelere hâlâ hakim olan C dili ile "eşitliğe" ulaşmasıyla ilgilendiğini söyledi. Konuşmasında "Intel ve Rust: Sistem Programlamanın Geleceği" başlığı altında sistem programlamanın tarihçesinden, C'nin nasıl varsayılan sistem programlama dili haline geldiğinden, Rust'un hangi özelliklerinin ona C'ye göre avantaj sağladığından ve nasıl tamamen Bu programlama alanında C'yi değiştirin.

Intel'in önde gelen mühendislerinden birinin konuşması: "Rust, sistem programlamanın geleceğidir, C ise yeni montajcıdır"

Sistem programlama, uygulama uygulamaları oluşturmak için bir platform görevi gören ve ikincisinin işlemci, RAM, giriş/çıkış cihazları ve ağ ekipmanı ile etkileşimini sağlayan yazılımın geliştirilmesi ve yönetilmesidir. Sistem yazılımı, donanımın nasıl çalıştığının ayrıntılarına girmeden uygulama yazılımı oluşturmaya yardımcı olan arayüzler biçiminde özel bir soyutlama oluşturur.

Triplett, sistem programlamayı "uygulama olmayan herhangi bir şey" olarak tanımlıyor. BIOS, bellenim, önyükleyiciler ve işletim sistemi çekirdekleri, çeşitli gömülü düşük seviyeli kod türleri ve sanal makine uygulamaları gibi şeyleri içerir. İlginç bir şekilde Triplett, bir web tarayıcısının aynı zamanda sistem yazılımı olduğuna inanıyor çünkü tarayıcı uzun zaman önce "sadece bir programdan" daha fazlası haline geldi ve bağımsız bir "web siteleri ve web uygulamaları platformu" haline geldi.

Geçmişte, BIOS, önyükleyiciler ve ürün yazılımı da dahil olmak üzere çoğu sistem programı, montaj dilinde yazılıyordu. 1960'lı yıllarda üst düzey diller için donanım desteği sağlamaya yönelik deneyler başladı ve bu da PL/S, BLISS, BCPL ve ALGOL 68 gibi dillerin yaratılmasına yol açtı.

Daha sonra 1970'lerde Dennis Ritchie, Unix işletim sistemi için C programlama dilini yarattı. Yazma desteği bile olmayan B programlama dilinde oluşturulan C, işletim sistemleri ve sürücüleri yazmak için en uygun olan güçlü üst düzey işlevlerle doluydu. UNIX'in çekirdeği de dahil olmak üzere çeşitli bileşenleri sonunda C dilinde yeniden yazıldı. Daha sonra Oracle veritabanı, Windows kaynak kodunun çoğu ve Linux işletim sistemi dahil olmak üzere diğer birçok sistem programı da C dilinde yazıldı.

C bu yönde çok büyük destek aldı. Peki geliştiricilerin buna geçiş yapmasına tam olarak ne sebep oldu? Triplett, geliştiricileri bir programlama dilinden diğerine geçmeye motive etmek için, ikincisinin öncelikle eski özellikleri kaybetmeden yeni özellikler sağlaması gerektiğine inanıyor.

Öncelikle dilin "oldukça etkileyici" yeni özellikler sunması gerekiyor. “Daha iyi olamazdı. Geçişi gerçekleştirmek için gereken çabayı ve mühendislik süresini haklı çıkaracak kadar önemli ölçüde daha iyi olması gerekiyor” diye açıklıyor. Assembly diliyle karşılaştırıldığında C'nin sunabileceği çok şey vardı. Bir dereceye kadar tür açısından güvenli davranışı destekledi, üst düzey yapılarla daha iyi taşınabilirlik ve performans sağladı ve genel olarak çok daha okunabilir kod üretti.

İkinci olarak, dil eski özellikler için destek sağlamalıdır; bu, C'ye geçiş tarihinde geliştiricilerin dilin montaj dilinden daha az işlevsel olmadığından emin olmaları gerektiği anlamına gelir. Triplett şöyle açıklıyor: "Yeni bir dil sadece daha iyi olamaz, aynı zamanda da aynı derecede iyi olmalıdır." Daha hızlı olmasının ve montaj dilinin kullanabileceği her türlü veri türünü desteklemesinin yanı sıra C, Triplett'in "kaçış kapısı" dediği şeye de sahipti; yani montaj dili kodunu kendi içine eklemeyi destekliyordu.

Intel'in önde gelen mühendislerinden birinin konuşması: "Rust, sistem programlamanın geleceğidir, C ise yeni montajcıdır"

Triplett, C'nin artık yıllar önceki montaj dili haline geldiğine inanıyor. "C yeni montajcıdır" diye beyan ediyor. Artık geliştiriciler, yalnızca C'de biriken ve artık düzeltilemeyen sorunları çözmekle kalmayıp, aynı zamanda heyecan verici yeni özellikler de sunacak yeni bir üst düzey dil arıyorlar. Böyle bir dil, geliştiricilerin ona geçiş yapmasını sağlayacak kadar ilgi çekici olmalı, güvenli olmalı, otomatik bellek yönetimi sağlamalı ve çok daha fazlasını sağlamalıdır.

“C'den daha iyi olmak isteyen herhangi bir dil, eğer gerçekten ilgi çekici bir alternatif olmak istiyorsa, arabellek taşması korumasından çok daha fazlasını sunmalıdır. Geliştiriciler kullanılabilirlik ve performansla ilgilenir, kendini açıklayan ve daha az satırda daha fazla iş yapan kodlar yazar. Güvenlik sorunlarının da ele alınması gerekiyor. Kullanım kolaylığı ve performans bir aradadır. Bir şeyi başarmak için ne kadar az kod yazmanız gerekiyorsa, güvenlikle ilgili olsun ya da olmasın herhangi bir hata yapma fırsatınız da o kadar az olur," diye açıklıyor Triplett.

Pas ve C'nin Karşılaştırılması

2006 yılında Mozilla çalışanı Graydon Hoare, Rust'u kişisel bir proje olarak yazmaya başladı. Ve 2009 yılında Mozilla, kendi ihtiyaçları için Rust'un geliştirilmesine sponsor olmaya başladı ve aynı zamanda dili daha da geliştirmek için ekibi genişletti.

Mozilla'nın yeni dille ilgilenmesinin nedenlerinden biri, Firefox'un 4 milyon satırdan fazla C++ koduyla yazılmış olması ve birçok kritik güvenlik açığına sahip olmasıydı. Rust, güvenlik ve eşzamanlılık göz önünde bulundurularak oluşturulduğundan, tarayıcının mimarisini tamamen yeniden tasarlamak amacıyla Quantum projesinin bir parçası olarak Firefox'un birçok bileşenini yeniden yazmak için ideal bir seçimdir. Mozilla aynı zamanda mevcut Firefox işleme motorunun yerini alacak bir HTML işleme motoru olan Servo'yu geliştirmek için de Rust'u kullanıyor. Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu ve çok daha fazlası dahil olmak üzere pek çok şirket projeleri için Rust'u kullanmaya başladı.

Rust, C dilinin en önemli sorunlarından birini çözer ve otomatik bellek yönetimi sunar, böylece geliştiricilerin uygulamadaki her nesne için manuel olarak tahsis edip daha sonra serbest bırakmasına gerek kalmaz. Rust'u diğer modern dillerden farklı kılan şey, kullanılmayan nesneleri bellekten otomatik olarak kaldıran bir çöp toplayıcıya sahip olmaması ve Java için Java Runtime Environment gibi çalışması için gereken çalışma zamanı ortamına da sahip olmamasıdır. Bunun yerine Rust'ta sahiplik, ödünç alma, referanslar ve kullanım ömrü kavramları vardır. “Rust'un, bir nesneye yapılan çağrıları bildirerek sahibinin onu mu kullandığını yoksa sadece ödünç mü aldığını belirten bir sistemi var. Basitçe bir nesneyi ödünç alırsanız, derleyici bunu takip edecek ve ona referans verdiğiniz sürece orijinalin yerinde kalmasını sağlayacaktır. Rust ayrıca nesnenin kullanımı tamamlanır tamamlanmaz bellekten kaldırılmasını da sağlayacak ve derleme zamanında koda karşılık gelen bir çağrı ek süre gerekmeden ekleyecektir," diyor Triplett.

Yerel çalışma zamanının olmaması da Rust'un olumlu bir özelliği olarak düşünülebilir. Triplett, üzerinde çalıştığı dillerin sistem programlama araçları olarak kullanılmasının zor olduğuna inanıyor. Şöyle açıklıyor: "Herhangi bir kodu çağırmadan önce bu çalışma zamanını başlatmalısınız, bu çalışma zamanını işlevleri çağırmak için kullanmalısınız ve çalışma zamanının kendisi beklenmedik zamanlarda arkanızdan ek kod çalıştırabilir."

Rust ayrıca güvenli paralel programlama sağlamaya çalışmaktadır. Bellek güvenliğini sağlayan aynı özellikler, hangi iş parçacığının hangi nesneye sahip olduğu, hangi nesnelerin iş parçacıkları arasında geçirilebileceği ve hangilerinin kilide ihtiyacı olduğu gibi şeylerin takibini sağlar.

Tüm bu özellikler, Rust'u geliştiricilerin onu sistem programlama için yeni bir araç olarak seçmesine yetecek kadar ilgi çekici hale getiriyor. Ancak paralel hesaplama açısından Rust hala C'nin biraz gerisinde.

Triplett, Rust'un sistem programlama alanında C'ye tamamen eşit olabilmesi, onu geçebilmesi ve yerini alabilmesi için gerekli özellikleri Rust'a kazandırmaya odaklanacak özel bir çalışma grubu oluşturmayı planlıyor. İÇİNDE Reddit'teki konu, konuşmasına ithaf ederek, "FFI/C Parity grubunun oluşturulma aşamasında olduğunu ve henüz çalışmaya başlamadığını" şimdilik her türlü soruyu yanıtlamaya hazır olduğunu ve gelecekte acil planları kesinlikle yayınlayacağını söyledi. İlgili tüm taraflara yönelik girişiminin bir parçası olarak Rust'un geliştirilmesi için.

FFI/C Parity grubunun öncelikle Rust'ta çoklu iş parçacığı desteğini geliştirmeye, yeni Intel Xeon Ölçeklenebilir işlemcilerde ortaya çıkan kayan nokta formatı olan BFLOAT16 desteğini sunmaya ve montajı stabilize etmeye odaklanacağı varsayılabilir. kod eklemeleri.



Kaynak: 3dnews.ru

Yorum ekle