Diskussion:Ada (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 2 Jahren von 217.91.63.146 in Abschnitt Schnelligkeit und die Unnötigkeit von C-Derivaten
Zur Navigation springen Zur Suche springen

Bezug zu Frau Ada[Quelltext bearbeiten]

In dem Artikel fehlt mir der Bezug, weshalb die Programmiersprache nach der Frau Ada benannt wurde. Was war der Grund, der Anstoß dazu? Immerhin ist die Programmiersprache Ada nicht die erste Programmiersprache. Das sollte im Artikel noch ausführlicher bearbeitet werden!

Alte Beiträge[Quelltext bearbeiten]

Verwendungsgebiete und Firmen die Ada nutzen, siehe diese Präsentation (ab Folie 8).


So viel ich weiß ist Ada 0Y mittlerweile fertig (nämlich Ada 05) und auch das "entsprechende" Buch von John Barnes soll demnächst rauskommen...

Überhaupt wäre ein Verweis auf die Bücher von John Barnes vielleicht ganz sinnvoll?


Ada Byron, Lady Lovelace war die Assistentin von Charles Babbage. Babbage entwarf um 1820 den ersten (mechanischen) Computer - die Analytical Engine. Er konnte sie aber nicht vollenden, da ihm die nötigen Geldmittel fehlten.

--

Ich habe den Link, der angegeben wurde, wieder entfernt, da er den Kriterien für Links für ein Thema nicht genügt. Wenn noch nicht einmal ein offizieller Link für Ada dasteht, würde der angegebene Link ein falsches Bild von der Wichtigkeit der verlinkten Seite machen.

Hier der entfernte Link: Wacker Art Ada


Hier habe ich mal ein von mir geschriebenes Ada-Programm:


  WITH integer_text_io, text_io;
  USE  integer_text_io, text_io;
  
  PROCEDURE abstrackter_stack IS
    PACKAGE stackpack IS
       TYPE stack;
       TYPE zeiger IS ACCESS stack;
       TYPE stack  IS RECORD
                        inhalt     : integer;
                        vorgaenger : zeiger ;
                        nachfolger : zeiger ;
                      END RECORD;
                      
       PROCEDURE push(wert : integer);
       PROCEDURE rotate;
       FUNCTION  pop   RETURN integer;
       FUNCTION  empty RETURN boolean;
       
     END stackpack;
       stack_counter : integer;
       zahl          : integer;
       number        : integer;
  PACKAGE BODY IS
    top:zeiger:=null;
    PROCEDURE push(wert:integer) IS
      feld  : zeiger;
      s1    : zeiger;
      s2    : zeiger;
      index : integer;
      BEGIN
        feld := NEW stack;
        IF stack_counter = 0 THEN
          top             := feld;    -- Wenn noch kein Feld vorhanden ist
          feld.vorgaenger := feld;    -- muss erstmal eines eingerichtet
          feld.nachfolger := feld;    -- werden.
          feld.inhalt     := wert;
        END IF;
        IF stack_counter = 1 THEN
          feld.vorgaenger := top;     -- Da bei zwei Feldern beide aneinander
          feld.nachfolger := top;     -- haengen, braucht das zweite nur auf
          top.vorgaenger  := feld;    -- das erste und das erste nur auf das
          top.nachfolger  := feld;    -- zweite zu zeigen.
          feld.inhalt     := wert;
          IF top.inhalt < wert THEN
            top := top.nachfolger;
          END IF;
        END IF;
        IF stack_counter > 1 THEN
          IF top.nachfolger.inhalt > wert or top.inhalt < wert THEN
          -- Hier wird nach einem kleinsten und groessten Element gesucht
            feld.vorgaenger           := top;
            feld.nachfolger           := top.nachfolger;
            top.nachfolger.vorgaenger := feld;
            top.nachfolger            := feld;
            feld.inhalt               := wert;
            IF top.inhalt < wert THEN
              top := top.nachfolger;
            END IF;
          ELSE                        -- ansonsten wird normal eingefuegt
            s1    := top.nachfolger;
            s2    := top.nachfolger.nachfolger;
            index := 0;
            WHILE index <= stack_counter-1 LOOP
              IF wert >= s1.inhalt and wert <= s2.inhalt THEN
                feld.vorgaenger := s1;
                feld.nachfolger := s2;
                s1.nachfolger   := feld;
                s2.vorgaenger   := feld;
                feld.inhalt     := wert;
              ELSE
                s1 := s1.nachfolger;
                s2 := s2.nachfolger;
              END IF
              index := index + 1;
            END LOOP;
          END IF;
        END IF;
        stack_counter := stack_counter + 1;
      END push;
      
    PROCEDURE rotate IS               -- Diese Prozedur zeigt alle
      index : integer;                -- Elemente des Stacks an
      BEGIN
        FOR index IN 1..stack_counter LOOP
          PUT(top.inhalt);
          PUT_LINE("");
          top := top.vorgaenger;
        END LOOP;
      END ROTATE;
      
    FUNCTION pop RETURN integer IS
      s1   : zeiger;
      s2   : zeiger;
      wert : integer;
      BEGIN
        IF stack_counter = 1 THEN
          wert := top.inhalt;
          top  := null;
        END IF;
        IF stack_counter > 1 THEN
          wert          := top.inhalt;
          s1            := top.vorgaenger;
          s2            := top.nachfolger;
          top           := s1;
          s1.nachfolger := s2;
          s2.vorgaenger := s1;
        END IF;
        IF stack_counter = 0 THEN
          PUT_LINE("ausgegebener Wert ist Falsch, da der Stack leer ist!");
          -- wo nichts ist, kann auch nichts ausgegeben werden
        END IF;
        stack_counter := stack_counter - 1;
        RETURN wert;
      END;

    FUNCTION empty RETURN boolean IS    -- Ist der Stack leer?
      BEGIN
        RETURN top = null;
      END empty;

Man möge sich davon Überzeugen, das die Verwandtschft zu Pascal und Modula gar nicht zu übersehen ist. --Arbol01 17:23, 14. Mär 2004 (CET)

Ich glaub, Du brauchst niemanden zu überzeugen, oder irre ich? Außerdem steht das doch schon im Artikel. --denny vrandečić 19:44, 14. Mär 2004 (CET)

Schnelligkeit und die Unnötigkeit von C-Derivaten[Quelltext bearbeiten]

Kann jemand was über die Schnelligkeit von Ada-Programmen sagen? Ist es auch möglich komplette Betriebssysteme in Ada zu entwerfen? In wiefern kann man C/C++ und Java durch Ada ersetzen? 84.165.137.238 07:04, 5. Jul 2006 (CEST)

  • Ada-Programme sind vergleichbar schnell mit C-Programmen; Erstellung und Wartung sind deutlich einfacher und billiger:
The seminal comparison of Ada and C projects is Rational Software's 1995 study (also available as a pdf file [1]). Verdix (which merged into Rational in 1994) had about 50% of their 3 million lines of code in C and 50% in Ada. The code was maintained by the same developers over the course of 11 years, yet the Ada code had about half as many defects and the overall development cost was about 35% less for Ada code. http://www.adaic.com/whyada/ada-vs-c.html
  • Es ist möglich, komplette Betriebssysteme in nahezu jeder kompilierten Sprache zu schreiben. Natürlich gilt das auch für Ada.
  • Natürlich kann man C und C++ voll durch Ada ersetzen (seit Ada95 unterstützt Ada Objektorientierung), man muß die Programme halt neu schreiben. Aonix bietet in seinem Compiler die Möglichkeit zu JVM-Kompilierung, und AdaCore hat bis zu Version 1.1 mit jGNAT ebenfalls einen Ada -> JVM-Compiler entwickelt. Damit kann man auch Java ersetzen.
  • "Die Unnötigkeit von C-Derivaten" spricht jetzt nicht so sehr für überschäumende Kompetenz. Ada ist im Gegensatz zu Java und C++ kein C-Derivat, sondern eine Wirth'sche Sprache (besser zu lesen) und hat einige Möglichkeiten von C nicht (exzessive Pointerarithmetik ohne Überlaufprüfung, strenge Typisierung). C/C++ im Allgemeinen und ANSI-C im Besonderen sind technisch veraltete Sprachen, die dringend konzeptionell überarbeitet werden müssen (so ist Java entstanden). Selbst der CCC redet vom "Kontrollierten Ausstieg aus C bis 2020". --85.181.5.7 08:05, 12. Jul. 2007 (CEST)Beantworten
"(so ist Java entstanden)" - sorry, und damit hast du nicht gerade Kompetenz bewiesen. Java hat die Syntax von C/C++ - das war es aber auch schon. Konzeptionell geht Java ganz andere Wege. Aber wenn du soviel weißt und Ada so viel besser als C/C++ ist, wie kommt es, dass alle Wirthschen Sprachen mehr oder weniger in der Bedeutungslosigkeit versinken? auch die Aussage, das sich ein Betriebssystem mit jeder Compilersprache entwickeln ließe, die Binärcode erzeugt, ist falsch. Eine Sprache, die für den Core eines Betriebssystems verwendet wird, muss a) Zeiger kennen und b) darf keinen GC haben. Der GC bedient sich der Speicherfunktionen des Betriebssystem, das ich ja gerade erst schreiben möchte. Zeiger brauche ist um auf absolute Adressen zugreifen zu können, die beim Booten eines Systems erst einmal so existieren. Selbst beim Vorzeigesystem Oberon ist nicht alles in Oberon....ruhig mal Sourcen wälzen... 84.170.99.53 22:01, 10. Aug. 2010 (CEST)Beantworten
Äh… Ada unterstützt schon Zeigerarithmetik wie C durch das 'Address-Attribut. Nur sollte man es nach Möglichkeit (also außer bei hardwarenaher Programmierung) nicht verwenden --MushroomCloud 02:24, 13. Jul. 2007 (CEST)Beantworten
85.181.5.7 sagt: "technisch veraltete Sprachen, die dringend konzeptionell überarbeitet werden müssen (so ist Java entstanden)." - 84.170.99.53 entgegnet "sorry, und damit hast du nicht gerade Kompetenz bewiesen. Java hat die Syntax von C/C++ - das war es aber auch schon. Konzeptionell geht Java ganz andere Wege." Ich sehe da eher beim Kritiker Kompetenzprobleme - IP 85.. sagt doch genau das, nämlich daß Java ein anderes Konzept vertritt. 79.214.58.200 17:51, 19. Dez. 2010 (CET)Beantworten
Java hat das "look and feel" von C++ um die Aktzeptanz zu erhöhen - eine übernommene Synstax sieht anders aus. Java verwendet lediglich die selben Symbole. 79.212.244.103 02:25, 25. Jun. 2011 (CEST)Beantworten
Wir haben nun schon 2022. Wie sieht es mit dem zugesagten Ausstieg aus? 217.91.63.146 12:58, 11. Jan. 2022 (CET)Beantworten

