04/2014

Auflösung des Winterrätsels Forum Nie sprachlos Winterrätsel

80 Nur wer sich in der Programmiersprachen-Historie auskennt, hatte eine Chance bei den Fragen des Winterrät- sels 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 einstreicht. Nils Magnus www.linux-magazin.de

Allein um eine zumindest größtenteils richtige Lösung für die 20 Auf- ten Code formulieren hilft. Die in Listing 1 per Ocaml kodierte gaben des Winterrätsels aus dem Linux-Magazin 02/​2014 zustande Sortierfunktion, die auf beliebigen Typen funktioniert, ist ein zu bekommen, bedarf es weit überdurchschnittlicher Kenntnisse schönes Beispiel dafür. der Programmiersprachen-Geschichte. So gesehen darf sich jeder Teilnehmer als Siegertyp betrachten. Der Legende nach motivierte den ursprünglichen Autor zur Gewinner des Sachpreises – Videorecorder-Equipment für den Namenswahl seiner Skriptsprache ein Gleichnis aus dem Matt­ Rasp­berry Pi von DVB Link [1] – konnte jedoch nur einer der teilneh- 3häus-Evangelium.​ Darin sucht ein Händler nach Preziosen. Was menden Hobbyhistoriker werden, der Kasten „Lösung und Gewinner“ durchschreitet im selben Bibeltext das Wappentier der Sprache? lüftet das Geheimnis. Der Artikel selbst repetiert die Fragen und Der Urvater Abraham des Perl-Universums, Larry Wall, ist ka- beantwortet sie korrekt – wie gewohnt ausführlich. lifornischer Programmierer und bekennender Christ. Er beruft sich bei der Namenswahl seiner Skriptsprache gerne auf Mat- Akronyme sind für Programmiersprachen durchaus beliebt, re- thäus 13, 46: „Als er eine besonders wertvolle Perle fand, ver- kursive allemal. Welche Sprache erfand ein Mann mit dänischem kaufte er al­les, was er besaß, und kaufte sie.“ Inspiriert vom 1Pass fürs World Wide Web? Umschlag ei­nes frühen Perl-Buches reüssierte das Kamel zum Obwohl er heute in den Vereinigten Staaten lebt, ist Rasmus Sinnbild für Perl. Der zitierte Evangelist wusste auch dazu einen Lerdorf auf Grönland geboren und damit gebürtiger Däne. Den Vers, nämlich 19, 24: „Nochmals sage ich euch: Eher geht ein „PHP: Hypertext Preprocessor“ schrieb er anfangs als Ersatz Kamel durch ein Nadelöhr, als dass ein Reicher in das Reich für eine Reihe von Perl-Skripten. Gottes gelangt.“

Ein britischer Turing-Award-Gewinner entwickelte eine der ​Das Einrücken von Code als syntaktisches ist bei Pro- ersten Sprachen mit polymorpher Typinferenz und typsicherer grammierern umstritten. Python-Fans beispielsweise preisen 2 Ausnahmebehandlung.​ Sie gilt als Urahnin einer ganzen Reihe 4diese Form der Blockmarkierung, andere bleiben skeptisch. von Abkömmlingen. Wie heißt jener, der objektorientierte Ansätze Die Entwickler welcher Sprache mussten zumindest in deren Urform einbrachte und so mehrere Programmierwettbewerbe gewann? manche Codefragmente auf bestimmte Spalten einrücken? Robin Milner hat ML geschaffen, was er als Abkürzung für Bis zur Version Fortran 77 schrieb die Sprache vor, dass norma- Meta Language verwendete. Zur weiteren Verwandschaft der ler Code ab Spalte 8 zu beginnen habe. Kommentare hingegen Sprachfamilie gehören beispielsweise SML, Miranda, Haskell bedurften in Spalte 1 eines »C«. Diese Richtlinien stammten und Ocaml, das in sehr kompakter Schreibweise hocheffizien- noch aus der Zeit der Lochkarten – Programmierer konnten so Zeilen, die sich als fehlerhaft herausstellten, noch nachträglich Listing 1: Sortierfunktion in Ocaml das Muster für den Kommentar hinzustanzen.

