1 puan yazan GN⁺ 2023-10-17 | 1 yorum | WhatsApp'ta paylaş
  • Yaygın inanışın aksine, C'nin düşük seviyeli bir dil olmadığı iddiasını savunan bir yazı
  • Yazar David Chisnall, Meltdown ve Spectre açıklarının erişim kontrollerini aşarak komut çalıştıran işlemci özelliklerinden kaynaklandığını öne sürüyor; bu özelliklerin de C programcılarının düşük seviyeli bir dilde programlama yaptıklarına inanmalarını sağlamak için eklendiğini savunuyor.
  • Chisnall, bir dilin "metale yakın" sayılması için hedef platformun sunduğu soyutlamalara kolayca eşlenen bir soyut makine sunması gerektiğini, bunun ise C için geçerli olmadığını ileri sürüyor.
  • Yazar, Spectre ve Meltdown açıklarının kök nedeninin, işlemci mimarlarının PDP-11 gibi soyut makineleri görünür kılan hızlı işlemciler üretmeye çalışması olduğunu öne sürüyor; bunun sonucunda C programcıları dillerinin temel donanıma yakın olduğuna inanmaya devam edebildi.
  • Chisnall, C kodunu hızlı çalıştırmak için karmaşık derleyici dönüşümlerine ve yeterince akıllı derleyiciler geliştirmek adına binlerce insan-yılına ihtiyaç olduğunu savunuyor.
  • Yazar, düşük seviyeli bir dilin temel özelliğinin, programcıların dilin soyut makinesinin alttaki fiziksel makineye nasıl eşlendiğini kolayca anlayabilmesi olduğunu öne sürüyor; C'de ise durumun böyle olmadığını iddia ediyor.
  • Chisnall, C kodunu hızlandırma çabalarını bırakıp bunun yerine hızlı işlemcilerde programlama modelinin nasıl görünmesi gerektiğini düşünmenin zamanı gelmiş olabileceği sonucuna varıyor. Ona göre yalnızca hız için tasarlanmış işlemciler muhtemelen çok sayıda thread'i destekleyecek, geniş vektör birimlerine sahip olacak ve çok daha basit bir bellek modeline sahip olacaktır.

1 yorum

 
GN⁺ 2023-10-17
Hacker News görüşleri
  • Makalenin, manuel bellek yönetimi ve ayırıcıya açık çağrılar nedeniyle C'nin düşük seviyeli bir dil olmadığı yönündeki iddiası.
  • Bazı yorumcular, anlayan ve profesyonelce kullanan kişiler için C'nin gerçekten düşük seviyeli bir dil olduğunu savunuyor.
  • Yazarın CPU komut setinin CPU'nun gerçekleştirimini daha fazla açığa vurması gerektiği iddiasına, geçmişteki başarısız girişimlere atıf yapılarak itiraz ediliyor.
  • Düşük seviyeden yüksek seviyeye uzanan kavram bir spektrum gibi görünüyor ve C, bellek ve iş parçacığı yönetimi gibi makine ilkellerini açığa vuran diller arasında alt uçta yer alıyor.
  • Makalenin paralel programlamanın zor olmadığı yönündeki iddiası, bazı yorumculara göre yanıltıcı görünüyor.
  • Bilgisayarların PDP-11'in yapısına benzemediği yönündeki makale öncülü her zamankinden daha doğru görünse de, C dışı işlemciler hayal etme sonucunun o kadar da güçlü olmadığı düşünülüyor.
  • Bazı yorumcular, bilgisayarların hızlı PDP-11'ler olmadığı yönündeki makale iddiasının doğru olduğunu, ancak bunun C ile ilgili olduğunun yanlış olduğunu savunuyor.
  • struct padding ve signed overflow'un tanımsız davranış olması gibi özellikler nedeniyle C'nin düşük seviyeli bir dil olmadığı yönündeki makale iddiası yapıcı görünüyor.
  • C'nin baskınlığı nedeniyle CPU tasarımcılarının doğal olarak C'yi çalıştırabilecek şeyler üretmek zorunda kaldığı iddiası mantıklı görünüyor, ancak bunun ilk iddia ve makalenin başlığıyla nasıl ilişkili olduğu belirsiz.
  • Modern CPU'ların gelişmiş teknikleri C'yi artık "düşük seviyeli" bir dil yapmıyorsa, aynı durum assembly dili için de geçerlidir.
  • Makale, bazı yorumculara VLIW'yi hatırlatıyor; burada tek bir VLIW komutu, paralel yürütülebilen birden fazla bağımsız komut içerebilir.