30 puan yazan GN⁺ 2025-12-09 | 8 yorum | WhatsApp'ta paylaş
  • Mach 1 hızında tek satırlık bir hata ölümcül sonuçlara yol açabilen savaş uçağı ve roket yazılımlarında, neden C++ özelliklerinin çoğunun çıkarılıp yalnızca öngörülebilir kodun bırakıldığını anlatan bir video
  • F-4’ün mekanik bombardıman bilgisayarından, kamuya açık olmayan F-14 mikroişlemcisine; Jovial·CMS-2·Ada ile süren askerî dil savaşlarına ve kod patlamasına kadar, neden tek bir güvenli dil ve katı standartların gerekli hâle geldiğinin tarihini özetliyor
  • F-35 geliştirme sürecinde Lockheed’in Ada yerine C++ kullanımını kabul ettirmek için oluşturduğu JSF C++ standardının, istisnaları, özyinelemeyi ve dinamik bellek ayırmayı yasaklayıp bunların yerine dönüş kodları, döngüler ve önceden ayrılmış bellek kullanmasını gerçek kod örnekleriyle gösteriyor
  • İlk F-35 görev bilgisayarlarının PowerPC ailesi mimarisi kullandığını da aktararak, X-Plane 12 ile kendi yaptığı MFD’yi bağlayıp JSF kurallarını ihlal eden kod ile kurallara uyan kodun uçuş sırasında pratikte nasıl farklı davrandığını karşılaştırıyor
  • JSF standardının daha sonra NASA F-Prime·MISRA·AutoSAR gibi güvenlik standartlarına uzandığını, bugün ise bu mirasın üzerinde C++ Core Guidelines ve modern C++ kullanımının daha uygun bir yön olduğunu savunuyor

Konuşmacı hakkında

  • Havacılık ve uzay sistemleri için C++ kodu yazarken hava kuvvetlerine yönelik demolar yapmış deneyime sahip bir geliştirici
    • Açıklamayı, güvenlik gereksinimleri yüksek sistemlerde C++ kullanmış gerçek deneyimine dayanarak yapıyor
    • Demo ortamı olarak X-Plane 12, web API’si, Python UI ve C++ backend’den oluşan kendi geliştirdiği MFD’yi (çok işlevli ekran) kullanıyor

Uçuş yazılımı ve hatanın kabul edilmediği ortamlar

  • Genel uygulamalarda çökme yeniden başlatmayla atlatılabilirken, Mach 1 savaş uçakları ve roketlerde tek bir başarısızlık doğrudan felakete dönüşebilir
    • “Mach 1’de çöp toplayıcıyı bekleyecek zaman yoktur” sözüyle gerçek zamanlılık gereksinimini vurguluyor
    • Tek satırlık yanlış kodun ölümcül sonuca gidebildiği bir ortamda, dil özelliklerinin seçimi başlı başına bir güvenlik önlemi olmak zorunda
  • Temel örnek olarak 1996’daki Ariane 5 patlaması veriliyor
    • Yatay bias’a ait 64 bit kayan nokta değerinin 16 bit tam sayıya dönüştürülmesi sırasında bir istisna oluştu ve bu istisna işlenemedi
    • Dil, tanımı gereği hatayı üretti; ancak sistem bu istisnayı ele alamayınca 500 milyon dolarlık roket anında imha oldu
  • F-35 tasarım ekibi bu olayı referans alarak aynı hatayı tekrarlamamak için dil özelliklerini baştan kesip atma yaklaşımını benimsedi