01 let rec sort = function 02  | [] ‑> [] Ein eidgenössischer -Erfinder schuf eine ganze 03  | x :: l ‑> insert x (sort l) Kaskade an Sprachen, wovon die erste und von ihm allein 04  5entworfene​ die größte Verbreitung gefunden hat. Später war 05 and insert elem = function ihm eine Sprache nicht genug und er entwarf mit Kollegen an einer 06  | [] ‑> [elem] europäischen Hochschule noch ein dazu passendes Betriebssystem 07  | x :: l ‑> und einen zugehörigen Rechner. Wie lautet das germanische Äqui- 08  if elem < x then elem :: x :: l else x :: insert elem l;; valent der Programmierumgebung? om © Vichaya Kiatying-Angsulee, 123RF.c Kiatying-Angsulee, © Vichaya Antworten PHP Ocaml Nadelöhr Fortran 1 P 2 O 3 N 4 F 04/2014 5 A Alberich 6 O Oak 7 P Pike 8 W Whitespace 9 B BCPL 10 E Esperanto 11 I Iverson 12 M Mascitti 13 M Mono 14 R Ramey 15 H Hopper 16 L Logo Forum 17 S Snobol 18 P Prolog 19 O Object 20 A Algol

Niklaus Wirth entwarf neben seiner bekanntesten Kreation Der US-Amerikaner Martin Richards entwickelte 1969 mit BCPL Pascal auch noch Modula, Modula-2 sowie Oberon. Die Spra- eine plattformunabhängige, aber sehr systemnahe Program- Winterrätsel che brachte eine Entwicklungs- und Laufzeitumgebung mit. miersprache, die zwar relativ wenig Komfort und Sicherheits- An der ETH Zürich schuf Wirth mit seinem Team dafür die mechanismen enthielt, aber zugleich die zentralen Sprach- Systemplattform Ceres. Oberon ist ein anderer Name für den konstrukte einer imperativen Sprache umsetzte. Die Idee von 81 Hüter des Nibelungeschatzes, Alberich, einen Zwerg der nor- Objektcode stammt in Teilen aus diesem Sprachkonzept. Über dischen Mythologie. den Umweg von B, das kaum produktiv zum Einsatz kam, entwickelte sich daraus C. Auch später blieb BCPL in Mode,

Ein Entwickler benannte seine Sprache eines Tages nach beispielsweise in Teilen des Amiga OS. www.linux-magazin.de der Geschmacksrichtung eines Löschwasser-Sudes um. Ur- 6sprünglich​ taufte der in seinem Heimatland mit einem Orden Obwohl er sehr früh das Konzept der höheren Program- ausgezeichnete Entwickler die Sprache aber nach einem soliden miersprache einführte, benötigte der Entwurf eines Hard- Laubbaum. Welchem? 10ware-Entwicklers geschlagene 29 Jahre bis zur ersten James Gosling, Officer of the Order of Canada, hat sich zwar Implementierung. Welche Sprache hatte ihr Schöpfer ursprünglich um den Emacs verdient gemacht, entwarf aber – wohl um das ins Auge gefasst, um seine Rechner zu programmieren? Gleichgewicht der Macht wiederherzustellen – ebenfalls Java. Nach dem Ende des Zweiten Weltkriegs konnte der Compu- Ursprünglich jedoch sollte die Kaffee-Sprache Oak heißen, wie terpionier praktisch kaum an seinem damals das englische Wort für Eiche. aktuellen Hardware-Entwurf, der Z4, arbeiten. Der elektrome- chanische Rechner verwendete Relais und war zwar konzep- Viele Programmiersprachen haben eine wechselhafte Ent- tionell frei programmierbar, allerdings nur in einer mühsamen wicklung hinter sich. Die hier gesuchte Sprache zeigt sich be- Maschinensprache. 7sonders​ vielgesichtig, denn sie startete als objektorientierte Zuse suchte daher nach Ideen, um Programme abstrakter for- C-Variante, verlebte ihre Kindheit in einem vernetzten Rollenspiel, mulieren zu können. Die Sprache Plankalkül avancierte dabei um schließlich als Implementierungssprache eines mittlerweile fast zwar zur ersten Hochsprache, kam jedoch mangels passender vergessenen Webservers zu reüssieren. Hardware praktisch nicht zum Einsatz. Erst 1975 implemen- Der schwedische Spiele-Entwickler Lars Pensjö entwickelte tierte Joachim Hohmann in Darmstadt die Sprache im Zuge sei- 1989 eine virtuelle Maschine für ein textbasiertes Online-Rol- ner Dissertation. Bevor Zuse sich Plankalkül zuwandte, spielte lenspiel. Da sich Pensjö die Spielewelt nicht komplett selbst er mit dem Gedanken, seine Rechenmaschine in Esperanto zu ausdenken wollte, ermöglichte er erfahrenen Spielern, diese in programmieren, verwarf den Gedanken aber schnell. der objektorientierten Sprache LPC zu erweitern. Auf diesem Sprachentwurf setzten die Entwickler des Roxen Challenger auf Nicht immer stellen krude Syntax oder besonders abstrakte und nannten ihre Neufassung Pike. Sprachkonstrukte die größten Hürden auf. Ein exotischer 11Sprachentwurf erwartete ursprünglich entweder einen Fern- Die meisten Compiler oder Interpreter zerlegen den Quellcode schreiber mit einer Hardware-Backspace-Implementierung oder in Tokens – und akzeptieren an vielen Stellen rund um diese eine Latex-Klasse, um allein den Code anzuzeigen. Welcher Turing- 8eine​ besondere Zeichenklasse, die zwar keine Bedeutung hat, Award-Gewinner entwickelte sie? 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 – ge- nau! – 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.

