Frage zu Ada in kritischen Systemen



  • Hallo!

    Es wird ja gesagt, dass Ada gerne für kritische Systeme eingesetzt wird, welche eine hohe Sicherheit erfordern. Also z.B. Waffensysteme oder Raketen (Ariane...) oder Flugzeuge (ein Boeing-Typ soll bis zu 99,9 % Ada einsetzen).

    Aber Ada wurde ja vom US-Militär entwickelt oder zumindest in Auftrag gegeben.

    Deshalb meine Frage:

    Was für Programmiersprachen setzen andere Nationen für kritische Sachen ein? Also z.b. die Chinesen oder die Russen für ihre Waffensysteme (S-400...) und ihre Raketen (Soyuz usw.)?

    Danke im voraus!



  • Warum sollten die nicht ADA einsetzen? Ist ja egal wer es entworfen hat und wenn man Know-How des Gegners hat, ist es ja um so besser. Muss man also nicht selbst entwerfen.

    Wobei die Verwendung von ADA wohl zurück geht. Ich denke mal, das in dem Bereich alles mögliche Verwendung findet, was Ingenieure so können: Fortran, C, C++, Ada (sogar Lisp (macht die Nasa wohl teilweise :))) und mittlerweile sogar *würg* Echtzeit-Java.



  • Hallo rüdiger!

    Da hast du natürlich recht. Ada ist eine standartisierte Programmiersprache die jeder einsetzen kann wenn er will.

    ABer meine Frage bezog sich ja eher darauf, dass Ada speziell vom US-Militär entworfen wurde. Davor hatten die ja auch andere Sprachen im Einsatz (sogar recht viele durcheinander wie man im Ada-Wiki-Artikel nachlesen kann).

    UND NUR weil das US-Militär eine neue Sprache entworfen hat, sind doch nicht die Russen und andere Länder auf einmal auch darauf umgestiegen oder?

    Deswegen bin ich mir da wirklich nicht so sicher ob die Russen in ihren Systemen Ada einsetzen.

    For allem da Ada auch nicht so ganz sicher sein soll wie man sagt. Das soll u.a. daran liegen, dass einfach zu viel in die Sprache reingepackt wurde und sie somit etwas überladen sein soll...

    Und dass der Einsatz von Ada langsam zurück geehen soll habe ich auch schon gehört. Wird wohl seine Gründe haben.

    Ich möchte auch nochmal kurz mein Interesse an diesem Thema begründen:

    Die Waffen- und Weltraraumtechnik ist ja recht berühmt daür recht gut und zuverlässig zu sein. So ist z.B. die Soyuz-Rakete die erfolgreichste und am meisten eingesetzte Rakete der Welt mit einer zuverlässigkeitsquote von über 98% (Weltspitze). Sicherlich hängt das nicht nur von Software ab, sondern hauptsächlich von der Technik aber trotzdem würden diese erfolge, die dort eingesetzte/n Programmiersprache/n bestätigen.

    thx!



  • Entschuldigung! Mir ist da ein Fehler unterlaufen!

    Die Zeile

    "Die Waffen- und Weltraraumtechnik ist ja recht berühmt daür recht gut und zuverlässig zu sein."

    soltte eigentlich heissen:

    "Die russische Waffen- und Weltraraumtechnik ist ja recht berühmt daür recht gut und zuverlässig zu sein."



  • Also ich habe mal einen Bericht über den A380 und die Boing 747 gesehen. Bei der 747 ist nicht 99,9% alles in Ada programmiert. Nein, der Computer, der die 747 in der Luft hält ist so aufgebaut:

    6 redundante Rechner.
    Auf diesen laufen die gleichen Programme, die aber von 2 unterschiedlichen Teams in 2 unterschiedlichen Sprachen programmiert wurden. Wenn man alleine von dieser Steuereinheit ausgeht, und davon das vielleicht Ada eingesetzt wurde, dann ist Ada "nur" zu 50% vertreten, weil das System absichtlich doppelt in zwei unterschiedlichen Sprachen programmiert wurde. Und das von unterschiedlichen Teams.

    Also, wirklich vertrauen tut man keiner der zwei eingesetzten Sprachen zu 100%. Und auch keinem der beiden Teams (die sich auch nicht gegeseitig kennen). 😉

    Aber nur so soll und kann wohl die Fehlerquote am kleinsten gehalten werden. Vertrauen ist gut, Kontrolle ist besser. 😃

    Artchi

    PS: Welche zwei Sprachen zum Einsatz kamen, wurde nicht gesagt.



  • Jetzt wird wieder die Sprache und die Implementation dieser in einen Topf geworfen. 🙄
    Eine Sprache ist nur so gut, wie der Compiler bzw der Computer der diese Sprache dann umsetzt. Für solche kritischen Systeme würde ich eher eine Sprache verwenden die so einfach wie möglich ist und die dem Programmierer sehr viele Grenzen auferlegt. Weil man dann einen Compiler bauen kann, der den Code sehr gut überprüfen kann.



  • gut das kann natürlich stimmen.

    Aber kennt jemand Quellen wo einigermassen ausführlich steht wo welche sprachen eingesetzt werden.

    Also so im stille wie es bei python.org steht. (Python wird bei der Nasa eingesetzt usw. Wünschenswert währe natürlich eine genauere angabe)



  • DEvent schrieb:

    Jetzt wird wieder die Sprache und die Implementation dieser in einen Topf geworfen. 🙄
    Eine Sprache ist nur so gut, wie der Compiler bzw der Computer der diese Sprache dann umsetzt. Für solche kritischen Systeme würde ich eher eine Sprache verwenden die so einfach wie möglich ist und die dem Programmierer sehr viele Grenzen auferlegt. Weil man dann einen Compiler bauen kann, der den Code sehr gut überprüfen kann.

    Zufälligerweise müssen ADA-Compiler hohe Anforderungen erfüllen und der Code kann sehr exakt überprüft werden. Schau einfach im Standard nach und mach dir selbst ein Bild. Den gibt's im Übrigen gratis.



  • Ein ADA-Compiler darf nur ADA-Compiler nennen, wenn er eine Zertifizierung durchlaufen hat.

    Aber die beste Programmiersprache kann eben keine Bugs verhindern, wenn in der Programm-Logik ein Fehler ist. (Daher kann das "zwei Teams auf zwei unterschiedlichen Systemen"-Schema vielleicht hier und da einen Bug verhindern, aber wenn man zB falsche Beschreibungen des Flugmodells hat, fliegt es einem trotzdem um die Ohren :))

    Gundalf schrieb:

    gut das kann natürlich stimmen.

    Aber kennt jemand Quellen wo einigermassen ausführlich steht wo welche sprachen eingesetzt werden.

    Also so im stille wie es bei python.org steht. (Python wird bei der Nasa eingesetzt usw. Wünschenswert währe natürlich eine genauere angabe)

    Das dürfte schwer zu finden sein. Python.org ist eben eine zentralisierte Plattform, auf der Python entwickelt, vertrieben und vermarktet wird. Für viele andere Programmiersprachen (Ada, C, C++ etc.) findet man so etwas nicht, daher dürfte auch eine Liste von Anwendern nur sehr vereinzelt zu finden sein. (Schau mal bei den Implementierungen etc.)



  • Du fragst explizit nach militärischen Sachen. Ich denke mal, gerade hier wird man weniger öffentlich breitgetretene Informationen finden. Sicherlich gibts Infos, ähnlich wie zu der 747, aber ich glaube nicht, das es einem auf die Nase gebunden wird.

    Weiterhin sollte man nicht nur beim Militär von kritischer Software ausgehen. Es gibt ja auch midizinische Geräte die zuverlässig arbeiten müssen. Da könnte man sich ja z.B. bei Siemens Medical informieren (wobei die z.B. ACE-Framework gesponsert haben, das zeigt schon mal eine Richtung). Schau mal bei Trolltech nach, die haben eine Success Story von einer Flugsicherung. Auch nicht unkritisch, Flugzeuge im Luftraum korrekt zu managen?



  • Bei Flugsicherung muss ich auch an Erlang denken. Das wird auch bei Telekommunikations-Systemen benutzt. ist also auch für kritische Anwendungen gedacht (eben hohe redundant und Ausfallsicherheit)



  • "...
    6. Anforderungen an die Programmiersprachen
    ...
    Alle Sprachen, die z.B. ein automatisches Speichermanagement beeinhalten (wie z.B. C++ oder Java) stellen ein
    unkalkulierbares Risiko dar und kommen für harte Realzeit und hohe Verfügbarkeit nicht in Frage. Das gleiche gilt
    für solche Mechanismen im Kontext von objektorientierten Paradigmen, in denen diverse Konstruktoren in einer Weise
    aktiviert werden können, die nicht eindeutig voraussagbar sind.

    In der Praxis spielt heute --de facto-- im Bereich von Realzeit und Verfügbarkeit nur eine einzige Sprache eine
    unumschränkte Rolle, und das ist die Sprache C, in vielfachen Kontexten zusätzlich begleitet von direktem
    Assemblerkode. Selbst die sprache ADA, die im Zeitraum 1979-1995 im Auftrag des amerikanischen
    Verteidigungsministeriums speziell für harte Realzeitanwendungen entwickelt worden ist, konnte sich nicht wirklich
    durchsetzen. Das neueste Kampffliegerprojekt Amerikas wird ofiziell in C abgewickelt und grosse internationale
    Luftfahrt-Konzerne benutzen wieder (!) C statt Ada (siehe z.B.: Michael JUNGMANN [2003], dazu auch Jörg MATTHES et al [2003]).
    ..."
    http://www.fbmnd.fh-frankfurt.de/~doeben/I-RT/I-RT-TH/VL1/i-rt-vl-vl1.html#Sprachen



  • Wie für jede Quelle gilt es auch hier kritisch zu hinterfragen 😉

    Und wenn man heute von "in C abgewickelt" redet muss man hinterfragen ob/wieviel Code "von Hand" geschrieben wurde, oder ob der C-Code "nur" generiert wird.



  • emmax schrieb:

    Alle Sprachen, die z.B. ein automatisches Speichermanagement beeinhalten (wie z.B. C++ oder Java) stellen ein
    unkalkulierbares Risiko dar und kommen für harte Realzeit und hohe Verfügbarkeit nicht in Frage.

    Blabla. C++ hat kein automatisches Speichermanagement. Falls doch, dann hat auch C eins. Dynamische Speicherallokation ist es, die das Risiko darstellt.

    Rest des Blablas gesnippt. Die Fakten bezüglich des Einsatzes von C mögen stimmen, nicht aber die angegebenen Gründe.


Anmelden zum Antworten