Askerî yazılımın tarihi ve dil savaşları

  • Erken dönem savaş uçaklarında, özellikle F-4 Phantom zamanında, fiilen yazılım yoktu
    • Bombardıman bilgisayarı dişli ve kamlardan oluşan hassas bir mekanik düzeneğe daha yakındı; “kod” ise metal kamın şeklinin kendisiydi
  • Gizli bir proje olan deniz kuvvetleri hava üstünlük uçağı VFX (F-14 Tomcat) ile tablo değişti
    • Ders kitaplarında “ilk mikroişlemci” olarak bilinen Intel 4004’ten önce, Garrett AiResearch’ün F-14 için bir mikroişlemci tasarladığı gerçeği sonradan ortaya çıktı
    • F-14’ün değişken geometrili kanadını en iyi şekilde kontrol etmek için yüksek performanslı bir mikroişlemci gerekiyordu; buna yaklaşık 2500 satırlık mikrokod yüklenerek polinom hesapları yaptırıldı
  • Sonrasında her kuvvetin farklı diller benimsemesiyle dil karmaşası başladı
    • Hava kuvvetleri, ALGOL ailesinden gelen Jovial (Jules Own Version of the International Algorithmic Language) dilini kullandı
    • Deniz kuvvetleri, hava kuvvetlerinin dilini kullanmamak için F-18’de CMS-2yi seçti
    • Farklı diller ve donanım mimarileri kullanıldığı için kodun yeniden kullanımı ve doğrulanması neredeyse imkânsız hâle geldi
    Reklam
  • Aynı dönemde uçak başına yazılım boyutu üstel olarak arttı
    • F-16A’da yaklaşık 125 bin satır, B-1’de yaklaşık 1 milyon satır, modern F-35’te ise yaklaşık 9 milyon satır seviyesine çıktığı örneklerle anlatılıyor
    • Savunma Bakanlığı araştırmasında 450’den fazla programlama dili kullanıldığı ve bunların çok azının düzgün standarda sahip olduğu raporlandı

Ada zorunluluğu ve sınırları

  • Bu dağınıklığı çözmek için Savunma Bakanlığı tek bir yüksek seviyeli dil olan Adayı oluşturdu ve güçlü bir kullanım zorunluluğu getirdi
    • Yeni projede Ada kullanmamak isteyenlerin “neden Ada ile yapılamadığını” kanıtlaması gerekiyordu; aksi hâlde sözleşme almak mümkün değildi
  • Ada, güvenlik ve güvenilirliğin kritik olduğu alanlar için son derece uygun bir dil olarak tanıtıldı
    • Havacılık ve uzay gibi emniyet kritik sistemlerde bellek ve tür güvenliğini sağlama amacı öne çıkıyordu
  • Ancak 1990’larda gerçek dünyadan kopukluk görünür olmaya başladı
    • Bir yanda internet, Windows 95 ve C++ tabanlı ticari oyunlar ana akımı oluşturuyordu
    • Öğrenciler ve geliştiriciler, pahalı Ada derleyicileri yerine doğal olarak ücretsiz GCC ve C++ tarafına yöneldi
    • Ada derleyicileri binlerce dolara mal olduğu için bireysel erişim zordu; bunun sonucu olarak Ada uzmanı insan kaynağı da daraldı

F-35 ve JSF C++ standardının doğuşu

  • F-35 (Joint Strike Fighter) en baştan itibaren yazılım ağırlığı çok yüksek bir platform olarak tasarlandı
    • Sensör füzyonu gibi karmaşık hesaplamalar, platformun işletiminin merkezine yerleşti
  • Lockheed Martin bu ihtiyaçlar için Savunma Bakanlığına C++ kullanımına izin verilmesini önerdi
    • Bu, mevcut Ada zorunluluğunun fiilen gevşetilmesini istemek anlamına geliyordu; bunun kabulü için C++ risklerini kontrol etme yöntemi göstermek gerekiyordu
    Reklam
  • Bu süreçte C++’ın yaratıcısı Bjarne Stroustrup da danışman olarak yer aldı ve JSF C++ kurallarının tasarımına katkıda bulundu
    • JSF kurallarının yazımına doğrudan destek verdiğini söyleyerek, bu standart konusunda kendisinin de “önyargılı olabileceğini” belirtiyor
  • Temel fikir, “remove before flight” etiketine benziyor
    • Uçuştan önce sökülmesi gereken etiketler gibi, C++ içindeki riskli özellikler de dil seviyesinde çıkarılıyor ve yalnızca öngörülebilir bir alt küme kullanılıyor
    • Böylece Ada düzeyinde güvenlik sağlanırken geliştiriciler de C++’ın ifade gücünden belirli ölçüde yararlanabiliyor