Die gesuchte Sprache trat als Verbindungsglied zwischen © Micro APL Hoch- und Maschinensprache auf, inspirierte den heutigen Abbildung 1: APL benutzt für seinen Quellcode Zeichen außerhalb der gewöhnli- 9Quasi-Standard​ für die Systemprogrammierung und legte eine chen ISO-8859-15-Symbole. In den 1960er Jahren erreichte man das durch das Grundlage für Objektcode. Übereinanderdrucken von zwei Zeichen auf einem Fernschreiber. 04/2014 Forum

APL (A ) ist recht einfach aufgebaut für die chromatische Erhöhung eines Tons „Sharp“, was C#- und kann gut mit Vektoren und Matrizen umgehen. Sie macht Erfinder Microsoft wohl für einen gelungenen Scherz und es leicht, schnell zu Ergebnissen zu kommen. Wäre da nicht Seitenhieb auf C++ hielt. Wer bei Microsoft Beethoven hört, ist Winterrätsel die Syntax: Gerade die Operatoren bestehen oft aus mehrfach leider nicht überliefert. Linux-Entwickler greifen zu Mono, um übereinandergedruckten Symbolen (Abbildung 1). in der objektorientierten Sprache zu programmieren. 82 Um etwa einen Kommentar einzuleiten, tippten Programmierer ein großes A ein, bewegte den Cursor ein Zeichen zurück und Eine Steuersprache des Unix-Urvaters war einem Briten überdruckten es mit einem kleinen O. Als Eingabefolge würde zu oll. Er entwickelte daraufhin seine eigene Fassung, man diese etwa mit »A\bo« umschreiben. Das klappt natürlich 14die syntaktisch auf jedem aktuellen Linux-System große

