Soru:
Ada'yı ISS'nin güvenlik açısından kritik sistemleri için tercih edilen dil yapan nedir?
uhoh
2019-06-03 12:37:28 UTC
view on stackexchange narkive permalink

Ada'nın, Uluslararası Uzay İstasyonunun en azından ABD tarafında "güvenlik açısından kritik yazılım" için yaygın olarak kullanıldığını iyi yetkiye sahibiz.

Mümkün olan her şey arasında Aralarından seçim yapabileceğiniz diller, Ada'nın NASA'nın böylesine kritik bir uygulama için tercihi olmasını sağlayan yönleri nelerdir? Eski nedenler ile içsel uygunluk arasındaki ağırlık ne olabilir?

Ada, Savunma Bakanlığının diliydi. Onu geliştirdikten sonra kullanmamak utanç verici. Yüksek seviyede kalırken güçlü gerçek zamanlı unsurlara sahiptir. Önyargılı olabilirim, en sevdiğim dildir. (bunun nedeni yirmi yılı aşkın süredir içinde hiçbir şey yazmamış olmam olabilir)
@JCRM: O zaman Ada'nın C veya Java'nın aksine onu kritik görev sistemleri için uygun kılan bazı yönlerini detaylandıran bir cevap yazabilirsiniz, hayır? :-) Bir yazılım geliştiricisi olarak, dille deneyimi olan birinden haber almakla çok ilgileniyorum (Wikipedia makalesini okumak yerine…).
ISS'nin sistem gereksinimleri hakkında yeterince bilgim yok ve sadece Ada'nın eski anılarım var, bu yüzden katkım (umarım) yararlı yorumlarla sınırlı. ISS'ye giren şeyin Savunma Bakanlığı'nın "Ada'da yazmalısın" olduğundan kuvvetle şüpheleniyorum; güvenlik açısından kritik sistemlerde ÇOK iyi bir neden olmadan dil değiştirmek bir kişinin yapabileceği bir şey değildir.
Acaba ada da neden java daha hızlı değil mi?
@repluser: Ada, ISS geliştirildiğinde Ada'nın var olması ve Java'nın olmaması anlamında Java'dan birkaç yıl daha hızlıdır. O zamanki alternatifler muhtemelen Modula-3 veya Mesa veya * belki * Eiffel olabilirdi (ancak Eiffel o zamanlar uluslararası bir standart değildi).
@repluser: ... ve Java var olduğunda bile, şimdi olduğu kadar kesin olarak tanımlanmıyordu. Bir programlama dilinin kesin özelliklerini belirlemek _hard_'dır. Ve bir dil ne kadar büyükse, o kadar kullanışlıdır, ancak aynı zamanda tam olarak belirtilmesi de daha zordur. Java'nın iş parçacığı kitaplığı özellikle aldatıcıdır.
@JörgWMittag Sadece bu da değil, Java henüz emekleme aşamasındaydı - 2001 yılına kadar RTSJ 1.0 ile gerçek zamanlı bir özelliğe * sahip bile değildi * ve bu nedenle, güvenlik açısından kritik uygulamalar için hala uygun değil. bunun için (JSR-302)] (https://jcp.org/en/jsr/detail?id=302) 2006 yılından bu yana atıldı ve şu anda dördüncü taslağında.
Ada sana neden şaşırtıcı geliyor?
İlginç. Tarih 70'lerin sonlarında geliştirildiğini söylese de, yemin ederim Ada'dan bahsettiğimi Skylab için RCA Camden laboratuarlarında 1974'te çalışırken duydum. Sonra 70'lerin sonlarında Rochester MN'de IBM ile çalışırken, Ada'nın bazı program yapılandırma kavramlarını (özellikle istisna yönetimi) IBM'in System / 38'inde kullanmak için "ödünç aldım". Dilin 1980'lerde ilerlediğini varsaymıştım.
Altı yanıtlar:
Morgloz
2019-06-03 18:08:33 UTC
view on stackexchange narkive permalink

Bu Vikikitap bağlantısı güçlü yönlerini listeler, bunlardan bazıları şunlardır:

  • Programcıya izin veren son derece güçlü, statik ve güvenli bir sistem gerçek dünyayı yansıtan güçlü soyutlamalar oluşturmak ve derleyicinin birçok mantık hatasını hataya dönüşmeden önce tespit etmesine izin verir.
  • Modülerlik, böylece derleyici çok büyük yazılım sistemlerinin yapısını kaynaklardan doğrudan yönetir.
  • Bilgi gizleme; dil, arayüzleri uygulamadan ayırır ve görünürlük üzerinde ayrıntılı kontrol sağlar.
  • Okunabilirlik, programcıların kodu incelemesine ve doğrulamasına yardımcı olur. Ada, programın okuyucusunu yazara tercih eder, çünkü bir program bir kez yazılır ancak birçok kez okunur. Örneğin, sözdizimi tüm belirsiz yapıları yasaklar, bu nedenle Tao Programlama Yasası En Az Şaşırtma Yasasına göre sürprizler yoktur. (Bazı Ada programcıları, genellikle şifreli olan kaynak kodu hakkında konuşmak konusunda isteksizdir; İngilizce düzyazıya yakın olan program metnini tercih ederler.)
  • Taşınabilirlik: dil tanımı, derleyicilerin yalnızca birkaç kontrollü yolla farklılık göstermesine olanak tanır. ve aksi takdirde programların anlamını çok kesin bir şekilde tanımlar; Sonuç olarak Ada kaynak metni, derleyiciler ve hedef donanım platformları arasında çok taşınabilir. Çoğu zaman, program herhangi bir değişiklik yapılmadan yeniden derlenebilir.
  • Standardizasyon: standartlar, 1970'lerin sonlarında dilin tasarımından bu yana bir hedef ve öne çıkan bir özellik olmuştur. İlk standart, tasarımın başlamasından sadece 3 yıl sonra, 1980'de yayınlandı. Ada derleyicilerinin tümü tam olarak aynı dili destekler; tek lehçe olan SPARK, yalnızca açıklamalı bir alt kümedir ve bir Ada derleyicisi ile derlenebilir.

Okunabilirlik noktası önemlidir çünkü bir yazılım ürününün ömrü, onu kodlamayı / test etmeyi bitirdiğinizde bitmez. En büyük masraf (zaman ve para olarak) o ürünün bakımıdır. Dolayısıyla, ISS olarak uzun bir proje için, hataları ve genel belirsizliği en aza indirerek, bu göreve yardımcı olmak için oluşturulmuş bir dil kullanmak uygun görünüyor.

Bu cevap onu C ile karşılaştırıyor. ve C ++:

Ada, dile yerleştirilmiş bir dizi güvenlik özelliğine sahiptir. (Standardın, dile yerleştirilmiş tanımlanmamış davranışları özetleyen on iki sayfaya sahip olduğu C ile karşılaştırın. Tanımlanmamış davranışların, onları listelemeyecek kadar çok olduğu C ++ ile karşılaştırın.) Bu Ada güvenlik özellikleri önemli olabilir. performans maliyeti ve bu nedenle Ada, bu güvenlik özelliklerini seçici olarak devre dışı bırakma yeteneği de sağlar.

Kullanırsanız C veya C ++ ile aynı güvenlik düzeyine ulaşmanın mümkün olduğunu unutmayın. C veya C ++ dillerinin bir alt kümesi ve bir stil kılavuzuna bağlılık, ancak Ada'da dil ile birlikte gelir.

DÜZENLE (Teşekkürler JCRM): İlk bağlantı da düşük seviyeli programlama desteği:

Ada, gerçek zamanlı, güvenlik açısından kritik ve gömülü sistemler için düşük seviyeli programlamayı destekleyen güçlü özel özelliklere sahiptir. Bu özellikler arasında, diğerlerinin yanı sıra, makine kodu eklemeleri, adres aritmetiği, belleğe düşük seviyeli erişim, verilerin bitsel gösterimi üzerinde kontrol, bit manipülasyonları ve Ravenscar Profili adı verilen iyi tanımlanmış, statik olarak kanıtlanabilir eş zamanlı hesaplama modeli bulunur. >

Çalıştığım yerde, ürünü her seferinde derlemek zorunda kalmadan farklı yapılandırma verilerini yüklemek için adres aritmetiğini ve düşük seviyeli bellek özelliklerini kullanıyoruz ve bu da çok zaman kazandırıyor.

Yorumlar uzun tartışmalar için değildir; bu konuşma [sohbete taşındı] (https://chat.stackexchange.com/rooms/94495/discussion-on-answer-by-morgloz-what-makes-ada-the-language-of-choice-for- the-is).
"C veya C ++ dillerinin bir alt kümesini kullanırsanız, C veya C ++ ile aynı güvenlik düzeyine ulaşmanın mümkün olduğu" önerisine itiraz ediyorum. Bir alt küme * kullanmak, C / C ++ * 'da yerleşik olan bazı bariz tuzaklardan ve güvensizliklerden kaçınır ve böylece onları minimum düzeyde akıl sağlığına yükseltir. Buna kıyasla Ada, güvenlik temel bir tasarım hedefi olarak tasarlandı. Ciddi şeyler için. Bilirsin, uçaklar, bombalar ve benzeri şeyler. Yine başka bir derleyici derleyicisinin aksine. Ada'daki bir derleyici hatasının, C'de çekirdek dökümü olabilecek bir hatayı ne sıklıkla ortaya çıkardığını hatırlayamıyorum
[Alan / yayılan ortamda C ++ şablonunun kullanılması neden önerilmez?] (Https://stackoverflow.com/q/56557596/3904031) yanıtları da bağlantı vermeye değer olabilir
David Hammen
2019-06-03 17:10:23 UTC
view on stackexchange narkive permalink

Zamanlama. Ada, ABD Savunma Bakanlığı'nın gerçek zamanlı sistemlerinde kullanılan çok sayıda dilin yerini almak amacıyla 1970'lerde ve 80'lerde geliştirildi. NASA (ve ayrıca Avrupa'dan kuruluşlar) aktif katılımcılardı. Savunma Bakanlığı, Ada'yı 1991'deki tüm büyük gelişmeler için görevlendirdi. NASA da hemen hemen aynısını yaptı. Uluslararası Uzay İstasyonu o zamana kadar kağıt bir konseptti. Ada yetkisi yürürlüğe girdiğinde tam olarak gerçek olmaya başladı.

Savunma Bakanlığı, Ada yetkisini 1997'de kaldırdı. NASA da aynı şeyi yaptı. ISS bugün oluşturulmuş olsaydı, uçuş yazılımı büyük olasılıkla Ada'da olmazdı.


Peki neden Ada? Ada, bir dizi sorunu çözmek için yaratıldı. Biri Savunma Bakanlığında kullanılan çok sayıda dildi. Bir diğeri, bu dillerde, özellikle gerçek zamanlı sistemler ve gömülü sistemlerle ilgili olarak algılanan güvenlik eksikliğiydi. Ada, diğer dillerde eksik olan birkaç özellik sundu.

Ada'nın niş bir dil haline gelmesinin birçok nedeni var. Birincisi, dilin aşırı katı ve ayrıntılı olması, genel amaçlı bir dil olmasına engel olur. Diğer bir sorun da Ada topluluğunun ana bilgisayarlardan mini bilgisayarlara ve masaüstü bilgisayarlara geçişte tekneyi kaçırmasıydı. Bu geçişlerin ön saflarında yer alan diller (C ve C ++) yaygın olarak kullanılmaktadır. Ada topluluğu, özgür yazılım hareketindeki tekneyi de kaçırdı. İlk ücretsiz Ada derleyicisi 1995'e kadar çıkmadı ve bu sürüm tamamlanmadı. O zamana kadar çok geçti.

Bu cevaba asıl sebebi belirlediğini düşündüğüm için oy verirken, NASA'nın Ada'yı o sırada mevcut olan diğer alternatiflere tercih etmesinin nedenlerinden bahsederek daha iyi hale geleceğini düşünüyorum. Tamamen keyfi değildi.
Diğer yanıtlarda olduğu gibi, bu, onu uygun hale getiren şeyi yanıtlar, ancak sorunun neden hala kullanımda olduğu hakkındaki araştırmanın ikinci kısmı değildir.
@JackAidley: Alternatifler var mıydı? Modula-3 veya Mesa, belki?
Nedeni oldukça basit: uçuş yazılımı diğer yazılımlar gibi değil. Kesinlikle mecbur kalmadıkça hiçbir şeyi değiştiremezsin. Ciddiyetle eksiksiz bir uçuş yazılımı portunu farklı bir dile talep edersem Bina 1'in çatısından fırlatılırdım.
@Tristan - Önümüzdeki yıl 1 Nisan şakası için bir fikrim var ...
". ISS bugün inşa edilmiş olsaydı, uçuş yazılımı büyük olasılıkla Ada'da olmazdı." Her şey gibi Java veya Python'da olacaktır.
@QuoraFeans python'u sevdiğim kadar, henüz gerçek zamanlı / güvenlik açısından kritik uygulamalar düzeyinde değil. Yoğun çalışma süresine sahip Java, esasen gömülü kontrol uygulamalarından çıkarılır. * Son derece * büyük olasılıkla kod, otomotiv endüstrisinin kullandığı MISRA standartları gibi bir şeyi (veya benzer milyonlarca standarttan birini) kullanarak C (belki C ++) ile sonuçlanacaktır. Bu diller, pek çok iyi nedenden ötürü, gömülü alanda hala kraldır.
@Tristan, tam olarak. sadece cevapta değil
@JCRM - başka bir deyişle "paradigmalar gelir ve gider, ancak eski kod sonsuza kadardır". Bu sadece uçuş yazılımı değil - 70'lerden kalma COBOL'u hala çalıştıran en az bir kurumsal sipariş yönetim sistemi biliyorum çünkü onu daha modern bir dile taşıma riski çok yüksek.
Ada topluluğu, ana bilgisayarlardan masaüstü bilgisayarlara geçiş sırasında * tekneyi kaçırdı mı *? Pekala, kaçırılan tekneler ve bazılarının yakalamakla ilgilenmediği tekneler var! Ada, doğası gereği her zaman niş bir pazar dili olacak ve asla ana akım olmayacaktı - çoğu uygulamanın titizliğe ihtiyacı yok. Her neyse, müşteri şirketleri yalnızca genel (yani C / C ++ / Java) kodlama becerilerine sahip olacağından, ana akım bir pazara yemek servisi yüksek teknoloji desteği gerektirir. Bunda para yok. Ada'yı kritik sektörlere tanıtmak daha iyidir - tümü şirket içi uzmanlığa sahiptir - bu nedenle teknik destek ek yükü minimumdur. $
@Trunk - Bu bakış açısıyla ilgili sorun, Ada'nın zaman açısından kritik / güvenlik açısından kritik sistemler oluşturmak için gerekli olduğunu ve diğer dillerin yetersiz olduğunu varsaymasıdır. Bu pek durum böyle değil.
@David Hammen - Ada endüstrisinin iş modelini okurken sunmaya çalışıyordum. Umarım bu benim onunla hemfikir olduğumu ya da onun önerdiği dar sosyo-ekonomik ufukları kabul ettiğimi göstermedi.
Machavity
2019-06-03 20:30:06 UTC
view on stackexchange narkive permalink

90'ların sonunda Bilgisayar Bilimi dersleri aldığımı hatırlıyorum. CS profesörü, CS ana dallarından oluşan yetersiz grubumuza, bize COBOL veya Ada yerine C öğreteceğini çünkü genel olarak daha yararlı olacağını açıkladı. O zamanlar, o günlerde eğitim veren başlıca programlama dilleri kolejleriydi (bölgedeki bilgisayar bilimleri derecesine sahip her büyük üniversite bu ikisinden birini öğretti). Neden daha eski dilleri öğretirler? Çünkü içlerine kod yazan bir iş bulabilirsin. Bu, ISS'nin inşa edildiği zamandı.

Ada'nın ortaya çıkmasının nedeni, güvenilir olan ve Ada'nın tam anlamıyla faturaya uyacak şekilde tasarlanmış, görev açısından kritik yazılıma ihtiyaç duymasıydı. NASA, tarihteki en maliyetli yazılım hatalarından birine hâlâ sahiptir ( delikli kartların karanlık çağlarında)

Bir Delikli kart, Mariner 1 uzay aracının 1962'de (1962 dolar maliyeti: 18,5 milyon; bugünkü dolar cinsinden maliyet: 135 milyon dolar) imha edilmesine yol açtığı zaman, tarihteki en pahalı yazılım hatalarından biri olduğu ortaya çıktı. Venüs ile uçma görevini tamamlayın.

Bununla birlikte, bu rehberlik sisteminin yazılımında ölümcül bir kusur vardı: izleme verilerini işlemek ve uçuş talimatlarına dönüştürmek için kullanılacak denklemler yumrukta kodlandığında kartlar, kritik bir sembol dışarıda bırakıldı: sonraki yıllarda genellikle kısa çizgi ile karıştırılan bir üst çubuk veya üst çizgi. Bu üst çubuğun olmaması, esasen, kılavuz bilgisayarının uzay aracındaki normal olmayan bazı hareketleri yanlış bir şekilde telafi etmesine neden oldu.

Ada'nın ana özelliği kararlılık

Ada, sağlam yazılım mühendisliği ilkelerine verdiği önemle, DO-178B gibi güvenlik standartlarına ve Ortak Kriterler gibi güvenlik standartlarına göre sertifikalandırılması gerekenler de dahil olmak üzere yüksek bütünlüklü uygulamaların geliştirilmesini destekler. Örneğin, güçlü yazma, tek bir amaca yönelik verilere uygunsuz işlemlerle erişilmeyeceği anlamına gelir; işaretçileri tam sayı olarak (veya tam tersi) işleme gibi hatalar önlenir. Ada'nın dizi sınırı denetimi, C ve C ++ 'da yaygın olan arabellek aşımı güvenlik açıklarını önler.

NASA kendi Ada-esque dilini oluşturmaya çalıştı (bunu uydurmuyorum) Uzay Mekiğinin kullandığı HAL / S ve ... daha fazlası değil. O zamana kadar tüm yer ekipmanı Ada'yı kullanacaktı ( standartlar!)

HAL / G adlı HAL'ın NASA standart yer tabanlı sürümü için bir teklif " zemin "önerildi, ancak yakında Ada programlama dilinin ortaya çıkması, Intermetrics'in bu çalışmaya devam etme konusundaki ilgisizliğine katkıda bulundu.

Oh, HAL / S diğer bir küçük sorun

Hal / S'nin zayıf yönü, yalnızca IBM 360/370 serisi ana bilgisayar bilgisayarlarında barındırıldığında kolayca kullanılabilir olmasıdır. Intermetrics ayrıca Hal / S'yi Modcomp IV ve Classic'te ve Data General Eclipse mini bilgisayarlarda barındırdı. Ancak Modcomp uygulaması yalnızca JPL tarafından kullanılır ve adres alanı sınırlamaları derleme hızını yaklaşık 30 satır / dakikaya düşürdüğü için Eclipse geliştirme artık kullanılmamaktadır.

Bu nedenle, öyle değil 90'ların başlarında (PC'ler yükselişte iken) daha standart bilgi işlem aygıtları tedarik etmenin çok daha ucuz olması şaşırtıcıydı (bahse girerim IBM, zaten astronotlara astronotlar sağladıkları için Ada'yı daha standart bir donanımda çalıştırmayı başardı. O zamanlar Thinkpad'ler). Eğlenceli gerçek: Linux çalıştıran Thinkpad'ler istasyon bilgisayarı ile arayüz oluşturmak için kullanılır

O ilk günlerde istasyonun komuta ve kontrol sistemleriyle konuşan dizüstü bilgisayar yazılımının nasıl Linux tabanlı bir işletim sistemi üzerinde çalışacak şekilde tasarlandığını anlatan "Yalnızca uygulama ihtiyaçlarından ibaretti" dedi.

Buna karşılık, gezgini (2000'lerin başlarında) C üzerinde koştu

2.5 milyon satır C çalıştırıyor BAE tarafından üretilen bir RAD750 işlemci.

Bu neredeyse en maliyetli hata değil. Mars Climate Orbiter, 1998'de 327.6 milyon dolara mal oldu. Emperyal ve metrik birimler karıştırıldığı için düştü. Teknik olarak sonuçta bir yazılım hatası olmamasına rağmen - sorun arızadan önce fark edilmişti, sadece mühendisler "endişelerini belgelemek için [formu] doldurma kurallarına uymadılar". Yani bu gerçekten bir bürokrasi hatasıydı, tıpkı Challenger gibi mühendislerin de bürokrasiyi önceden uyardığı.
Üst çubuk olayı programlama dilinde bir hata değildi, spesifikasyondaki bir hataydı. (kaynak: Scott Manley, sanırım), asıl mesele, spesifikasyonun bu değerin ortalamasının, dolayısıyla üst çubuğun, ancak spesifikasyon incelemesi ve kod incelemesi, bunun ortalama olması gerektiğini yakalayamadığını söylemiş olması gerektiğiydi. değer. Şimdi, daha düşük bilişsel yüke sahip bir dil, programcının daha kolay fark etmesini sağlayabilir, ancak bu özel olaya bir dil neden olmadı.
"CS profesörü neşeli bir adamdı" - her biri kendi derleyicisine ihtiyaç duyan 1000 lehçeye sahip bir dil hakkında konuşun! Ada bu yüzden geliştirildi: Yüzlerce Jovial lehçenin yerini almak için. Sana C'yi öğrettiğine şaşmamalı: Ada'nın en sevdiği dilin yerini aldığı kötü duygular!
@davidbak * rimshot * TIL böyle bir dil var ...
@Machavity: Oh evet! JOVIAL, B2 Spirit'in aviyonik yazılımı JOVIAL ile yazıldığı için biraz ünlüdür. Hava Kuvvetleri daha sonra * Semantic Designs * adlı bir şirketle (Baş Mühendisi [softwareengineering.se] ve [so] üzerinde gerçekten çok aktif) [JOVIAL'den C'ye bir çevirmen oluşturmak için] (http://semdesigns.com /Products/Services/NorthropGrummanB2.html), kaynak koduna * hiç erişmeden * yapabildikleri *.
HAL / S, Ada'dan epeyce önce geldi. Sonunda Ada ile sonuçlanan DoD yarışması için kaybeden üç yarışmacıdan biri Intermetrics'tendi. Önerileri esasen bir HAL / S türeviydi. Intermetrics'in HAL / S'yi tasarlaması ve uygulaması, önerilerini güçlü bir şekilde etkiledi.
Curiosity'nin C'de yazılmış kod üzerinde çalışması ilginçtir - ancak bir SW hatasının düzeltilebileceği (SW güncellemeleri) veya en uçta, görev kaybına neden olur, ancak can kaybına neden olmaz. Fırlatma aracı neyle çalıştı acaba?
Cees Timmerman
2019-06-03 17:54:06 UTC
view on stackexchange narkive permalink

web sitesinden:

AdaCore araçları, kodlama standart uyumluluk , kod doğruluğu ( arabellek taşması, tamsayı taşması ve başlatılmamış değişkenlere referanslar gibi hataların önlenmesi ve MC / DC 'ye kadar yapısal kapsam analizi. Ravenscar görev profilini uygulayan bir tane de dahil olmak üzere, yüksek güvenceli özel çalışma zamanı kitaplıkları, nitelikli sistemlere dahil edilecek kadar basittir ancak gerçek zamanlı uzay yazılımı için gerekli işlevselliği destekleyecek kadar ifade edicidir. Çalışma zamanı kitaplıkları için yeterlilik materyali ECSS standardı için geliştirilebilir ve yeni proje bağlamlarına uyarlanabilir.

C ve C ++ bu hataları engellemez (bar maliyetli eklentiler) ve Java zor gerçek zamanlı değildir (çubuk standart olmayan sanal makineler).

Hayat devam ederken satır, tasarım gereği çalışma zamanı hatalarını ve gecikmeleri dışlamak en iyisidir:

  Ada.Text_IO ile; Ada.Text_IO kullanın; yordam Öğren, alt tür Alfabe, Karakter aralığı 'A' .. 'Z' dir; Put_Line ("& Alphabet'First &" dan "& Alphabet'Last" a "Ada Öğrenme); end Learn;  

Burada Alfabe, A'dan Z'ye başka bir değer içeremez. Bu oldukça benzersiz dil özelliği, diğerlerinin yanı sıra, bir öğrenci ekibinin 2013-2015 CubeSat misyonu:

Lisans ortamında Ada'nın bir örneği olarak, ABD'deki Vermont Technical College'daki öğrenciler SPARK dilini (resmi olarak analiz edilebilir Ada alt kümesi) yakın zamanda iki yıllık başarılı bir yörünge görevini tamamlayan bir CubeSat uydusu için yazılım geliştirmek için. SPARK, güvenilirlik avantajları nedeniyle seçildi. Öğrencilerin daha önce Ada, SPARK veya resmi yöntemlerle ilgili deneyimleri yoktu, ancak hızlı bir şekilde hız kazandılar.

Lansmana dahil olan akademik kurumlardan on iki CubeSats arasında, Vermont Tech'ten olanı görevini tamamlayan tek kişi oldu. Diğerlerinin çoğu, yazılım hataları nedeniyle kıyametlerini karşıladı. Vermont Tech grubu başarısını, örneğin çalışma zamanı hatalarının olmadığını resmen göstermelerine olanak tanıyan SPARK yaklaşımına borçludur.

Yorumlar uzun tartışmalar için değildir; bu konuşma [sohbete taşındı] (https://chat.stackexchange.com/rooms/94540/discussion-on-answer-by-cees-timmerman-what-makes-ada-the-language-of-choice- için).
Trunk
2019-06-05 22:11:11 UTC
view on stackexchange narkive permalink

Seçilebilecek tüm olası diller arasında Ada'nın NASA'nın bu kadar kritik bir uygulama için tercihi olmasını sağlayan yönleri nelerdir? Eski nedenler ile içsel uygunluk arasındaki ağırlık ne olabilir?

  • Ada, tam da bu tür durumlar için tasarlanmış bir dildir, yani hata Kritik ekipman veya süreçleri kontrol etmek için kullanılan hoşgörüsüz, gerçek zamanlı ve (genellikle) gömülü sistemler

  • Ada'nın evrimi çok daha odaklanmış ve sıkı bir şekilde yönetilmiştir çok başlangıç. Hem yaratıcıları hem de değerlendiricileri, hem mesleklerine hem de Ada projesine karşı güçlü bir görev duygusuyla dil gelişimi alanında özenle seçilmiş uzmanlardı. West Coast değerlerinin Java'ya nüfuz etmesi gibi, Ichbiah, Dewar ve Taft'ın özverili alçakgönüllülüğü Ada için hala hüküm süren ve NASA gibi bir kuruluşa hitap etmesi gereken bir üslup oluşturdu.

  • Ada'nın, resmi olarak doğrulanmış bir sistem tasarımının koduyla eşleştirilmesine olanak tanıyan

  • Ada en hızlı dillerden biri , ayrıca paralel işlemcilerle

  • Ada endüstrisi (AdaCore, Altran, Green Hills, Wind River vb. şirketler) Ada / SPARK'ta kritik sistem geliştirme için çok sayıda destek aracı geliştirdi

  • Ada için birkaç yetenekli alternatif dil vardır

  • Resmi olarak tanımlanmış C gibi alternatif diller, Ada / SPARK'ın yaptığı gibi deneyim veya destek derinliğine sahip değildir

Ayrıntılı sistem gereksinimlerinin ne olduğu veya ihale yönergelerinin ne kadar sıkı olduğu hakkında hiçbir fikrim yok miras ve içsel uygunluğun ağırlıklandırılmasıyla ilgilidir. Ancak Ada / SPARK'ın her iki kategoride de yüksek puan alması bana mantıklı geliyor. Miras faktörleri,

    gibi şeyleri içermelidir
  • NASA, Ada projesinin orijinal bir sponsoruydu ve onu daha önceki sistemlerde en başından beri kullanmıştı

  • Sistem kurma şirketinin Ada / SPARK ile olan aşinalığı, Yeni kritik sistemin gereksinimleri için yapılarını etkili bir şekilde dağıtma konusundaki bilgi birikimi

  • Ada / SPARK'ın alt yükleniciler tarafından muhtemelen mevcut kullanımı, örn. projeye radar, röntgen dürbünleri vb. gibi yardımcı ekipmanlar için gömülü sistemler ve ana ve alt sistemler arasında veri arabirimi

Peter Krassoi
2019-06-05 17:21:24 UTC
view on stackexchange narkive permalink

Ada, programlama dillerinin SGML'sidir (ve Java / C # XML'dir). Her ikisi de eksiksiz bir çözüm için yeni bir temelde oluşturulmuştur. Ve ikisi de karmaşıklıkları ve tuhaflıkları nedeniyle popüler olamadı. (Azınlık SGML'yi bilir, ancak herkes HTML'yi anlar: basitlik güçtür.) Ada'yı '91'de öğrendik ve önemsiz Pascal veya C'den değil Modula-3'ten geldiğimizde bile sevdik. (Montajdan bahsetmeden bile.) Ada mükemmel bir şekilde yerleşik görünüyordu. genel ve ayrıntılı olarak. Ancak hiçbirimiz bunu kullanmadık çünkü tek Ada ortamı IBM 360 (veya onun bir Rus klonu) içindi ve PC için uzun yıllar boyunca Ada derleyicisi görünmedi. Ve teorik olarak mükemmel ama dokunulmaz olan "cam bir dolapta parlayan bir elmas" oldu. Sieve of Eratosthenes için kod yazdık, ancak log (log (10e9)) görevleriyle çalıştıracak kaynak yoktu. (O gün RAM'i yüzlerce KB olarak saydılar.) Bu arada iyi C ++ ortamları geldi (kullanılabilir sınıf kitaplıkları ile!) Ve çoğu programcı Java on yıl sonra ortaya çıkana kadar onu birincil platform olarak kullandı. Ve hatta Java için iyi bir geliştirme aracı yoktu, ancak kullanılabilir olanlar vardı ve ucuz bilgisayarlar bunları çalıştırabilir.

ADA'yı 1989'da Sun Workstations üzerinde derliyordum, 1991'de birçok platform için birçok sürüm vardı.
1988'de Motorola 68000/68020 için Ada yazıyordum, bir VAX üzerinde çapraz derleme yapıyordum. Birkaç yıl sonra Ada'yı bir TI kayan noktalı DSP için yazıyordum, yine bir VAX üzerinde çapraz derleme yapıyordum. @JCRM kesinlikle doğru: 1991 yılına kadar birçok platform için birçok seçenek vardı.
Ada, C ++ 'dan çok daha az karmaşıktır. Hatta erken C ++. Kişisel spekülasyonun neden "popüler olamadığına" dair herhangi bir iddia olgusal bilgi olarak sunulmaması gereken bir iddia değil, aynı zamanda bu belirli iddia kanıtlanabilir şekilde yanlıştır.
Kaba bir ölçü olarak, eski yeşil Ada83 LRM'm yaklaşık 250 sayfa. ISO C ++ standardının [Bu çalışma taslağı] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf) 1440 sayfadır.
AdaCore, bugünün Ada'sının yüksek bütünlüklü sistem dünyasının HTML 5'ine daha çok benzediğini söyleyebilir - çok sayıda işletim sisteminde (iOS ve Android dahil) (çapraz olarak) derlenebilir, kodu kapsamlı bir şekilde kontrol etmek için pek çok gösterişli araç içerir , diğer büyük dillerdeki sistemlerle arayüz oluşturma, GUI'ler için API'ler, doğrulama testi çerçeveleri için XML ve komut dosyası işleyicileri, güvenli bir web sunucusu vb. HTML 5 ile olan tek bağlantı, IDE'sinin sevilmeyen * görünümü * (ancak işlevselliği değil), KÜRESEL KONUMLAMA SİSTEMİ . . .
1985'te Alsys, IBM PC / AT için DOS altında ticari olarak tamamen doğrulanmış (resmi test paketini geçti) bir Ada derleyicisi gönderiyordu. Eşzamanlılık dahil tam dil. Günlük (log (10e9)) görevleriyle ne demek istediğinizden emin değilim, çünkü bu çok fazla görev değil, ancak Alsys Ada için ortak bir demo, her karakter konumunda gevşetme yoluyla bir boru içinde ısıtma simülasyonu çalıştırmaktı Ekranda (80x25), dört komşusuyla buluşan Ada göreviyle destekleniyor.
@T.ED Ada 83'ün C + qa'dan daha az karmaşık olduğu doğru değil. Tip güvenli ve aralık olarak kontrol edilen, değişken boyutlu dizileri alanlar olarak (birden fazla ayrı ayrı değişen), görevler - bunlar da alanlar olabilir. kayıtlar veya diziler halinde - ve tabii ki güçlü, optimize edilebilir ve tamamen tip-güvenli jenerikler, C ++ derleyicilerinin bu güne kadar gerek duymadığı gerçek ayrı derleme ile !! Ve ginsu bıçakları dahil çok daha fazlası! Ama evet, yeşil kitap bugünün C ++ standardından daha kısaydı!
@davidbak - C ++ 'ın şablonları, Ada'nın jeneriklerinden çok, uygulanması, açıklanması ve kullanıcıların ilgilenmesi için çok daha karmaşıktır. Bu, çoğunlukla Ördek yazmayı kullanma kararından kaynaklanmaktadır (bu da IMHO, bu tek özellik ile çok fazla sorunu çözmeye çalışma kararından gelmiştir) Elbette çok daha güçlüler (Turing bile tamamlandılar!), Ancak güç her zaman bir bedeli vardır. Özellikle, hata romanları ve bazı zavallı piçler bunu somutlaştırmaya çalışıncaya kadar iyi derleyen kara mayını kodları Ada jeneriklerinde olmayan iki özel sorundur.
@JCRM: Duvarın yanlış tarafında yaşıyorduk, SSCB'de yapılmayan herhangi bir donanım güncel olmaktan çok uzaktı. Yazılımlar da. Ada derleyicisi, üniversitedeki iki hevesli (ve elbette yetenekli) öğretmen tarafından yapıldı.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 4.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...