www.wikidata.de-de.nina.az
XL steht fur englisch eXtensible Language also erweiterbare Programmiersprache XL ist eine Programmiersprache die zur Unterstutzung des Paradigmas der konzeptorientierten Programmierung entworfen wurde 1 XLParadigmen multiparadigmatisch konzeptorientiert imperativErscheinungsjahr 2000Designer Christophe de DinechinEntwickler Christophe de DinechinAktuelle Version 0 1 Typisierung starkBeeinflusst von Ada C Betriebssystem UnixartigeLizenz GPLv2xlr sf netXL stellt individuell rekonfigurierbare Syntax und Semantik bereit Compiler Plug ins konnen benutzt werden um der Sprache mehr Funktionen hinzuzufugen Ein Basissatz an Plug ins implementiert eine ziemlich normale imperative Programmiersprache Programmierer konnen eigene Plug ins schreiben die beispielsweise Funktionen wie die symbolische Differenzierung von Gleichungen zur Verfugung stellen Daraufhin lassen sich diese Funktionen genauso wie die eingebauten Features nutzen Inhaltsverzeichnis 1 Sprache 2 Syntax 3 Semantik von XL1 4 Entwicklungsstatus und Geschichte 4 1 Abstammung 5 Semantik von XLR 6 Weblinks 7 EinzelnachweiseSprache BearbeitenXL ist auf vier Ebenen definiert bzw aufgeteilt XL0 definiert wie ein Eingabetext in einen Syntaxbaum transformiert wird XL1 definiert eine Grundsprache mit zu C vergleichbaren Eigenschaften XL2 definiert die Standard Bibliothek die allgemeine Datentypen und Operatoren umfasst XLR definiert eine dynamische Laufzeit fur XL die auf XL0 basiert XL hat keine elementaren Datentypen oder Schlusselworter Alle Operatoren und Datentypen wie Integer Zahlen oder die Addition sind in der Standard Bibliothek definiert XL2 XL1 ist portabel zwischen verschiedenen Ausfuhrungsumgebungen Dies gilt nicht fur XL2 falls eine bestimmte CPU beispielsweise keine Gleitkomma Multiplikation implementiert so kann der zugehorige Operator in der Standard Bibliothek fehlen und das Benutzen einer Gleitkomma Multiplikation im Quelltext fuhrt wahrend der Kompilierung zu einem Fehler Das Hallo Welt Programm sieht in XL wie folgt aus use XL TEXT IO WriteLn Hallo Welt Eine alternative Form in einem fur umfangreiche Programme geeigneten Stil sahe so aus import IO XL TEXT IO IO WriteLn Hello World Eine rekursive Implementation der Fakultat sahe so aus 0 gt 1 N gt N N 1 Syntax BearbeitenDie Syntax von XL ist in der XL0 Ebene definiert Die XL0 Ebene des Compilers kann durch eine Syntaxbeschreibungsdatei konfiguriert werden in der Eigenschaften wie die Textdarstellung oder der Operatorenvorrang definiert werden Eine Basis Syntaxdatei definiert ausserdem allgemeine mathematische Schreibweisen wie z B fur Addition Der Syntaxbaum besteht aus 7 Knotentypen 4 Blattknotentypen integer real text und symbol und 3 innere Knotentypen infix prefix und block Der integer Typ reprasentiert ein Integer Literal wie zum Beispiel 2 Das Zeichen kann genutzt werden um eine andere Basis als 10 zu definieren wie in 2 101101 Ein trennender Unterstrich kann genutzt werden um die Lesbarkeit zu verbessern z B 1 000 000 Der real Typ reprasentiert nicht ganzzahlige Zahlenwerte wie 2 5 Es konnen Basisangaben und Trenner genutzt werden wie bei Integern also 16 D 6FD E 10 Der text Typ reprasentiert Texte bzw Strings Dieser Typ ist normalerweise durch einfache oder doppelte Hochkommas umschlossen also Foo oder bar aber die Syntaxdatei kann auch andere Trenner definieren einschliesslich welcher fur mehrzeilige Texte Der symbol Typ reprasentiert Namen oder Operatoren Namen sind Folgen alphanumerischer Zeichen die mit einem Buchstaben beginnen wie z B Hello Symbole sind Folgen von nicht alphanumerischen Zeichen wie oder Symbol beachtet die Gross Kleinschreibung aber XL1 ignoriert die Gross Kleinschreibung sowie Unterstriche sodass FooBar und foo bar als gleichwertig angesehen werden infix Knoten reprasentieren zwei durch eine Einfugung verknupfte Knoten wie A 1 oder 2 and 3 Infix Knoten werden in manchen Fallen genutzt um Zeilen mit der Einfugung new line zu trennen prefix Knoten reprasentieren zwei aufeinanderfolgende Knoten wie Write Hello Dieser Typ wird auch fur Postfix Notationen genutzt wie 3 oder Open block Knoten reprasentieren einen Knoten der durch gruppierende Symbole umschlossen ist wie A oder Index Einruckung wird intern durch einen Block Knoten dargestellt Mit der voreingestellten Syntaxdatei ist das folgende Beispiel gultiges XL0 wobei die Semantik unwichtig sei A B Hallo Wird zu infix symbol A infix symbol B text Hallo Semantik von XL1 BearbeitenDie XL1 Phase ist definiert als Abfolge von Operationen auf den XL0 Syntaxbaum Diese Operationen werden durch verschiedene Compiler Plug ins zur Verfugung gestellt die auf Grundlage der Form des Syntaxbaums ausgefuhrt werden Bestimmte Konstrukte translate und translation werden durch ein Plug in bereitgestellt das das Schreiben anderer Plug ins ermoglicht Das quote Konstrukt generiert einen Syntaxbaum Hier steht wie diese Schreibweisen benutzt werden konnen um ein Plug in namens ZeroRemoval zu implementieren das uberflussige Additionen und Multiplikationen mit 0 eliminiert when X 0 then return X when X 0 then return parse tree 0 Ein Plug in kann fur eine ganze Datei aktiviert werden entweder uber die Kommandozeile oder lokaler im Quellcode indem man die pragma Schreibweise nutzt X Differentiate d sin omega T exp T T0 dT Die XL1 Ebene beinhaltet einen grossen Satz an Plug ins besonders XLSemantics das allgemeine Abstraktionen zur Verfugung stellt wie Subroutinen Datentypen und Variablendeklaration und definitionen genauso auch grundlegende strukturierte Statements wie If Gatter oder Schleifen Entwicklungsstatus und Geschichte BearbeitenDas aktuelle XL ist das Ergebnis einer langen Entwicklungsarbeit die etwa 1992 begann Die Sprache wurde hauptsachlich von Christophe de Dinechin entwickelt und implementiert Zuallererst war der XL Compiler in C geschrieben Er hatte einen Punkt erreicht an denen die meisten vorgesehenen Eigenschaften korrekt funktionierten doch das Schreiben von Plug ins war sehr schwierig da C selbst nicht erweiterbar ist sodass das Implementieren von translate ahnlichen Ausdrucken unmoglich ist Der Syntaxbaum war komplizierter mit Dutzenden Knotentypen da er fur die gleichzeitige Unterstutzung mehrerer Sprachen Cross Language Support ausgelegt war Es gibt einen Java zu Java Compiler namens Moka der die gleiche Infrastruktur nutzt Zum Ausstieg aus der komplexen Syntaxbaum Struktur wurde 2003 ein komplett neuer Compiler geschrieben Der Syntaxbaum wurde erheblich vereinfacht hinunter zu den 7 XL0 Knotentypen die jetzt in Benutzung sind Mit diesem neuen Compiler startete das Bootstrapping 2004 und die gesamte aktuelle Entwicklung der Entwicklertools geschieht in XL Trotzdem hat der Compiler immer noch teilweise inkompatiblen XL1 Support obwohl dessen Moglichkeiten schon in einigen Bereichen C ubertreffen Abstammung Bearbeiten XL1 ist beeinflusst von einer grossen Zahl anderer Sprachen Ada beeinflusste die Ausnahmenbehandlung Aufgabenverwaltung Instandhaltungsaspekte und Teile der Infrastruktur zum Modularisieren grosserer Programme BASIC besonders die modernen Varianten die ohne Zeilennummern auskommen und strukturiertes Programmieren unterstutzen sowie zeigen wie einfach eine Programmiersprache sein kann C wurde als Massstab hinsichtlich der Laufzeit und dem Maschinenebenensupport hinzugezogen XL benotigt keine virtuelle Maschine zur Ausfuhrung C und die Standard Template Library zeigten die Notwendigkeit guter Unterstutzung generischer Typen einschliesslich impliziter Instanziierung an der es Ada fehlt Fortrans ungebrochener Leistungsvorsprung gegenuber C und C in numerisch intensiven Anwendungen half herauszufinden welche Sprachkonstrukte nutzliche Optimierungen verhindern wurden Java zeigte die Wichtigkeit einer grossen portablen Unterstutzungsbibliothek Die Java Container zeigten auch die Grenzen eines nicht auf generischer Programmierung basierenden Ansatzes Die Kopplung mit Java Code bleibt eine interessante Herausforderung fur XL Lisps Erweiterbarkeit wurde als Schlusselfaktor fur Relevanz und Uberleben bis zum heutigen Tag betrachtet LISP war die erste Sprache die objektorientierte Merkmale normierte obwohl sie Jahre vor dem Aufkommen der Idee der Objektorientierung entwickelt wurde Prolog zeigte dass alternative Programmiermodelle manchmal nutzlich und hochproduktiv sind Es wurde viel Aufwand betrieben um sicherzustellen dass auch in XL solche Plug ins wie in Prolog moglich sind Visual Basic zeigte wie der Syntaxbaum von der visuellen Darstellung gelost werden kann Wenige Leute bearbeiten VB Formulare als Text Es wird erwartet dass XLs Bearbeitungsplugins eines Tages ebenfalls ahnliche Fahigkeiten zur Verfugung stellen um den Syntaxbaum unmittelbar zu bearbeiten Semantik von XLR BearbeitenXLR ist eine dynamische Sprache die ursprunglich als Backend fur den XL1 Compiler geplant wurde inzwischen jedoch der Name fur die XL Laufzeit XLR benutzt die Basissyntax von XL0 gemeinsam mit XL1 doch das Verhalten lasst sich viel eher nahe an eine funktionelle Sprache einordnen wohingegen XL1 als eher imperativ aussehende Sprache gestaltet wurde XLR hat praktisch nur einen eingebauten Operator gt der eine Neuschreibung markiert Die Schreibung auf der linken Seite des Operators wird in die Notation auf der rechten Seite umgewandelt Dieser Mechanismus wird benutzt um Standardschreibweisen zu implementieren if true then TrueBody else FalseBody gt TrueBody if false then TrueBody else FalseBody gt FalseBodyWeblinks BearbeitenDie fruhere Entwicklungsseite Coverage on XL and Concept programming in The Register englisch Artikel in Byte englisch Memento vom 14 Januar 2009 im Internet Archive Prasentation uber XL und konzeptionale Programmierung im Allgemeinen englisch PDF 4 8 MB Einzelnachweise Bearbeiten Phil Manchester Dip into Concept Programming The Register abgerufen am 3 Februar 2010 Abgerufen von https de wikipedia org w index php title XL eXtensible Language amp oldid 237947882