Weiterentwicklung?[Quelltext bearbeiten]

Sollen Ada 95 und Ada 2005 nicht hier auch noch berücksichtigt werden. Wer kennt sich genügend aus? --SonniWP2 09:08, 16. Aug. 2007 (CEST)Beantworten

Zusätze & Todo[Quelltext bearbeiten]

Bild[Quelltext bearbeiten]

[2] Den tieferen Sinn dieses Bildes erschließt sich mir überhaupt nicht. Bitte um Aufklärung.-- Codc 19:59, 20. Jun. 2008 (CEST)Beantworten

ISO-Spec zu Ada nicht kostenfrei erhältlich[Quelltext bearbeiten]

"Die Sprachdefinition ist insofern ungewöhnlich unter den ISO-Normen, als sie kostenlos für jeden zugänglich ist. Deswegen wird die Sprachbeschreibung auch häufig von Programmierern als Standardnachschlagewerk zu Rate gezogen."
Ich war neugierig und hab dies überprüft. Ich durfte feststellen, dass man für die knapp 105 MB große PDF-Datei satte 342 CHF berappen darf. Zudem müsste es auf der Liste öffentlich verfügbare Standards stehn, was jedoch auch nicht der Fall ist. Abgesehen von den ganzen technischen Korrigenda und den Ergänzungen anderer Sprachen in dieser Liste sind AFAIK nur zwei Programmiersprachen bei der ISO kostenlos verfügbar: ECMAScript und C#. (Beide sind auch gratis bei der ECMA erhältlich, was fürn Zufall...) --Carminox 00:22, 3. Sep. 2008 (CEST)