Gerçek donanım ve GameCube benzetmesi

  • Erken dönem F-35 blokları, Motorola G4 PowerPC işlemci tabanlı görev bilgisayarları kullanıyordu
    • Bu bilgi, 2003 tarihli Aviation Today makalesi gibi kaynaklarda yayımlanmıştı
  • GameCube da PowerPC ailesinden bir işlemci kullandığı için, komut kümesi düzeyinde benzer nesil bir donanım olması bakımından ilginç bir karşılaştırma sunuyor
    • Daha kesin nesil eşleşmesi için başka konsollar daha yakın olabilir; ancak prensibi anlamak için GameCube benzetmesi yeterli

JSF C++ demo ortamı: X-Plane 12 + MFD

  • X-Plane 12 tabanında F-35B eklentisi (AOA Simulations) kullanılarak bir uçuş simülatörü ortamı kuruluyor
    • X-Plane’in yeni web API’si üzerinden gerçek zamanlı uçuş verileri abone olunup MFD’de gösteriliyor
  • Frontend Python ile kurulmuş, backend ise C++ eklentisi olarak yazılmış; böylece JSF kurallarına uyan ve uymayan kodlar karşılaştırmalı olarak gösteriliyor
    • İrtifa, hız, rüzgâr, uçuş zarfı ve navigasyon verileri gibi çeşitli bilgiler C++ hesaplamalarının çıktıları olarak ekrana veriliyor
  • Uçuş sırasında kasıtlı olarak istisna fırlatan standart dışı C++ kodu çalıştırılıp MFD’nin çökmesi ve uçuşta sorun çıkması gösteriliyor; ardından JSF kuralları uygulanarak bunun nasıl düzeltildiği adım adım anlatılıyor
Reklam

JSF’nin üç temel kısıtı: istisna, özyineleme, dinamik bellek

  • JSF C++ standardında vurgulanan üç ana kısıt istisna (Exception), özyineleme (Recursion) ve dinamik bellek ayırma
    • Buna ek olarak fonksiyonlar için Cyclomatic Complexity (dallanma karmaşıklığı) üst sınırı da tanımlanıyor

1) İstisna yasağı – AV Rule 208

  • JSF AV Rule 208: “İstisnalar kullanılmaz (exceptions shall not be used)”
    • try, catch, throw gibi istisna anahtar sözcükleri tamamen yasaklanıyor
  • Temel gerekçe kontrol akışındaki belirlenimsizlik
    • Ariane 5 örneğinde olduğu gibi, istisna oluştuğunda işleme eksik kalır ya da zamanlama kayarsa tüm sistem öngörülemez şekilde çökebilir
  • Bjarne modern C++ istisna işleme modeline olumlu baksa da, JSF tasarlandığı dönemde araç olgunluğu ve gerçek zaman garantisi nedenleriyle istisna desteğinin uygun olmadığını açıklıyor

    “JSF++, sert gerçek zamanlı ve emniyet kritik uygulamalar (uçuş kontrolü) içindir; hesaplama çok uzun sürerse insanlar ölebilir ve istisnalarla yanıt süresi garanti edilemez”

  • JSF’de istisna yerine dönüş kodları (return code) kullanılıyor
    • Yoğunluk irtifası hesaplama örneğinde, her hata durumu için farklı dönüş kodları atanıyor ve çağıran taraf bunları yorumlayıp işliyor
    • Böylece hesap başarısız olsa ya da zaman aşımına uğrasa bile tüm program çökmeden, çağıran taraf güvenli biçimde bir “hata durumu” ifade edebiliyor

