
Abbildung 1: APL benutzt für seinen Quellcode Zeichen außerhalb der gewöhnlichen ISO-8859-15-Symbole. In den 1960er Jahren erreichte man das durch das Übereinanderdrucken von zwei Zeichen auf einem Fernschreiber.
Nur wer sich in der Programmiersprachen-Historie auskennt, hatte eine Chance bei den Fragen des Winterrätsels aus Ausgabe 02/14. Diesmal gibt’s neben den kniffligen Fragen auch die Antworten – und den Namen des Rätselkönigs 2014, der neben dem Ruhm auch einen Videorecorder für den Raspberry Pi einstreicht.
Allein um eine zumindest größtenteils richtige Lösung für die 20 Aufgaben des Winterrätsels aus dem Linux-Magazin 02/2014 zustande zu bekommen, bedarf es weit überdurchschnittlicher Kenntnisse der Programmiersprachen-Geschichte. So gesehen darf sich jeder Teilnehmer als Siegertyp betrachten.
Gewinner des Sachpreises – Videorecorder-Equipment für den Raspberry Pi von DVB Link [1] – konnte jedoch nur einer der teilnehmenden Hobbyhistoriker werden, der Kasten “Lösung und Gewinner” lüftet das Geheimnis. Der Artikel selbst repetiert die Fragen und beantwortet sie korrekt – wie gewohnt ausführlich.
1. Akronyme sind für Programmiersprachen durchaus beliebt, rekursive allemal. Welche Sprache erfand ein Mann mit dänischem Pass fürs World Wide Web?
Obwohl er heute in den Vereinigten Staaten lebt, ist Rasmus Lerdorf auf Grönland geboren und damit gebürtiger Däne. Den “PHP: Hypertext Preprocessor” schrieb er anfangs als Ersatz für eine Reihe von Perl-Skripten.
2. Ein britischer Turing-Award-Gewinner entwickelte eine der ersten Sprachen mit polymorpher Typinferenz und typsicherer Ausnahmebehandlung. Sie gilt als Urahnin einer ganzen Reihe von Abkömmlingen. Wie heißt jener, der objektorientierte Ansätze einbrachte und so mehrere Programmierwettbewerbe gewann?
Robin Milner hat ML geschaffen, was er als Abkürzung für Meta Language verwendete. Zur weiteren Verwandschaft der Sprachfamilie gehören beispielsweise SML, Miranda, Haskell und Ocaml, das in sehr kompakter Schreibweise hocheffizienten Code formulieren hilft. Die in Listing 1 per Ocaml kodierte Sortierfunktion, die auf beliebigen Typen funktioniert, ist ein schönes Beispiel dafür.
Listing 1
Sortierfunktion in Ocaml
01 let rec sort = function 02 | [] -> [] 03 | x :: l -> insert x (sort l) 04 05 and insert elem = function 06 | [] -> [elem] 07 | x :: l -> 08 if elem < x then elem :: x :: l else x :: insert elem l;;
3. Der Legende nach motivierte den ursprünglichen Autor zur Namenswahl seiner Skriptsprache ein Gleichnis aus dem Matthäus-Evangelium. Darin sucht ein Händler nach Preziosen. Was durchschreitet im selben Bibeltext das Wappentier der Sprache?
Der Urvater Abraham des Perl-Universums, Larry Wall, ist kalifornischer Programmierer und bekennender Christ. Er beruft sich bei der Namenswahl seiner Skriptsprache gerne auf Matthäus 13, 46: “Als er eine besonders wertvolle Perle fand, verkaufte er alles, was er besaß, und kaufte sie.” Inspiriert vom Umschlag eines frühen Perl-Buches reüssierte das Kamel zum Sinnbild für Perl. Der zitierte Evangelist wusste auch dazu einen Vers, nämlich 19, 24: “Nochmals sage ich euch: Eher geht ein Kamel durch ein Nadelöhr, als dass ein Reicher in das Reich Gottes gelangt.”
4. Das Einrücken von Code als syntaktisches Element ist bei Programmierern umstritten. Python-Fans beispielsweise preisen diese Form der Blockmarkierung, andere bleiben skeptisch. Die Entwickler welcher Sprache mussten zumindest in deren Urform manche Codefragmente auf bestimmte Spalten einrücken?
Bis zur Version Fortran 77 schrieb die Sprache vor, dass normaler Code ab Spalte 8 zu beginnen habe. Kommentare hingegen bedurften in Spalte 1 eines »C« . Diese Richtlinien stammten noch aus der Zeit der Lochkarten – Programmierer konnten so Zeilen, die sich als fehlerhaft herausstellten, noch nachträglich das Muster für den Kommentar hinzustanzen.
5. Ein eidgenössischer Compiler-Erfinder schuf eine ganze Kaskade an Sprachen, wovon die erste und von ihm allein entworfene die größte Verbreitung gefunden hat. Später war ihm eine Sprache nicht genug und er entwarf mit Kollegen an einer europäischen Hochschule noch ein dazu passendes Betriebssystem und einen zugehörigen Rechner. Wie lautet das germanische Äquivalent der Programmierumgebung?
Niklaus Wirth entwarf neben seiner bekanntesten Kreation Pascal auch noch Modula, Modula-2 sowie Oberon. Die Sprache brachte eine Entwicklungs- und Laufzeitumgebung mit. An der ETH Zürich schuf Wirth mit seinem Team dafür die Systemplattform Ceres. Oberon ist ein anderer Name für den Hüter des Nibelungeschatzes, Alberich, einen Zwerg der nordischen Mythologie.
6. Ein Entwickler benannte seine Sprache eines Tages nach der Geschmacksrichtung eines Löschwasser-Sudes um. Ursprünglich taufte der in seinem Heimatland mit einem Orden ausgezeichnete Entwickler die Sprache aber nach einem soliden Laubbaum. Welchem?
James Gosling, Officer of the Order of Canada, hat sich zwar um den Emacs verdient gemacht, entwarf aber – wohl um das Gleichgewicht der Macht wiederherzustellen – ebenfalls Java. Ursprünglich jedoch sollte die Kaffee-Sprache Oak heißen, wie das englische Wort für Eiche.
7. Viele Programmiersprachen haben eine wechselhafte Entwicklung hinter sich. Die hier gesuchte Sprache zeigt sich besonders vielgesichtig, denn sie startete als objektorientierte C-Variante, verlebte ihre Kindheit in einem vernetzten Rollenspiel, um schließlich als Implementierungssprache eines mittlerweile fast vergessenen Webservers zu reüssieren.
Der schwedische Spiele-Entwickler Lars Pensjö entwickelte 1989 eine virtuelle Maschine für ein textbasiertes Online-Rollenspiel. Da sich Pensjö die Spielewelt nicht komplett selbst ausdenken wollte, ermöglichte er erfahrenen Spielern, diese in der objektorientierten Sprache LPC zu erweitern. Auf diesem Sprachentwurf setzten die Entwickler des Roxen Challenger auf und nannten ihre Neufassung Pike.
8. Die meisten Compiler oder Interpreter zerlegen den Quellcode in Tokens — und akzeptieren an vielen Stellen rund um diese eine besondere Zeichenklasse, die zwar keine Bedeutung hat, jedoch das Code-Studium vereinfacht. Die hier gesuchte Sprache bildet eine Ausnahme, weil sie diese Symbole zum einzigen Prinzip erhebt und praktisch unsichtbar bleibt. Wie heißt die Sprache?
Die Programmiersprache Whitespace besteht nur aus – genau! – Whitespaces, also aus Leerzeichen, Tabulatoren und Zeilenumbrüchen. Das macht sie relativ schwer ausdruckbar. Dennoch ist die Sprache, die nach dem Stack-Prinzip arbeitet, in der Lage, beliebige Berechnungen auszuführen.
9. Die gesuchte Sprache trat als Verbindungsglied zwischen Hoch- und Maschinensprache auf, inspirierte den heutigen Quasi-Standard für die Systemprogrammierung und legte eine Grundlage für Objektcode.
Der US-Amerikaner Martin Richards entwickelte 1969 mit BCPL eine plattformunabhängige, aber sehr systemnahe Programmiersprache, die zwar relativ wenig Komfort und Sicherheitsmechanismen enthielt, aber zugleich die zentralen Sprachkonstrukte einer imperativen Sprache umsetzte. Die Idee von Objektcode stammt in Teilen aus diesem Sprachkonzept. Über den Umweg von B, das kaum produktiv zum Einsatz kam, entwickelte sich daraus C. Auch später blieb BCPL in Mode, beispielsweise in Teilen des Amiga OS.
10. Obwohl er sehr früh das Konzept der höheren Programmiersprache einführte, benötigte der Entwurf eines Hardware-Entwicklers geschlagene 29 Jahre bis zur ersten Implementierung. Welche Sprache hatte ihr Schöpfer ursprünglich ins Auge gefasst, um seine Rechner zu programmieren?
Nach dem Ende des Zweiten Weltkriegs konnte der Computerpionier Konrad Zuse praktisch kaum an seinem damals aktuellen Hardware-Entwurf, der Z4, arbeiten. Der elektromechanische Rechner verwendete Relais und war zwar konzeptionell frei programmierbar, allerdings nur in einer mühsamen Maschinensprache.
Zuse suchte daher nach Ideen, um Programme abstrakter formulieren zu können. Die Sprache Plankalkül avancierte dabei zwar zur ersten Hochsprache, kam jedoch mangels passender Hardware praktisch nicht zum Einsatz. Erst 1975 implementierte Joachim Hohmann in Darmstadt die Sprache im Zuge seiner Dissertation. Bevor Zuse sich Plankalkül zuwandte, spielte er mit dem Gedanken, seine Rechenmaschine in Esperanto zu programmieren, verwarf den Gedanken aber schnell.
11. Nicht immer stellen krude Syntax oder besonders abstrakte Sprachkonstrukte die größten Hürden auf. Ein exotischer Sprachentwurf erwartete ursprünglich entweder einen Fernschreiber mit einer Hardware-Backspace-Implementierung oder eine Latex-Klasse, um allein den Code anzuzeigen. Welcher Turing-Award-Gewinner entwickelte sie?
APL (A Programming Language) ist recht einfach aufgebaut und kann gut mit Vektoren und Matrizen umgehen. Sie macht es leicht, schnell zu Ergebnissen zu kommen. Wäre da nicht die Syntax: Gerade die Operatoren bestehen oft aus mehrfach übereinandergedruckten Symbolen ( Abbildung 1).
Um etwa einen Kommentar einzuleiten, tippten Programmierer ein großes A ein, bewegte den Cursor ein Zeichen zurück und überdruckten es mit einem kleinen O. Als Eingabefolge würde man diese etwa mit »A\bo« umschreiben. Das klappt natürlich nur auf einem Fernschreiber. Um diese Limitierungen moderner Monitore zu umgehen, gibt es neuerdings Fonts [2] und sogar Unicode-Zeichen [3] für die wichtigsten APL-Operatoren. Kenneth Iverson hatte die Sprache erfunden.
12. Dass sein Sprachentwurf Klasse(n) haben würde, wollte der in Skandinavien geborener Entwickler eigentlich in ihrem Namen verankern. Wie hieß der Mitarbeiter des Erfinders, der für den tatsächlichen, schnöde auf die Vorgängerin verweisenden Namen verantwortlich zeichnet?
Bjarne Stroustrup vermisste in C die Objektorientierung und insbesondere ein Klassensystem und nannte somit seine zunächst als Erweiterung gedachte Programmiersprache intern “C with Classes”. Der Legende nach wollte sein Mitarbeiter Rick Mascitti augenzwinkernd den neuen Evolutionsschritt der Sprache betonen und schuf so den Namen C++.
13. Ob ein populäres, spektakulärerweise nicht in Sonatenhauptsatz-Form verfasstes und nächtliche Lichteffekte thematisierendes Klavierstück eines deutschen Komponisten Inspiration für den Namen einer Programmierumgebung war, ist nicht überliefert. Die Tonart seines ersten Satzes weist aber auf die Sprache hin. Wie heißt deren Open-Source-Implementierung?
Klaviersonaten sollen mit einem schnellen, schnittigen Satz beginnen, das war die unumstößliche Lehrmeinung zu Beethovens Zeit. Der Maestro setzte sich souverän über diese wie über manch andere Konvention hinweg und begann die “Mondscheinsonate” kurzerhand mit langsamen, fast schon betörend-manischen Arpeggien in Cis-Moll (Abbildung 2).
Im anglo-amerikanischen Sprachraum nennt man das Kreuz für die chromatische Erhöhung eines Tons “Sharp”, was C#-Erfinder Microsoft wohl für einen gelungenen Scherz und Seitenhieb auf C++ hielt. Wer bei Microsoft Beethoven hört, ist leider nicht überliefert. Linux-Entwickler greifen zu Mono, um in der objektorientierten Sprache zu programmieren.
14. Eine Steuersprache des Unix-Urvaters war einem Briten zu oll. Er entwickelte daraufhin seine eigene Fassung, die syntaktisch auf jedem aktuellen Linux-System große Bedeutung besitzt. Welcher Entwickler hat seit über 20 Jahren den Posten inne, sich um ihren interaktionsfreudigen Wiedergänger zu kümmern?
Nicht die von Stephen Bourne 1977 programmierte Bourne Shell war Unix’ erster Kommandointerpreter, sondern die von Thompson selbst verfasste, später nur noch “Old Shell” genannte Osh, die unter anderem die Pipes mitbrachte. Bourne fügte unter anderem die Steuerung von Hintergrundprozessen (»&« , [Strl]+[Z], »fg« und »bg« ) hinzu und machte den Interpreter programmierfähig.
Für den täglichen Einsatz fehlte es jedoch an einer Eingabehistorie und anderen nützlichen Hilfen, die erst die Bash ab etwa 1990 mitbrachte. Seit der Zeit betreut Chet Ramey den heutigen Quasi-Standard für Linux-Kommando-Eingaben.
15. Welche Pionierin wirkte maßgeblich an der Entwicklung einer frühen Hochsprache mit, die zu beherrschen heute fast einer Beschäftigungsgarantie gleichkommt? Die Mathematikerin war bei US-Präsidenten und -Showmastern zu Gast.
Die US-Amerikanerin Grace Hopper hatte für die US-Marine und mehrere Computerhersteller gearbeitet und dabei an der Spezifikation für Cobol mitgewirkt. Gleichzeitig erfand sie praktisch das Debugging und dokumentierte 1947 in ihrem Logbuch den ersten Fix in Form einer aufgeklebten Motte (siehe Abbildung 3).
16. Von der Wappengestaltung mal abgesehen, spielen Tiere nur in wenigen Programmiersprachen eine nennenswerte Rolle. Bei welcher Sprache, gerne auch in der Bildung eingesetzt, bleibt ein possierliches Reptil dagegen unabdingbar?
Um Kindern den Zugang zum Programmieren zu erleichtern, erdachte der Südafrikaner Seymour Papert die Programmiersprache Logo, die dank Lisp-Anleihen und Rekursionen mächtige Programmierkonzepte einfach handhabbar machte. In Erinnerung geblieben ist jedoch eine stilisierte, steuerbare Schildkröte, die eine Farbspur hinter sich herzieht.
17. Die verbreitetsten Datentypen bei Programmiersprachen sind Repräsentationen für Zahlen und Zeichenfolgen. Welche Sprache macht hier eine Ausnahme, da sie erstmals Vorformen von regulären Ausdrücken in den Mittelpunkt rückte?
Mit ihren normalen Funktionen vermochte Snobol nicht viele Entwickler hinter dem Ofen hervorzulocken. Die Möglichkeit hingegen, Texte zu zerlegen und nach Mustern zu suchen, bescherten der Sprache in den 1970er und 1980er Jahren eine gewisse Beliebtheit. Weil Snobol jedoch meist nach Rechnern der Mainframe-Kampfklasse verlangte, liefen ihr Unix-Werkzeuge wie Grep, Sed und später Perl den Rang ab.
18. Dass alles, was nicht belegbar ist, keine Wahrheit darstellt, nennen Logiker die Closed-World-Assumption. Welche Sprache baut darauf auf? Der Entwickler beschreibt in ihr zwar das Problem, nicht aber den Lösungsweg.
Anders als viele andere Programmiersprachen legt Prolog nicht fest, wie der ausführende Computer zu einem Ergebnis kommen oder wie er sich verhalten soll. Stattdessen notiert der Programmierer bekannte Fakten und Regeln im Sinne der Prädikatenlogik. Der Sprachinterpreter prüft dann, ob sich davon ausgehend eine Hypothese bestätigen lässt und ob und wie sie der Anwender parametrisieren muss.
19. Eine angehende Mathematikerin neigte in ihrer Jugend zu Schüchternheit. Nachdem sie in einem renommierten Forschungszentrum angeheuert hatte, benannte sie — der Überlieferung nach — die dort mit ihrem Team entwickelte Sprache selbstironisch nach unverbindlichen Partygesprächen. Von welcher Klasse erbt jede Instanz innerhalb dieser Sprache?
An der Ideenschmiede Palo Alto Research Center entwickelte Adele Goldberg mit ihrem Team Smalltalk, die das objektorientierte Modell sehr konsequent umsetzte. Entwickler arbeiteten auf einem persistenten Desktop, der seinerseits ebenso wie Compiler und Editor weitgehend in Smalltalk geschrieben war und die sich alle zur Laufzeit modifizieren ließen.
Klassen können und müssen in Smalltalk nur von einer Oberklasse erben. Auf diese Weise vermeiden sie das so genannte Diamond-Problem, bei dem ein Objekt auf zwei verschiedenen Vererbungspfaden von einer Superklasse erben. Dieses Problem gibt es bei Einfachvererbung nicht. Da in Smalltalk jede Instanz ein Objekt ist, heißt ihre Metaklasse folgerichtig Object.
20. Wie das Who’s who von Compilerbau-Experten liest sich die Liste der Entwickler einer frühen Sprache, die schon in den 1960er Jahren das strukturierte Programmieren ermöglichte. Da Entwickler sie gerade in ihren I/O-Operationen uneinheitlich implementierten, kam die gesuchte Sprachfamilie kaum zum Einsatz, beeinflusste aber ihre Nachfolger konzeptionell.
Als Frucht internationaler Zusammenarbeit entstand in den 1960er Jahren Algol: Der Amerikaner John W. Backus und der Däne Peter Naur hatten die Backus-Naur-Form zur Syntax-Beschreibung erdacht. Der Deutsche Friedrich L. Bauer begründete den Studiengang Informatik in Deutschland.
Als KI-Experte und Lisp-Erfinder war der Amerikaner John McCarthy dabei. Auch Alan J. Perlis stammte aus den USA, Heinz Rutishauser aus der Schweiz und Klaus Samelson aus Deutschland. Gemeinsam legten sie den Grundstein der strukturierten Programmierung, die auf Algorithmen baut statt auf die Implementierung. Die Arbeit des multinationalen Teams beeinflusste nachfolgende Spachen stark.
Lösung und Gewinner
Die Abbildung auf der zweiten Seite oben verrät alle korrekten Einzelantworten. Wer sie in das im vorletzten Heft beschriebenen Schema einfütterte, kam auf den Lösungssatz “A Plea for lean Software” und konnte diesen bis zum 15. Februar an mailto:winter@linux-magazin.de schicken. Alle 100-prozentig richtigen Antworten, es waren 14, haben an der anschließenden Verlosung teilgenommen.
Die ausgeklügelte Videorecorder- und TV-Software von DVB Link für den Raspberry Pi[1] – inklusive eines kompatiblem USB-Empfängers – gewonnen hat der Linux-Magazin-Leser Valentin Puls.
Herzlichen Glückwunsch!
Infos
- DVB Link für Raspberry PI: http://dvblogic.com/en/software/raspberry-pi/
- Phil Chastney, “An APL Unicode Font”: http://archive.vector.org.uk/art10002160
- APL Syntax and Symbols: http://en.wikipedia.org/wiki/APL_syntax_and_symbols