References[Quelltext bearbeiten]

Ich habe einige ref-Tags eingebaut; das schluckte er ohne weiteres. Als ich unten den "references /"-Tag setzen wollte, fragte er mich erst nach einem Kontrollwort ab (wegen neuer Weblinks); als ich das eingegeben hatte, kam die deutsche "Du bearbeitest unangemeldet"-Seite; danach kam wieder das Kontrollwort usw. usf. in Endlosschleife.

Vielleicht kann das jemand den Entwicklern stecken. Und in diesem Artikel den "references /"-Tag setzen. --129.13.238.51 22:07, 20. Mai 2009 (CEST)Beantworten

Ja, lästig sowas. Das klingt nach einem Cacheproblem auf der langen Strecke zwischen Wikipedia und Dir. Kann passieren. Vermutlich kein Programmproblem. Ich hab "references /" nachgetragen. --Walter Koch 11:09, 21. Mai 2009 (CEST)Beantworten

fehlende Belege[Quelltext bearbeiten]

Inzwischen ist ja einiges mit Einzelnachweisen belegt, und auch viele Literaturangaben sollten einiges abdecken. Deswegen entferne ich den Baustein 'fehlende Einzelnachweise/Belege'.

Falls jemand noch Stellen mit fehlenden Belegen findet, von mir aus den Baustein wieder reinsetzen, aber bitte die Stellen explizit hier auflisten und begründen.

