Ada-Lernen, "Übungs"-projekt
-
Unter Wiki steht dass die Sprache wohl ne Zeit lang Pflicht war, das wurde dann aber wieder geändert und sicherlich nicht ohne Grund.
Für die Allgeinmeinheit ist die Sprache nix sonst hätte sie sich auch mehr durchgesetzt .Anscheinend stimmt mit der Sprache an sich auch was nicht:
Die auf Sicherheit ausgelegten Spracheigenschaften von Ada alleine können offensichtlich Fehler nicht verhindern: Eine Ariane 5 der ESA ging bei ihrem ersten Flug im Juni 1996 durch einen arithmetischen Überlauf verloren, weil der entsprechende Test ausgeschaltet worden war. Allerdings war das nicht die Schuld der Programmiersprache: Das Management des Softwareentwicklerteams hatte verlangt, Code, der für Ariane 4 geschrieben worden war (und dort auch korrekt funktionierte), ohne weitere Überprüfung der Voraussetzungen zu übernehmen. Da Ariane 5 ein anderes Flugprofil besaß als Ariane 4, musste dieses Vorgehen scheitern.
Trotzdem senkte dieses Ereignis die Popularität von Ada, auch nachdem Bertrand Meyer erklärte, mit der von ihm entwickelten Programmiersprache Eiffel wäre der Fehler nicht passiert.[3]Der ganze Artikel spricht mich nicht sonderlich an genauso wenig wie die hässliche Syntax, tut mir leid.
Am besten du schaust wirklich mal in ein Ada-Forum falls es sowas gibt.
G hibbes
-
hibbes schrieb:
Anscheinend stimmt mit der Sprache an sich auch was nicht:
Die auf Sicherheit ausgelegten Spracheigenschaften von Ada alleine können offensichtlich Fehler nicht verhindern: Eine Ariane 5 der ESA ging bei ihrem ersten Flug im Juni 1996 durch einen arithmetischen Überlauf verloren, weil der entsprechende Test ausgeschaltet worden war. Allerdings war das nicht die Schuld der Programmiersprache: Das Management des Softwareentwicklerteams hatte verlangt, Code, der für Ariane 4 geschrieben worden war (und dort auch korrekt funktionierte), ohne weitere Überprüfung der Voraussetzungen zu übernehmen. Da Ariane 5 ein anderes Flugprofil besaß als Ariane 4, musste dieses Vorgehen scheitern.
Trotzdem senkte dieses Ereignis die Popularität von Ada, auch nachdem Bertrand Meyer erklärte, mit der von ihm entwickelten Programmiersprache Eiffel wäre der Fehler nicht passiert.[3]Wie kann man so ein eindeutigen Text, so missinterpretieren.
-
Ja sorry hast ja recht. Tja wie kann man sowas fehlinterpretieren, da gibt es sicherlich 1000 Gründe die ich dir jetzt nicht alle erklären werden.
Warum sone arrogante Antwort hätte ein: Ich glaube du hast den Text nicht richtig gelesen etc. nicht auch gereicht???????
Bist du immer so oder war das heute nur ein Ausrutscher?
-
Zeus schrieb:
hibbes schrieb:
Anscheinend stimmt mit der Sprache an sich auch was nicht:
Die auf Sicherheit ausgelegten Spracheigenschaften von Ada alleine können offensichtlich Fehler nicht verhindern: Eine Ariane 5 der ESA ging bei ihrem ersten Flug im Juni 1996 durch einen arithmetischen Überlauf verloren, weil der entsprechende Test ausgeschaltet worden war. Allerdings war das nicht die Schuld der Programmiersprache: Das Management des Softwareentwicklerteams hatte verlangt, Code, der für Ariane 4 geschrieben worden war (und dort auch korrekt funktionierte), ohne weitere Überprüfung der Voraussetzungen zu übernehmen. Da Ariane 5 ein anderes Flugprofil besaß als Ariane 4, musste dieses Vorgehen scheitern.
Trotzdem senkte dieses Ereignis die Popularität von Ada, auch nachdem Bertrand Meyer erklärte, mit der von ihm entwickelten Programmiersprache Eiffel wäre der Fehler nicht passiert.[3]Wie kann man so ein eindeutigen Text, so missinterpretieren.
Ich hatte mich da mal genau reingelesen, weiß aber nicht mehr 100% genau wie das war. An was ich mich erinner kann, war in etwa, dass die Hardware der Ariane 4 Richtungsabweichungen in 32-bit(?)-Werten verarbeitet hat. Dadurch, dass es nun irgendeine Veränderung in der Hardware der Ariane 5 gab, zeichnete die Hardware die Richtungsabweichung mit höherer Frequenz auf und somit sollten wohl 64-bit-Variablen verwendet werden, aber das wurde nicht gemacht und deshalb liefen die 32-bit-Variablen über.
Keine Ahnung, ob das so richtig ist. Aber das sehe ich nicht als Mangel in der Srpache, sondern eher als Fehler im Design-Prozess.Ich hoffe ich habe das so in etwa korrekt wiedergegeben.
Die Gründe warum sich die Sprache nicht gegen C durchgesetzt hat sind wohl eher:
a) lange zeit vergangen bis es ordentliche freie software gab (GNAT) nicht zuletzt ist das die Schuld vom DoD, dass auch in der Anfangszeit einiges Kaputtgemacht hat.
b) wenige leute können es -> mangel an programmierern -> Einsatz von C in der Automotiv-Branche -> kein Bedarf an Ada-Leuten -> wenige leute können es
c) Dann als es Tools (späte 80er/90er) gab, wenig Chancen gegen Sprachen mit C-Syntax, weil Leute wie hibbes die Syntax hässlich finden.nurmal ein Beispiel.
procedure xy is type Temperatur is delta 0.5 range -45.0 .. 80.0; T_Sensor : temperatur := 10.0; begin T_Sensor := -46.0 -- wirft constraint error - exception zur laufzeit, bzw. -- würde es in der Form nichtmal kompilieren T_Sensor := 10.4 -- T_Sensor = 10.5 wegen delta-constraint. end
alleine diese Features (das gleiche auch z.B. für strings) in der Sprache eingebaut mit automatischen runtime checks, nur durch die typdeklarationen, das ist schon ein enormer Gewinn an Sicherheit zur Laufzeit gegenüber C.
Und Ada-Code ist teilweise sogar performanter als C, oder meistens genauso schnell, sogar mit runtime checks.Dann sieht halt mal wieder wie sehr C doch eigentlich nur eine Abstrahierung für Assembler-Sprache ist. Nichts gegen C ich arbeite ja selbst damit, aber Ada hat einfach Features die Spaß machen. z.B. builtin-concurrency. Das is schon ein killer-argument für sich - für mich jedenfalls.
-
Danke nochmal für die Erklärung. Das mit dem Rangecheck ist ne feine Sache. Das ich die Syntax nicht mag kann ich leider nicht ändern so bin ich auch nie zu Pascal, Delphi oder auch teilweise VisualBasic gekommen.
Aber du hast es gerschafft mein Interesse zu wecken :D. Das mit dem Rangechekc würde ich dann in C++ in einer KLasse kapseln. C ist mir für große Anwendungen zu viel Aufwand an strukturierung ich mag halt die Kapselung. Eifel sieht aber auch nett aus, aber ich kann nochnicht mal C++ richtig
EDIT: Um einen schönen Beistrag zu Ada zu leisten könntest du auch ein tolles deutsches Tutorial machen. Vielleicht erreichst du da mehr als wenn du Libs portierst.
-
declare vertical_veloc_sensor: float; horizontal_veloc_sensor: float; vertical_veloc_bias: integer; horizontal_veloc_bias: integer; begin declare pragma suppress(numeric_error, horizontal_veloc_bias); // Ariane Bug begin sensor_get(vertical_veloc_sensor); sensor_get(horizontal_veloc_sensor); vertical_veloc_bias := integer(vertical_veloc_sensor); horizontal_veloc_bias := integer(horizontal_veloc_sensor); ... exception when numeric_error => calculate_vertical_veloc(); // Code der durch pragma suppress nie erreicht wird. when others => use_irs1(); end; end irs2;
Quelle: http://www.uni-koblenz.de/~beckert/Lehre/Seminar-Softwarefehler/Folien/weyand.pdf
Jemand mit bessere ADA-Kenntisse hat als ich (Keine), darf mich gerne korrigieren.
-
hibbes schrieb:
Unter Wiki steht dass die Sprache wohl ne Zeit lang Pflicht war, das wurde dann aber wieder geändert und sicherlich nicht ohne Grund.
Für die Allgeinmeinheit ist die Sprache nix sonst hätte sie sich auch mehr durchgesetzt .Anscheinend stimmt mit der Sprache an sich auch was nicht:
Die auf Sicherheit ausgelegten Spracheigenschaften von Ada alleine können offensichtlich Fehler nicht verhindern: Eine Ariane 5 der ESA ging bei ihrem ersten Flug im Juni 1996 durch einen arithmetischen Überlauf verloren, weil der entsprechende Test ausgeschaltet worden war. Allerdings war das nicht die Schuld der Programmiersprache: Das Management des Softwareentwicklerteams hatte verlangt, Code, der für Ariane 4 geschrieben worden war (und dort auch korrekt funktionierte), ohne weitere Überprüfung der Voraussetzungen zu übernehmen. Da Ariane 5 ein anderes Flugprofil besaß als Ariane 4, musste dieses Vorgehen scheitern.
Trotzdem senkte dieses Ereignis die Popularität von Ada, auch nachdem Bertrand Meyer erklärte, mit der von ihm entwickelten Programmiersprache Eiffel wäre der Fehler nicht passiert.[3]Der ganze Artikel spricht mich nicht sonderlich an genauso wenig wie die hässliche Syntax, tut mir leid.
Am besten du schaust wirklich mal in ein Ada-Forum falls es sowas gibt.
G hibbes
Zeus hat schon recht mit seiner etwas deutlichen Antwort. Du behauptest innerhalb von 2 Posts gleich 3 irrsinnige Dinge ("Ada ist tot", "Ada ist nicht mehr Pflicht, das hat wohl den Grund die Sprache sei nicht so gut", "Ada ist schlecht, weil die Ariane 5 abgestürzt ist"), für die du eine völlig abwegige Begründung hast und das nur, weil du die Sprache nicht magst. Auch die Syntax ist nicht hässlich - Du findest sie nur hässlich... und zwar scheinbar nach einem Blick ins Wiki. Da steht ein Hello-World-Programm. Na herzlichen Glückwunsch. Im "Hello-World-Programm-Schönheitswettbewerb" ist sogar QBasic besser als Ada.
Was willst du mit deinen Posts erreichen? Was hat Ada dir denn getan? Hast du dich überhaupt schonmal ernsthaft mit Ada beschäftigt?
Zurück zum Thema: Die newsgroup comp.lang.ada ist sehr aktiv und hilfsbereit, falls du dich nach einer Ada-Community umsehen willst.
-
hibbes schrieb:
Danke nochmal für die Erklärung. Das mit dem Rangecheck ist ne feine Sache. Das ich die Syntax nicht mag kann ich leider nicht ändern so bin ich auch nie zu Pascal, Delphi oder auch teilweise VisualBasic gekommen.
Pascal hat meiner Meinung nach auch nicht die perfekte Syntax, aber 2 wesentliche Dinge macht Ada schon viel besser:
- Bei Pascal wird das Semikolon verwendet um 2 Anweisungen zu trennen. Bei Ada wird es, wie sonst auch üblich, verwendet um eine Anweisung abzuschließen. Das macht das Bearbeiten des Quellcodes einfacher.
- Die Anweisungsblöcke ergeben mehr Sinn. Kontrollstrukturen beginnen automatisch einen neuen Block. Es gibt kein redundantes "begin" mehr, selbst eineige "end" können eingespart werden.for Foo in Bar loop Do_Something; end loop; if a then -- Startet automatisch einen Anweisungsblock Do_Something; elsif b then -- Beendet den Block, startet einen neuen Block Do_Something_Else; Do_More; -- gehört noch zum selben Block! else -- Beendet den Block, startet einen neuen Block Do_Something_Completely_Different; end if; -- Beendet den gesamten if-elsif-else Block
hibbes schrieb:
EDIT: Um einen schönen Beistrag zu Ada zu leisten könntest du auch ein tolles deutsches Tutorial machen. Vielleicht erreichst du da mehr als wenn du Libs portierst.
Ich habe Ada 95 anhand eines Skripts von der Universität Stuttgart und eines englischsprachigen Tutorials gelernt. Wenn man sucht findet man immer etwas. Die offiziellen Sprachreferenzen, die "Rationale" sowie der Ada Quality Style Guide sind frei verfügbar und sehr schön mit Beispielen gefüllt.
-
Blablablub bleibt mal ganz ruhig kleiner Mann. Ne ich habe mich vorher nie mit Ada auseinandergesetzt und bin gerade dabei mir was durchzulesen. Der Wikiartikel klang halt nicht gerade toll weil die Vorschrift zum Einsatz wieder aufgehoben wurde, also muss ja irgendwas doch nicht so toll gewesen sein.
Vom Konzept her scheint es nicht schlecht zu sein, aber wie schon bei Beta und VHS setzt sich nicht immer das Beste durch. Aber ein Blick ist es mal wert.
-
neben if-else ist auch der for loop besonders elegant weil man nicht nur ganz einfach über einen zahlenbereich iterieren kann (range unten..oben)
sondern auch, weil man über die zulässigen werte eines bestimmten typs iterieren kann, z.B. for i in natural loop
elegant.
off-by-one-fehler können in den meisten fällen auch zur compile-zeit ansonsten zur runtime ausgeschlossen werden, bzw. schon durch das konzept.
wunderbar sind auch do-while-schleifen, die durch verschiedene bedingungen innerhalb des schleifenkörpers verlassen werden können.
auch schick sind benannte schleifen. damit kann man nicht nur die aktuelle sondern auch höhere schleifenebenen simpel verlassen.
C hat goto - was viele zu unrecht outlawen, welches aber vieles einfacher machen könnte, wie zb. stack unwinding, oder eine return anweisung pro funktion, oder oder oder
-
Der Frau Lovelace hätte es vielleicht gefallen, wenn man eine nette, experimentierfreudige Mathematik auf einen 0815 Handy betreiben könnte oder wenn jemand mit Ada und der Hilfe von Mathematik eine gute, "intelligente" Kraftwagensteuerung auf bescheidener Hardware hinbekäme. Für Handys müsste man wohl eine Schnittstelle bzw. Runtime schreiben bzw. einen Interpreter usw. Ein Basicinterpreter auf dem Handy wäre schon was nettes, man könnte aber meinen, Ada ist im Prinzip ähnlich kinderfreundlich wie Basic. Wenn man auf das Handy dann noch ein kleines, feines Programmiertutorial draufmacht...grundsätzlich sind aber asm und haskell besser Kanditaten für so eine Zielsetzung, oder eben abgespeckte Computer-Algebra mit grafischer Eingabehilfe (Zahlentheorie zum draufklicken und so), meine ich.
Es ist jedenfalls nicht mehr notwendig, im computerorientierten Mathematikunterricht in den Rechnerraum wandern zu müssen.
Das Mathematikprogramm selber sollte aber nicht 0815 sein, wie die meisten abonnierbaren, und sollte auch nicht viel kosten, wenn überhaupt irgendwas.
Ein gute Handymathematik könnte z.B. Kopfrechenaufgaben stellen, die Zeit messen und eine Statistik erstellen, um so aufzuzeigen, wo Schwächen liegen. Man könnte ganz nebenbei sowas auch von Lehrerseite nutzen und so - ganz nebenbei - für mehr Chancengleichheit sorgen. Aber es ist noch viel viel mehr möglich.Das Auto müsste, damit es niemanden überfährt, mindestens ein gutes Erkennungsvermögen für bewegende Objekte haben, und dessen Geschwindigkeit abschätzen können, um diese am Leben zu lassen. Den Erkenner(+sensorik) könnte man auch gut im hintern Teil von Lastwägen installieren, um tote Winkel zu wiederzubeleben.