2) Özyineleme yasağı – AV Rule 119

  • AV Rule 119, bir fonksiyonun doğrudan ya da dolaylı olarak kendini çağırmasını, yani özyinelemeyi yasaklıyor
    • Her özyinelemeli çağrıda yeni bir stack frame oluştuğu ve azami derinliği bilmek zor olduğu için stack overflow riski büyüyor
    Reklam
  • Örnek olarak, uçuş planındaki alternatif havaalanı hesabında kullanılan binom katsayısı (binomial coefficient) veriliyor
    • Standart dışı sürümde C(n, k) = C(n-1, k-1) + C(n-1, k) biçiminde özyinelemeli uygulama kullanılıyor
    • Bu yapı, çağrı derinliğinin girdiye göre değişmesine yol açtığı için bellek üst sınırını öngörmeyi zorlaştırıyor
  • JSF uyumlu sürümde aynı hesap döngü temelli yinelemeli (iterative) bir uygulamaya çevriliyor
    • Kod daha uzun ve daha az zarif olsa da, kendini çağırmadığı için özyineleme olmadan aynı sonucu veriyor
    • Böylece fonksiyon çağrı derinliği ve bellek kullanım üst sınırı statik olarak daha kolay çıkarılabiliyor

3) Dinamik bellek ayırma yasağı – AV Rule 206

  • AV Rule 206: Başlatmadan sonra bellek ayırma ve serbest bırakma yapılmaz
    • Çalışma sırasında new, delete ya da akıllı işaretçiler üzerinden yapılan dahili new gibi heap ayırmaları yasak
  • Bunun iki temel nedeni var
    • Heap ayırmada ne kadar süreceği bilinmeyen bir zaman belirlenimsizliği bulunur
    • Heap parçalanırsa (fragmentation), toplam kapasite kalsa bile yeterince büyük bitişik blok bulunamadığı için ayırma başarısız olabilir
  • Örnek olarak, rüzgâr hamlesi (gust) hesabı için IAS (gösterilen hava hızı) geçmiş tamponunu std::unique_ptr + dinamik diziyle kuran standart dışı kod gösteriliyor
    • Çalışma sırasında yeni dizi ayırdığı için JSF kurallarını ihlal ediyor
  • JSF uyumlu sürümde ise azami boyutu sabitle tanımlanmış sabit boyutlu dizi kullanılıyor
    • MAX_IAS_HISTORY gibi bir sabit tanımlanıp başlatma sırasında bellek bir kez ayrılıyor, sonrasında yalnızca indeks döndürülerek kullanılıyor
    • Böylece çalışma anında ek ayırma yapılmadığından zaman ve bellek açısından öngörülebilirlik korunuyor
Reklam

4) Cyclomatic Complexity üst sınırı – AV Rule 3

  • AV Rule 3, bir fonksiyonun Cyclomatic Complexity’sinin (dallanma karmaşıklığı) 20’yi geçmemesini şart koşuyor
    • Fonksiyon bildiriminin kendisi 1 puan, if·while·for·switch·mantıksal AND/OR gibi yapılar ise karmaşıklığa birer puan ekliyor
  • Binom katsayısının yinelemeli uygulaması örneğinde, her if, mantıksal işlem ve for döngüsünün karmaşıklık puanını nasıl artırdığı gösteriliyor
    • Karmaşıklık arttıkça test, doğrulama ve analiz zorlaştığı için standardın hedefi bunu belirli bir eşik altında tutmak

JSF mirası: NASA F-Prime, MISRA, AutoSAR

  • JSF C++ standardının fikirleri daha sonra başka emniyet kritik alanlara yayıldı
    • NASA’nın uçuş yazılımı çatısı F-Prime 2017’de açıklandı ve dinamik bellek ayırma yasağı, istisna yasağı, özyineleme yasağı gibi kuralları paylaşıyor
  • Otomotiv sektöründe de benzer bir çizgi sürdü
    • MISRA C++ ve AutoSAR (Automotive Open System Architecture) gibi standartlar ortaya çıkarak otomotiv yazılımı için güvenlik kuralları tanımladı
    • AutoSAR C++14 kılavuzunun JSF’ye açıkça atıf yaptığı belirtiliyor; bu da JSF etkisinin otomotiv yazılımına kadar uzandığını gösteriyor
  • Modern otomobiller fiilen “tekerlekli bilgisayarlar” hâline geldiği için, bu tür dil alt kümeleri ve kodlama kuralları güvenliğin temel dayanağı oluyor