Am besten wäre natürlich die direkte Verbesserung der Stellen, statt einfach nur einen Baustein zu setzen ...

--Gms 11:47, 10. Sep. 2009 (CEST)Beantworten

Relevanz des Hinweises auf Eiffel?[Quelltext bearbeiten]

Was soll der Satz: "Trotzdem senkte dieses Ereignis die Popularität von Ada nicht, auch nachdem Bertrand Meyer erklärte, mit der von ihm entwickelten Programmiersprache Eiffel wäre der Fehler nicht passiert.[10]"?

Sicherlich haben viele Menschen außer Herrn Meyer darauf hingewiesen, dass Ihnen das nicht passiert wäre, ohne dass das an der Popularität von Ada irgendetwas geändert hat...

--Dirk M. Zebisch (Diskussion) 20:43, 17. Jan. 2014 (CET)Beantworten

Ada 2012 noch kein Standard?[Quelltext bearbeiten]

Im Artikel steht Zurzeit ist die ISO/ANSI-Norm ISO-8652:1995/AMD 1:2007, informell Ada 2005, der aktuelle Standard. Ist Ada 2012 nicht schon draußen? --109.192.197.21 19:54, 23. Jan. 2015 (CET)Beantworten

Erscheinungsjahr[Quelltext bearbeiten]

Hallo,

als Erscheinungsjahr ist in der Übersichtstabelle 1983 angegeben. Dieses Datum ist aus einer Reihe von Gründen nicht ganz schlüssig:

  • Der Sprachentwurf von J. Ichbiah wurde bereits 1979 der Gewinner der entsprechenden Ausschreibung des DoD akzeptiert.
  • Der Name Ada selbst wurde von Jack Cooper ebenfalls 1979 vorgeschlagen und anschließend akzeptiert.
  • Die Veröffentlichung der Sprachbeschreibung erfolgte ebenfalls 1979 in den ACM SIGPLAN Notices (gut 10.000 Leser)
  • Das abschließende "Stoneman"-Dokument wurde 1980 vom DoD veröffentlicht.
  • Der erste Standard wurde unter der Bezeichnung MIL-STD 1815 ebenfalls 1980 veröffentlicht.
  • Die englische Wikipedia betrachtet 1980 als das Erscheinungsjahr.

Das Jahr 1983 ist das Jahr einer späteren Standardisierung (dazwischen gab es noch 1982 eine weitere Version des Standards). Diese 1983er Version wurde dann für einige Jahre eingefroren. Das hat aber m.E. nichts mit der Festlegung des "Erscheinungsjahrs" zu tun.

Viele Grüße Matthias --Mkleine (Diskussion) 13:04, 17. Feb. 2015 (CET)Beantworten

Da hier bislang keine Antwort erfolgt, habe ich das Erscheinungsjahr jetzt analog zur englischen Wikipedia auf 1980 gesetzt. Ich würde sogar zu 1979 tendieren, finde allerdings, dass die Wikipedias in den unterschiedlichen Sprachen doch zumindest einheitliche Informationen liefern sollten. Wenn es gute Gründe für 1983 gibt, sollten diese Gründe entsprechend auch in der engl. Wikipedia vermittelt und zu einem einheitlichen Ergebnis geführt werden. Irgendwelche Rückmeldungen? --Mkleine (Diskussion) 17:40, 18. Feb. 2015 (CET)Beantworten

Einsatzbeispiele[Quelltext bearbeiten]

Vielleicht kann man noch irgendwo im Artikel Einsatzbeispiele, wo Ada verwendet wird, einbauen. In dem Fall könnte man die Software für den Eurofighter als Beispiel erwähnen, die wurde komplett in Ada programmiert. --134.3.80.238 17:13, 14. Okt. 2018 (CEST)Beantworten