www.linux-magazin.de nur auf einem Fernschreiber. Um diese Limitierungen moder- Bedeutung besitzt. Welcher Entwickler hat seit über 20 Jahren den ner Monitore zu umgehen, gibt es neuerdings Fonts [2] und Posten inne, sich um ihren interaktionsfreudigen Wiedergänger zu sogar -Zeichen [3] für die wichtigsten APL-Operatoren. kümmern? Kenneth Iverson hatte die Sprache erfunden. Nicht die von Stephen Bourne 1977 programmierte Bourne Shell war Unix’ erster Kommandointerpreter, sondern die von Dass sein Sprachentwurf Klasse(n) haben würde, wollte Thompson selbst verfasste, später nur noch „Old Shell“ ge- der in Skandinavien geborener Entwickler eigentlich in nannte Osh, die unter anderem die Pipes mitbrachte. Bourne 12ihrem Namen verankern. Wie hieß der Mitarbeiter des fügte unter anderem die Steuerung von Hintergrundprozessen Erfinders, der für den tatsächlichen, schnöde auf die Vorgängerin (»&«, [Strl]+[Z], »fg« und »bg«) hinzu und machte den Inter- verweisenden Namen verantwortlich zeichnet? preter programmierfähig. Bjarne Stroustrup vermisste in C die Objektorientierung und Für den täglichen Einsatz fehlte es jedoch an einer Eingabe­ insbesondere ein Klassensystem und nannte somit seine zu- historie und anderen nützlichen Hilfen, die erst die Bash ab nächst als Erweiterung gedachte Programmiersprache intern etwa 1990 mitbrachte. Seit der Zeit betreut Chet Ramey den „C with Classes“. Der Legende nach wollte sein Mitarbeiter heutigen Quasi-Standard für Linux-Kommando-Eingaben. Rick Mascitti augenzwinkernd den neuen Evolutionsschritt der Sprache betonen und schuf so den Namen C++. Welche Pionierin wirkte maßgeblich an der Entwicklung einer frühen Hochsprache mit, die zu beherrschen heute Ob ein populäres, spektakulärerweise nicht in Sonaten- 15fast einer Beschäftigungsgarantie gleichkommt? Die Ma- hauptsatz-Form verfasstes und nächtliche Lichteffekte thematikerin war bei US-Präsidenten und -Showmastern zu Gast. 13thematisierendes Klavierstück eines deutschen Komponis- Die US-Amerikanerin Grace Hopper hatte für die US-Marine ten Inspiration für den Namen einer Programmierumgebung war, ist und mehrere Computerhersteller gearbeitet und dabei an der nicht überliefert. Die Tonart seines ersten Satzes weist aber auf die Spezifikation für Cobol mitgewirkt. Gleichzeitig erfand sie Sprache hin. Wie heißt deren Open-Source-Implementierung? praktisch das Debugging und dokumentierte 1947 in ihrem Klaviersonaten sollen mit einem schnellen, schnittigen Satz Logbuch den ersten Fix in Form einer aufgeklebten Motte beginnen, das war die unumstößliche Lehrmeinung zu Beet- (siehe Abbildung 3). hovens 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 © Public Domain

Abbildung 3: Computerpionierin Grace Hopper erfand nicht nur Cobol, sondern Abbildung 2: Beethoven Klaviersonate Nr. 14 op. 27 Nr. 2 beginnt mit aufgebro- auch das Debugging. Das Changelog von 1947 mit ihrem ersten gefunden Bug ist chenen Akkorden in der Tonart des ersten Satzes Cis-Moll. erhalten geblieben und steht heute im Archiv der US-Marine. 04/2014 Forum

Von der Wappengestaltung mal abgesehen, spielen Tiere Vererbungspfaden von einer Superklasse erben. Dieses Problem nur in wenigen Programmiersprachen eine nennenswerte gibt es bei Einfachvererbung nicht. Da in Smalltalk jede Instanz Rolle. Bei welcher Sprache, gerne auch in der Bildung ein Objekt ist, heißt ihre Metaklasse folgerichtig Object. 16 Winterrätsel eingesetzt, bleibt ein possierliches Reptil dagegen unabdingbar? Um Kindern den Zugang zum Programmieren zu erleichtern, Wie das Who’s who von Compilerbau-Experten liest sich erdachte der Südafrikaner Seymour Papert die Programmier- die Liste der Entwickler einer frühen Sprache, die schon 83 sprache Logo, die dank Lisp-Anleihen und Rekursionen mäch- 20in den 1960er Jahren das strukturierte Programmieren tige Programmierkonzepte einfach handhabbar machte. In ermöglichte. Da Entwickler sie gerade in ihren I/​O-Operationen un­ Erinnerung geblieben ist jedoch eine stilisierte, steuerbare einheitlich implementierten, kam die gesuchte Sprachfamilie kaum zum Einsatz, beeinflusste aber ihre Nachfolger konzeptionell.

