Die guten Erinnerungen an Ada

 Ada  Kommentare deaktiviert für Die guten Erinnerungen an Ada
Okt 222016
 

Meine Programmierlaufbahn begann mit einem Schneider CPC 464 und dem eingebauten Locomotive BASIC 1.0. Ich hangelte mich am (durchaus ansprechenden) Handbuch entlang durch die Untiefen der Sprache. In ganz jungen Jahren und Mitte der 80er fand man das irgendwie alles cool und hat wenig hinterfragt, aber die Tatsache, dass man Zeilennummern verwenden musste und es als einziges Strukturierungsmittel GOTO und GOSUB gab, fand ich damals schon nicht gut. Auch wenn ich noch nicht ahnte, wieviel besser man es machen kann.

Mit den Zwischenstationen Logo, Z80-Assembler, Turbo Pascal, BBC BASIC, ARM-Assembler, C, Modula-2, HP-PA-RISC-Assembler und LISP lernte ich dann Ada kennen. Damals noch in der Variante Ada 83, also erst mal objektbasiert und nicht objektorientiert. Es war wie eine Erleuchtung. Endlich eine Sprache, die einfach alles konnte. Und in schöner Syntax verpackt. Die nicht nur auf ein paar guten Ideen basierte, wo man dann so eine Restsprache drumrum gestrickt hat. Wo schon bei liebevollen Details im Typsystem klar wird: da haben schlaue Köpfe lange gehirnt. Dazu das wunderbare „Language Reference Manual“, wo eben die definitiven Antworten drin stehen. Und das „Rationale“, wo man nachlesen konnte, warum was wie umgesetzt wurde. Und Ada 95 verstärkte diesen großartigen Eindruck noch.

Nun bin ich gestern auf einen Artikel namens „A Random Walk Through Ada“ von David Given gestoßen, der mich wieder an viel erinnert hat, was ich an Ada so alles großartig fand und finde. Leider habe ich die Weiterentwicklungen Ada 2005 und Ada 2012 nicht mehr im Detail verfolgt, weil sich die IT-Industrie ja entschieden hatte, irgendwelche anderen Sprachen zu favorisieren.

Der Artikel ist absolut lesenswert und erklärt schön, was an Ada so liebenswert ist. Eine Warnung allerdings: man wird sich dann zukünftig bei der Beschäftigung mit den diversen neuen Sprachen, die jedes Jahr aufpoppen, immer fragen, warum deren Erfinder die vielen guten Ideen der Vergangenheit schlicht ignorieren. Das scheint mir generell so eine Art Krankheit der IT zu sein: das ständige Bedürfnis, das Rad neu zu erfinden. Ohne dabei ein besseres Rad zu erschaffen, sondern nur ein anderes.

Nur eine minimale Unschärfe des Artikels will ich kritisieren: zwar ist die Container-Bibliothek, die es seit Ada 2005 in den Standard geschafft hat (und die es unter dem schönen Namen „Charles“ auch für Ada 95 gibt), nach der STL von C++ modelliert worden, aber der Autor von Charles, Matthew Heaney, ist keineswegs auch der Autor der C++-STL – die haben wir vielmehr den Herren Stepanov und Lee zu verdanken. Stepanov selbst begann seine Experimente mit generischen Containerbibliotheken allerdings mit Ada (damals noch Ada 83), vielleicht daher die Verwechslung.

GNAT GPL 2016 verfügbar

 Ada  Kommentare deaktiviert für GNAT GPL 2016 verfügbar
Jun 112016
 

Vor einigen Tagen hat AdaCore die Verfügbarkeit von GNAT GPL 2016 angekündigt. Die 2016er Variante steht in den Geschmacksrichtungen Linux-x86-64bit, Windows-x86-32bit, Mac OS X-x86-64bit, RPi2-32bit (Linux-hosted, und zwar x86-64-Linux) und ARM ELF (Windows- oder Linux-hosted) zum Download bereit.

GNAT kann natürlich Ada 2012 compilieren, aber auch die älteren Standards Ada 2005 und Ada 95 werden weiterhin verstanden. Neue Versionen von GtkAda, Win32Ada und GPS, der GNAT-IDE, runden die Sache ab. Basis ist GCC 4.9. Merkwürdig: die GNAT GPL-Seite erzählt immer noch Geschichten von der Vorversion.

Die älteren Versionen stehen weiterhin auch zum Download bereit. Besonders schade finde ich, dass das JVM-Target offenbar ins Hintertreffen geraten ist, die letzte Version die das Compilieren von JVM-tauglichen Class-Dateien aus Ada-Sourcen unterstützt hat, war GNAT GPL 2013. Ich hatte ein schönes Beispiel am Start, um eine Swing-GUI in Ada an den Start zu bringen, darüber wollte ich immer mal bloggen…aber mit so einer alten GNAT-Version macht das ja keinen Spaß.