Sonuç: Bugün C++ kullanacaksak neyi izlemeliyiz

  • JSF C++ standardı, kendi döneminde karmaşık bir dili öngörülebilir bir alt kümeye indirerek savaş uçağı uçuş kontrolü seviyesinde güvenlik sağlayan bir mühendislik başarısı olarak sunuluyor
  • Aynı zamanda Bjarne Stroustrup, günümüz geliştiricilerine C++ Core Guidelines ve modern C++ yaklaşımını izlemelerini öneriyor
    • Çünkü C++ dili ve araç zinciri son on yıllarda gelişti; istisnalar ve akıllı işaretçiler gibi özelliklerin de güvenli kullanılabildiği pek çok ortam oluştu
  • Buna rağmen JSF, hâlâ dili ekleme ile değil “çıkarma” yoluyla kontrol etme zihniyetinin önemli bir örneği olarak kalıyor
    • Kapanış mesajı şu: güvenlik kritik sistem tasarımında asıl mesele neyi ekleyeceğinden çok, neleri remove before flight listesine koyacağındır

8 yorum

 
lostid 2025-12-10

Askerî amaçlı olduğu için, düşük donanım özellikleri ile gelişmiş özellikler arasında denge kurmanın sonucu olarak C++ seçilmiş olabilir diye düşünüyorum.

 
regentag 2025-12-10
  1. Ada için gcc tabanlı GNAT adlı açık kaynaklı bir derleyici var. Günümüzde llvm tabanlı gnat-llvm da mevcut. Açık kaynaklı IDE de sunuluyor.

Öğrenciler ve geliştiriciler bunu Savunma Bakanlığı dili olduğu ve talebi az olduğu için öğrenmedi; araçlar pahalı olduğu için değil diye düşünüyorum.

  1. "kontrollü" Cpp yerine Ada kullanmak amaca daha uygun olmaz mı diye düşünüyorum. Özellikle Safety-Critical alanlarda Cpp, hata yapmaya fazlasıyla açık görünüyor.
 
iepics 2025-12-10
  1. Geliştirme sırasındaki koşullar farklı olmuş olabilir.
 
m00nny 2025-12-09

Genel olarak öngörülebilir kod yazma teknikleriyle ilgili bir içerik gibi görünüyor.
C++ sadece örnek olarak ele alınmış olsa da, GC gibi diğer dillerde daha da sorunlu olabilen kısımlar da aynı şekilde geçerli; bu noktanın sanki C++’ın sınırlarını tartışıyormuş gibi anlaşılabilmesi üzücü.
Eğer C++’ın dinamik bellek tahsisi ya da istisna işleme teknikleri kullanılmayacaksa, o zaman C kullanarak yukarıdaki ilkelerle yazmanın çok daha kolay ve hızlı olup olmayacağı sorusu akılda kalıyor.

 
ndrgrd 2025-12-09

Aynen, neden C yerine C++ kullanıldığını ben de bilmiyorum.

 
tsboard 2025-12-09

Modern C++ gerçekten oldukça güvenli, ancak ille de C++ olmak zorunda değilse daha güvenli başka bir dili değerlendirmek mantıklı olabilir diye düşünüyorum.

 
coremaker 2025-12-09

