Ada-Lernen, "Übungs"-projekt
-
Für mich sieht es so aus als wäre die Sprache ziemlich tot, kann das sein?
Tja wenn dem so ist gibt es natürlich keine großen neunen Frameworks und Libs dafür. Also schau dir an was für Libs so in den erfolgreichen Sprachen entwickelt worden sind um dann losVielleicht machst du dich ran und machst ein paar Ports von FLTK, SDL oder wxWidgets oder so. Bedenke aber das du all die vielen Jahren dann nur für ganz wenige Nutzer programmierst aber das sollte dir egal sein. Gibt auch noch genug LEute die für den C64 programmieren. www.forum64.de
Ich persönlich habe schon genug mit C++ zu tun und mich hat bei Ada schon das HelloWorld abgeschreckt...bähh
G hibbes
-
Ada ist tot ist so ein Blödsinn, den man immer wieder hört. Schau dir bitte mal an, für welche Anwendungszwecke Ada entworfen worden ist und jetzt frage dich, wie oft du mit solcher Software direkt in Kontakt kommst. Um zu wissen, ob Ada tot ist, müsstest du dich in der entsprechenden Branche bestens auskennen. Die Software von Kampfflugzeugen, militärischen Flugsimulationen oder der Eurpäischen Luftüberwachung taucht bestimmt nicht auf Ohloh auf.
Ada 2005 ist gar nicht mal so lange her und eine Revision ist bereits in Arbeit. Es gibt Qt Bindings (qtada), GTK bindings (gtkada), ein Webframework (AWS - Ada Web Server), alle möglichen Datenbankanbindungen (glade), opengl bindings, sogar eine 3D engine, eine spezialisierte Entwicklungsumgebung (Gnat Programming Studio) und beidseitige C-Kompatibilität ist fest in der Sprache verankert. Da braucht man sich keine Sorgen zu machen.
Wenn du ein Webserver bauen willst, dann schau dir doch mal den Source von AWS an.
Wenn dich userspace-Systemsoftware interessiert, schau mal dort vorbei:
http://www.auroraux.org/
Ich habe aber keine Ahnung wie aktiv die sind. Wenn sie aber noch aktiv sind, haben sie bestimmt etwas zu tun.Ansonsten, warum solltest du nicht einfach beliebige Projekte in Ada verwirklichen? Wie hoch die Qualitätsstandards sind, kannst du dir doch selbst aussuchen. Stell dir mal eine Forensoftware vor, die von Grundauf als sicherheitskritisches System aufgebaut ist. Aber auch ohne hohe Qualitätsanforderungen kann Ada Spaß und sogar Sinn machen.
-
Ada hat ein paar nette Ideen, wenn es um korrekten Code geht. Bis auf die Pascal-Syntax finde ich Ada ebenfalls interessant.
Hast du dir mal Eiffel angeschaut? Das finde ich noch interessanter.Zu deiner eigentlichen Frage: das ist das falsche Forum. Ich würde mir ein Ada-Forum oder Ada-Newsgroup suchen und dort mal nachfragen, was die Ada-Gemeinde an Libs oder Tools vermisst. Oder man programmiert einfach etwas, worauf man selber Lust hat oder noch besser: was man selber braucht! Ich würde einfach Ada benutzen und dann wird einem in der Praxis auffallen, was man denn selber vemisst.
-
Eiffel habe ich mir auch mal angesehen, das Problem ist hier aber noch mehr, als bei Ada, dass Tools/Bindings usw. fehlen. Aber C zu ersetzen werden diese Sprachen wohl leider nie schaffen.
Ich dachte am Anfang auch erst: "Ih, das sieht ja so hässlich aus wie Pascal aus der Schule", aber Ada hat viele Vorteile. Der Grund warum ich eigentlich darauf kam, ist dass Ada für den embedded-Bereich (AVR, ARM, ...) gut geeignet ist aufgrund bestimmter Sprachfeatures - z.B. gibt es ordentliche Bitfelder. Oder in die Sprache eingebaute Beiläufigkeit. Ich denke da macht es dann nichts mehr aus, dass die Sprache eine wirt'sche ist.
AuroraUX sieht ganz nett aus, ich richte mir mal eine VM damit ein und wenn es mir gefällt nehm ich das gleich als Zielplattform für meine Gehversuche.. Ich schaue mir auch mal an was da noch fehlt. - Vielleicht ja ntp, oder ich portiere GNU Rcket
Also, Vielen Dank, ich such mir dann eine ML und lass mich hier nicht mehr blicken.
-
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.