Womit programmiert die NASA



  • @NewProggie

    Suchst du einen Compiler für die eigene Shuttle Software `?



  • ..



  • NewProggie schrieb:

    Hi,

    ich habe letztens einen Bericht über Space-Shuttles und der riesige Aufwand, der damit verbunden ist, im Fernsehen gesehen.
    In der Reportage fielen auch z.B. so Sätze wie: "In jedem 'normalem' Programm wie z.B. Spiele, Anwendungssoftware etc. kommen im Schnitt ein Bug auf 10.000 Zeilen Quellcode (Na, ich weiß nicht, wo die Berichterstatter diese Zahlen herhaben und _welche_ Quellcodes die da überprüft haben:-) , Anm. d. Red.), bei dem Programm, was den Start des Space-Shuttles initiiert wären es dann schon ein Bug auf 1.000.000 Zeilen Quellcode.
    Das nur am Rande. Was mich mal interessieren würde ist, ob hier jemand zufälligerweiße weiß, womit die NASA denn eigentlich programmiert, ich meine, haben die ein eigenes OS entwickelt, Programmiersprache etc?

    Ich bin mir ziemlich sicher, das bei einem Spaceshuttlestart besser kein Bug in der Software sein sollte 😉



  • phlox81 schrieb:

    Ich bin mir ziemlich sicher, das bei einem Spaceshuttlestart besser kein Bug in der Software sein sollte 😉

    Ich weiß nicht, ob die Nasa routinemäßig Lisp verwendet, aber ich habe von einem Fall gehört, in dem bei einem Satelliten o.ä. im Orbit ein Bug aufgetreten ist, der im laufenden Betrieb gefixt wurde, dank der Implementierung in Lisp.



  • Wichtiger als alle Bug-Vermeidungs-Techniken sind Wege wie man darauf reagieren kann und die Auswirkungen einschränkt 🙂

    @Erhard
    👍

    Für C++ wird einfach keine Werbung gemacht.



  • Bashar schrieb:

    phlox81 schrieb:

    ...aber ich habe von einem Fall gehört, in dem bei einem Satelliten o.ä. im Orbit ein Bug aufgetreten ist, der im laufenden Betrieb gefixt wurde, dank der Implementierung in Lisp.

    firmware-updates im laufenden betrieb sind aber keine kunst. erst recht nicht bei den vielen, relativ unabhängigen computersystemem, die in so'nem satelliten werkeln...
    🙂



  • Um irgendwelche kleinen Controller, die man mal eben in einer Handvoll Taktzyklen resetten kann, gings dabei bestimmt nicht. Für die erübrigt sich auch die Frage, in was man die programmiert ...

    Edit: Hier der Link: http://www.flownet.com/gat/jpl-lisp.html speziell der Abschnitt über den Remote Agent.



  • Bashar schrieb:

    Um irgendwelche kleinen Controller, die man mal eben in einer Handvoll Taktzyklen resetten kann, gings dabei bestimmt nicht. Für die erübrigt sich auch die Frage, in was man die programmiert ...

    naja, die grösse der geräte spielt wohl keine rolle beim gegenseitigen aufspielen neuer software. ...und ich schätze die NASA wird auch bei kleinen controllern ADA einsetzen.

    Bashar schrieb:

    Edit: Hier der Link: http://www.flownet.com/gat/jpl-lisp.html speziell der Abschnitt über den Remote Agent.

    nicht schlecht.
    läuft lisp in einer art virtual machine oder wird es zu machinencode compiliert? bei letzterem ist die gefahr ja bekannterweise gross, ein system zu crashen.
    🙂



  • pale dog schrieb:

    läuft lisp in einer art virtual machine oder wird es zu machinencode compiliert? bei letzterem ist die gefahr ja bekannterweise gross, ein system zu crashen.
    🙂

    gibt beides



  • Hängt von der Implementation ab, meistens wird es zu Maschinencode compiliert, ich kenne nur eine Implementation die in Bytecode compiliert. Ob das Produkt absturzgefährdet ist oder nicht hängt in erster Linie davon ab, ob die Sprache unsichere Konstrukte anbietet und ob der Programmierer diese benutzt.



  • Naja, ich weiß nicht, ob ich genaueres sagen darf. Ich lass es mal lieber 😉
    Als ich Praktikum beim DLR gemacht habe, war die Satellitensoftware in C programmiert. Muss aber ja nicht heißen, dass alle Satelliten dort in C programmiert sind.



  • Bashar schrieb:

    Ob das Produkt absturzgefährdet ist oder nicht hängt in erster Linie davon ab, ob die Sprache unsichere Konstrukte anbietet und ob der Programmierer diese benutzt.

    stimmt, das ist viel entscheidender als VM oder nicht-VM.
    daher ist ja auch z.b. ADA in sicherheitskritischen bereichen so beliebt.
    🙂

    KasF schrieb:

    Als ich Praktikum beim DLR gemacht habe, war die Satellitensoftware in C programmiert.

    vielleicht war's ja kein handgefrickelter C-code, sondern irgendwas generiertes?



  • Handgefrickelter C-Code 😉



  • DLR hat auch den ASURO erfunden, und der werkelt ja auch munter in C.
    http://www.henkessoft.de/Roboter/ASURO.htm



  • Erhard Henkes schrieb:

    DLR hat auch den ASURO erfunden, und der werkelt ja auch munter in C.

    wen wundert es?
    es gibt nun mal keinen ersatz für C 👍



  • ... wen wundert es? es gibt nun mal keinen ersatz für C 👍

    C wird durch die zunehmende Bedeutung der Microcontroller sogar immer wichtiger. Atmel's µC wurden sogar während der Hardwareentwicklung auf die Programmierung mit C optimiert. Da Microcontroller ideale Schnittstellen zwischen Sensoren/Aktoren und einem Computer-Mainboard sind, kann C und Assembler (oder beides ineinander gemischt) in solchen Systemen eine bedeutende Rolle spielen. C++ wird für Microcontroller selten verwendet (Fehleranfälligkeit, bestehende Einschränkungen).

    GNU avr-gcc: http://www.avrfreaks.net/index.php?module=FreaksTools&func=viewItem&item_id=145
    http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial



  • Erhard Henkes schrieb:

    C++ wird für Microcontroller selten verwendet (Fehleranfälligkeit, bestehende Einschränkungen).

    Wenn man auf RTTI, Exceptiones und dynamischen Speicher verzichtet, lassen sich µC wunderbar in C++ programmieren und das heute gar nicht mal mehr so selten. Mit namespaces und statischen Klassen lässt sich der Code wunderbar strukturieren, lesbarer und damit weniger fehleranfällig machen. Und templates sind entgegen der Meinung vieler µC-C-Programmieren sehr gut für µC geeignet, da nur der Code compiliert wird, der auch wirklich benötigt wird.



  • mastercpp schrieb:

    [
    Mit namespaces und statischen Klassen lässt sich der Code wunderbar strukturieren, lesbarer und damit weniger fehleranfällig machen.

    geht auch mit 'struct' in C 🙂

    mastercpp schrieb:

    [
    Und templates sind entgegen der Meinung vieler µC-C-Programmieren sehr gut für µC geeignet, da nur der Code compiliert wird, der auch wirklich benötigt wird.

    ...aber bei jeder instanziierung 😞



  • pale dog schrieb:

    ...aber bei jeder instanziierung 😞

    😕

    Was stört dich?



  • pale dog schrieb:

    mastercpp schrieb:

    Mit namespaces und statischen Klassen lässt sich der Code wunderbar strukturieren, lesbarer und damit weniger fehleranfällig machen.

    geht auch mit 'struct' in C 🙂

    Aber nur sehr beschränkt. Folgendes geht z.B. in C nicht:

    usart0::set_mode(usart0::uart, 9600, 8, 0, 1);
    

    Man kann in C keine Memberfunktionen in structs packen 😉

    pale dog schrieb:

    mastercpp schrieb:

    Und templates sind entgegen der Meinung vieler µC-C-Programmieren sehr gut für µC geeignet, da nur der Code compiliert wird, der auch wirklich benötigt wird.

    ...aber bei jeder instanziierung 😞

    Nur einmal pro Datentyp..


Anmelden zum Antworten