RUST sözdizimini STRICT şekilde kullanalım!

 
GN⁺ 2025-12-09
Hacker News görüşü
  • F-35'in C++ kodlama standardı belgesi burada
    142 sayfalık bu belge, gerçek uçak yazılımı geliştirmede ne tür kısıtlar olduğunu gösteriyor
    • Birkaç bölüme göz attım; oldukça makul kurallar gibi görünüyor
      Yine de “shall” kurallarının istisnaları merak uyandırıyor. Bu ölçekte projelerde istisna durumları, standardın ne kadar işe yaradığını gösterir
    • Gerçek zamanlı sistemlerde çalışma sırasında dinamik bellek tahsisi yasağı kuralı var
      2005 için makul olabilir ama bugün yapay zeka tabanlı dronlar gibi ortamlarda bunun nasıl uygulandığını merak ediyorum
    • Bu kuralların statik analiz araçlarıyla mı zorunlu kılındığını, yoksa geliştiricilerin bunları ezberleyip uygulamasının mı beklendiğini merak ediyorum
    • Gömülü ya da düşük donanımlı cihaz yazılımlarında da bu kuralların geçerli olup olmadığını düşünüyorum
      Özellikle stdio.h yasağı ilk başta garip geliyor ama okuyunca “evet, mantıklı” dedirtiyor
    • Bu belgeyi ilk gördüğümde biri bunu “Arduino Uno için C++ da hâlâ C++'tır” örneği olarak göstermişti
  • Gerçek MISRA kodunda gördüğüm a = a; gibi ifadeleri hatırlatıyor
    Kullanılmayan parametreleri kaldırmamak için yapılan bir numara ama bu tür kuralların iyi kod kalitesini gerçekten garanti edip etmediği tartışmalı
    • MISRA üzerine araştırmaların bir kısmı bazı kuralların hataları azalttığını, bazılarının ise tersine artırdığını gösteriyor
      JSF yönergeleri 2005 tarihli olduğu için dönemin sınırlarını taşıyor
      Bjarne Stroustrup'un yakın zamanda “C++ profilleri” kavramını ortaya atmış olması da ilginç
      Sonuçta bu tür stil kılavuzları bir ölçüde estetik tercih meselesi olabilir
    • C'de bir değişkene sadece referans vermek gerektiğinde standart yöntem (void)a; kullanmaktır
    • Gerçekten çok sayıda güvenlik açısından kritik kod yazdım ve kodlama kurallarının genel kaliteyi düşürdüğü durumlarla sık karşılaştım
      Asıl güvenliği sağlayan şey tasarım kalitesi ve fail-safe yapıdır
    • Zig'de bu, _ = a; ile açıkça ifade ediliyor
      İlgili issue da var
    • Bu tür standartlar kod incelemesinin yerini almaz
      Daha çok inceleme sırasında başvurulacak ortak bir ölçüt sağlarlar
  • Uydu yazılımlarında da benzer şekilde STL kullanımı yasak
    Buradaki temel konu görev güvencesi (mission assurance)
    Stack veya heap kullanılırsa değişkenlerin bellekteki adresleri değişebilir; belirli bir hücre arızalanırsa bu sorun yaratır
    Tüm değişkenlerin sabit adresleri olursa, arızalı hücreyi yalnızca yamayla taşıyıp görevi sürdürmek mümkün olabilir
    • Ama C++'ta stack'i tamamen kullanmamak imkânsız
      Yerel değişkenler, parametreler, dönüş adresleri sonuçta stack gerektirir
      Özyineleme de imkânsız hâle gelir, geçici değişkenler de kısıtlanır
      Bu yüzden bu iddia gerçekçi görünmüyor
    • Böyle pasif bir yaklaşım yerine ECC bellek veya Reed-Solomon kodlama gibi otomatik yöntemler daha verimli olurdu
    • O zaman değişkenler global mi tutuluyor? Bir de bellek hücresi hatalarının tespiti nasıl yapılıyor merak ediyorum
    • Pratikte stack kullanılıyor. Heap sınırlı ama bellek havuzları kullanılıyor
      Stack ve heap'in adres aralıkları sabitlenebilir ama bunun gerçekten ikna edici bir gerekçe olup olmadığından emin değilim
    • O zaman fonksiyonların giriş/çıkış parametreleri nasıl ele alınıyor, onu da merak ediyorum
  • “Tüm if ve else if bloklarında mutlaka else ya da yorum bulunmalı” diye bir kural var
    Ben de benzer şekilde “bu durum asla yaşanmamalı” gibi log kayıtları bırakıyorum
    Büyük sistemlerde bu tür istisna durum kaydı, hata ayıklamada çok faydalı oluyor
    • Rust'ın match ifadesi bu açıdan çok iyi
      Tüm durumların açıkça ele alınmasını zorunlu kılıyor; enum'a yeni bir değer eklenirse derleyici uyarı veriyor
    • Ben buna bazen _STOP veya _CRASH makroları da ekleyip anında debug kesmesi yaptırıyorum
      Sorunu hemen düzeltmeye zorlaması açısından etkili oluyor
  • Ada yerine neden C++ seçildiğini anlatan bir mühendislik lideri yazısı var
    Özeti, “Ada geliştiricisi ve toolchain azdı” şeklindeydi
    Ama bugün dil çeşitliliğine açıklık daha fazla olduğu için Ada'nın daha çok kabul görebileceğini düşünüyorum
    NVidia'nın SPARK'ı benimsemesi de Ada'nın yeniden canlanmasının işareti gibi görünüyor
    • “Ada geliştiricisi az” mantığını sevmiyorum
      DoD Ada'yı zorunlu kılsaydı üniversiteler ve şirketler de buna uyum sağlardı
      Sonuçta dil öğrenilebilir ve Ada kullanılsaydı F-35'in güvenilirliği de daha yüksek olabilirdi
    • Bugün bile Ada derleyicisi satan 7 şirket var
      AdaCore, GHS, PTC ApexAda, DDC-I, Irvine, OC Systems, RR Software
      Geçmişte Ada derleyicileri ücretli bir seçenekti ve C/C++ varsayılan olarak geliyordu; bu yüzden okullar ve şirketler C++'ı seçti
      AdaCore, ISO standardizasyonuna ve açık kaynağın yaygınlaşmasına büyük katkı sağladı
    • Ben de Ada'nın yeniden yükselişe geçmesini isterim
      Eskiden gereğinden fazla eleştiriliyordu ama bugün daha cazip görünüyor
    • Ama Ada'yı gerçekten kullandığımda sözdizimini sevmedim
      Dosya yapısı ve build flag'leri karmaşıktı, ayrıca RedMonk dil sıralamasında da Ada yoktu
      Bazı özellikleri ilginçti ama Rust gibi modern bir dil deneyimi sunmuyordu
  • Aviyonik alanının MISRA C/C++ takip edip etmediğini merak ediyordum
    • Kodlama standardı işin sadece bir parçası; asıl kritik unsur denetlenebilir süreç dokümantasyonu
      DO-178C gibi sertifikasyon çerçeveleri önemli
    • Şirkete göre değişiyor. Bazı yerler Matlab/Simulink autocode ile üretilen C kodunu doğrudan kullanıyor
      Hatta bu, yüksek güvenilirlikli kod üretmenin doğru yolu bile olabilir
    • Bölgeye göre de değişiyor. ABD'de MIL standartları, Avrupa'da ECSS, havacılıkta DO-178C ve ayrıca MISRA yaygın olarak kullanılıyor
  • LaurieWired'in YouTube kanalı gerçekten harika
    • Özellikle ARM assembly öğretici serisi çok başarılı
  • Laurie'nin diğer videolarını da tavsiye ederim
    Tersine mühendislik, obfuscation, compiler gibi çeşitli konuları işliyor
  • “Null pointer'ı dereference etmeyin” kuralını (AV Rule 174, MISRA Rule 107) görünce
    insan bunun bile ayrıca yazılması gerekiyor mu diye düşünüyor
  • Gerçek F-35 kodunu derlemek için hangi compiler'ın kullanıldığını da merak ediyorum
    LM'nin kendi geliştirdiği bir şey mi, yoksa ticari bir ürün mü bilmek isterdim