Schildkröte, die eine Farbspur hinter sich herzieht. www.linux-magazin.de Als Frucht internationaler Zusammenarbeit entstand in den Die verbreitetsten Datentypen bei Programmiersprachen 1960er Jahren Algol: Der Amerikaner John W. Backus und sind Repräsentationen für Zahlen und Zeichenfolgen. Wel- der Däne hatten die Backus-Naur-Form zur Syntax- 17che Sprache macht hier eine Ausnahme, da sie erstmals Beschreibung erdacht. Der Deutsche Friedrich L. Bauer begrün- Vorformen von regulären Ausdrücken in den Mittelpunkt rückte? dete den Studiengang Informatik in Deutschland. Mit ihren normalen Funktionen vermochte Snobol nicht viele Als KI-Experte und Lisp-Erfinder war der Amerikaner John Entwickler hinter dem Ofen hervorzulocken. Die Möglichkeit McCarthy dabei. Auch Alan . Perlis stammte aus den USA, hingegen, Texte zu zerlegen und nach Mustern zu suchen, be- Heinz Rutishauser aus der Schweiz und aus scherten der Sprache in den 1970er und 1980er Jahren eine ge- Deutschland. Gemeinsam legten sie den Grundstein der struk- wisse Beliebtheit. Weil Snobol jedoch meist nach Rechnern der turierten Programmierung, die auf Algorithmen baut statt auf Mainframe-Kampfklasse verlangte, liefen ihr Unix-Werkzeuge die Implementierung. Die Arbeit des multinationalen Teams wie Grep, Sed und später Perl den Rang ab. beeinflusste nachfolgende Spachen stark. (jk) n

Dass alles, was nicht belegbar ist, keine Wahrheit darstellt, nennen Logiker die Closed-World-Assumption. Welche Infos 18Sprache baut darauf auf? Der Entwickler beschreibt in ihr [1] DVB Link für Raspberry PI: zwar das Problem, nicht aber den Lösungsweg. [http://dvblogic.com/en/software/raspberry-pi/] Anders als viele andere Programmiersprachen legt Prolog nicht [2] Phil Chastney, „An APL Unicode Font“: fest, wie der ausführende Computer zu einem Ergebnis kom- [http://​­archive.​­vector.​­org.​­uk/​­art10002160] men oder wie er sich verhalten soll. Stattdessen notiert der [3] APL Syntax and Symbols: Programmierer bekannte Fakten und Regeln im Sinne der Prä- [http://​­en.​­wikipedia.​­org/​­wiki/​­APL_syntax_and_symbols] dikatenlogik. Der Sprachinterpreter prüft dann, ob sich davon ausgehend eine Hypothese bestätigen lässt und ob und wie sie Lösung und Gewinner der Anwender parametrisieren muss. Die Abbildung auf der zweiten Seite oben ver- rät alle korrekten Einzelantworten. Wer sie in Eine angehende Mathematikerin neigte in ihrer Jugend das im vorletzten Heft beschriebenen Schema zu Schüchternheit. Nachdem sie in einem renommierten einfütterte, kam auf den Lösungssatz „A Plea 19Forschungszentrum angeheuert hatte, benannte sie – der for lean Software“ und konnte diesen bis zum Überlieferung nach – die dort mit ihrem Team entwickelte Sprache 15. Februar an [[email protected]] schi- selbstironisch nach unverbindlichen Partygesprächen. Von welcher cken. Alle 100-prozentig richtigen Antworten, Klasse erbt jede Instanz innerhalb dieser Sprache? es waren 14, haben an der anschließenden Ver- An der Ideenschmiede Palo Alto Research Center entwickelte losung teilgenommen. Adele Goldberg mit ihrem Team Smalltalk, die das objektorien- Die ausgeklügelte Videorecorder- und TV- tierte Modell sehr konsequent umsetzte. Entwickler arbeiteten Soft­ware von DVB Link für den auf einem persistenten Desktop, der seinerseits ebenso wie Raspberry Pi [1] – inklusive Compiler und Editor weitgehend in Smalltalk geschrieben war eines kompatiblem USB-Emp- und die sich alle zur Laufzeit modifizieren ließen. fängers – gewonnen hat der Klassen können und müssen in Smalltalk nur von einer Ober- Linux-Magazin-Leser Valentin Puls. klasse erben. Auf diese Weise vermeiden sie das so genannte Herzlichen Glückwunsch! Diamond-Problem, bei dem ein Objekt auf zwei verschiedenen