Mein Ada-Wiedergänger

 Ada  Kommentare deaktiviert für Mein Ada-Wiedergänger
Dez 032014
 

Es war einmal ein Informatik-Student der Uni Stuttgart im vierten Semester. Bis dato wurde er programmiertechnisch mit Modula-2, Prolog und Lisp traktiert. Dann: Das Software-Praktikum in der Abteilung „Software Engineering“ mit dem Thema „Durchführung eines Softwareprojekts: Entwicklung eines Fahrplanauskunftssystem“ stand an. Die Implementierung erfolgte in Ada 83 unter DEC Ultrix (schon damals eher exotisch), zuvor habe ich deshalb den Ada-Kompaktkurs bei Jürgen Schwille (inzwischen hat es der zum Prof.Dr. gebracht und unterrichtet an der DHBW Stuttgart) genießen dürfen.

Gemessen an den damals verfügbaren Alternativen (C, BASIC, Pascal, Modula-2 und vielleicht noch Objective-C, wenn man sich zufällig einen NeXT leisten konnte) war Ada eine Offenbarung. Die Multithreading-Abstraktion in Form des „Taskings“, die „Derived Types“, die Abstraktionsmöglichkeiten über Packages und Generics – obwohl oft als „Designed By Committee“ verschrien, fand ich Ada damals gemessen an der Leistungsfähigkeit bemerkenswert elegant.

Anno 1995 kam dann mit Ada 95 ein großes Sprachupdate. Hierarchische Packages, Objektorientierung via „Tagged Types“, eine stark erweiterte Standardbibliothek – das nächste Uni-Projekt, das Fachpraktikum mit Thema „Entwicklung eines Terminkalenders unter Gesichtspunkten des Software Engineerings“ in der interessanten Kombination Backend in Ada – Frontend in Tcl/Tk, machte mich zum Ada-Fan.

Endlich war mit GNAT auch ein freier Ada-Compiler verfügbar, der sogar auf RISC OS portiert wurde. Das gab mir die Gelegenheit, mal schnell eine CD-Brenner-Software namens CDBurn in Ada zu entwickeln. Um Mitstreiter in Sachen Ada unter RISC OS zu finden, habe ich 1999 einen Artikel namens „Die Programmiersprache Ada“ für die GAG-News geschrieben – ein wenig Ada-Historie, kurze Codebeispiele, was für den Einsatz unter RISC OS spricht, Literaturempfehlungen.

Der Artikel ist m.E. nicht besonders gut gelungen. Oberflächlich, sehr bemühte Beispiele, setzt gewisse Programmierkenntnisse voraus ohne diese genau zu spezifizieren…aber mangelhafte Qualität hat ja noch nie Verbreitung behindert. Die TU München hat anno 2005 meinen Text für ein Ada-Proseminar als Mini-Einführung verwendet – keine Ahnung, wie die drauf gekommen sind. Und heute sehe ich bei einer statistischen Auswertung der Referrer-URLs auf meine Domains, dass auch die Uni Stuttgart, genauer das Institut für Automatisierungs- und Softwaretechnik, in Unterlagen für das Fachpraktikum Automatisierungstechnik meinen Artikel als Literaturreferenz aufführt.

Jetzt mal ehrlich: wenn mein höchst mittelmäßiger Artikel ein zitierwürdiges Werk im deutschsprachigen Ada-Universum ist, steht es sehr sehr schlecht um diese Programmiersprache. Und das wäre ein Jammer, denn besonders die letzten beiden Sprachupdates Ada 2005 und Ada 2012 haben eine Menge getan, um die Sprache modern zu halten, ohne die ursprünglichen Stärken zu verlieren.

Also: flugs mal bei AdaCore vorbeischauen, GNAT GPL 2014 Edition runterladen , und loslegen – meine Empfehlung ist, eher das Eclipse-Plugin GNATbench zu verwenden, anstatt es mit GPS zu versuchen. Dann ein Tutorial – Vielleicht nicht unbedingt mit meinem Artikel, sondern lieber „Ada Distilled“ von Richard Riehle, das Lovelace Tutorial von David Wheeler  (echt oldschool), das Wikibook zur Ada-Programmierung, den Ada Crash-Course oder, falls man einen Background in C oder C++ hat, mit diesem PDF anfangen.

Besonders mutige Naturen laden die GNAT-Variante für die JVM herunter (gibt es leider nur in der GNAT GPL 2013-Variante) – damit kann man Ada-Quellcode in Bytecode compilieren und auf der JVM ausführen. Erste Aufgabe: schreibe ein Ada-Programm, das mit Swing-Mitteln einen JFrame öffnet. Der erste Einsender einer richtigen Lösung erhält einen Sonderbonus.