www.wikidata.de-de.nina.az
APL A Programming Language ist eine ublicherweise interpretierte Programmiersprache deren Syntax uberwiegend aus Symbolen besteht Sie wurde von Kenneth E Iverson und seinen Kollegen 1 bei IBM in den 1960er Jahren als algorithmische Notation u a fur den Mathematikunterricht 2 und als Entwurfssprache fur Grossrechner entwickelt APLBasisdatenParadigmen funktional strukturiert modularErscheinungsjahr 1964Designer Kenneth E IversonEntwickler Kenneth E IversonTypisierung dynamischWichtige Implementierungen Dyalog APL IBM APL2 APL2000 Sharp APL APLX NARS2000 GNU APLDialekte A Dyalog APL APLNext ELI JStandardisierungen ISO8485 1989 ISO IEC13751 2001 Beeinflusst von Mathematische NotationBeeinflusste A J K Mathematica Matlab Nial PPL Q R S Inhaltsverzeichnis 1 Geschichte 2 Besonderheiten 2 1 Operatoren und spezielle Zeichen 2 2 Interaktivitat 2 3 Programmcode 2 4 Datentypen 2 5 Speicherverwaltung 2 6 Array Verarbeitung 2 7 Ausfuhrung und Rangfolge 2 8 Variablen 2 8 1 Geltungsbereich 2 8 2 Arrays 2 9 Funktionen und Operatoren 3 Selbstdefinierte Funktionen 3 1 Programmbeispiel zur Illustration der Wirkungsweise von APL 3 1 1 Erlauterung des Programmbeispiels 3 1 2 Wirkungsweise bzw Anwendung 3 2 Moderne Sprachkonzepte Rekursion und Kontrollstrukturen 4 Machtigkeit und Lesbarkeit 5 Ausfuhrungsgeschwindigkeit 6 Entwicklung und aktuelle Situation 7 J und APL 8 Einzelnachweise 9 Literatur 10 Weblinks 10 1 Implementierungen 10 2 Periodika 10 3 Uber APL 10 4 SyntaxGeschichte Bearbeiten nbsp IBM 5100 Mikrocomputer mit APL TastaturMit dem Buch A Programming Language aus dem Jahr 1962 gab Kenneth Iverson den Anstoss zur Verwendung eines neuen Konzepts in der Programmierung Bevor der erste Interpreter verfugbar war diente APL bereits als Metasprache fur die Beschreibung der Architektur des damals neu entwickelten Computersystems IBM System 360 aus der Sicht des Programmierers 3 Ab 1965 wurde APL als Programmiersprache auf Grossrechnern z B IBM System 360 implementiert und den Kunden als Timesharing Option angeboten Zu jener Zeit wurden IBM Kugelkopf Schreibmaschinen als Terminal verwendet Daher hatte der ursprungliche Zeichensatz nur kursive Grossbuchstaben 4 Ab 1975 gab es eine Implementierung auf der IBM 5100 einem Vorlaufer des PC der bereits ein Mikrocomputer war Obwohl die Maschine nach damaligen Massstaben als durchaus leistungsfahig galt lief APL auf ihr verhaltnismassig langsam da es sich um eine Emulation des Mainframe APL Interpreters handelte Die ersten Implementierungen auf PCs benotigten ein Spezial EPROM damit der APL Zeichensatz angezeigt werden konnte Der APL Zeichensatz wurde ursprunglich so gewahlt dass die Symbole moglichst selbsterklarend sind dass sich also die Funktionen aus den Symbolen intuitiv herleiten lassen Seit einigen Jahren wird der Begriff APL auch als Array Processing Language interpretiert Besonderheiten BearbeitenOperatoren und spezielle Zeichen Bearbeiten APL verwendet spezielle Operatoren bzw Befehle die jeweils die Funktion haben nicht nur einzelne Zahlen Werte zu bearbeiten sondern bei Bedarf ganze Vektoren und Matrizen z B 2 Matrizen zu addieren oder das Skalar Produkt von 2 Vektoren zu berechnen Fur jeden dieser Operatoren gab es ein spezielles Zeichen wodurch insgesamt ein erweiterter Zeichensatz benotigt wurde und zwar sowohl auf der Tastatur im Speicher und auf dem Bildschirm seitdem es solche gab wie auch auf dem Drucker Es gab damals noch keine Laser oder Inkjet Drucker die man programmieren kann quasi jedes beliebige Zeichen zu generieren Die Verwendung solcher Zeichen mit der Funktion von Operatoren ermoglichte zwar einen extrem knappen aber fur Aussenstehende auch kryptischen Code der viele Leute abschreckte und nicht zwingend war Man hatte auch reservierte Worte als Operatoren verwenden konnen Inzwischen findet man solche Zeichen im Unicodeblock Verschiedene technische Zeichen Interaktivitat Bearbeiten APL war von Anfang an interaktiv Nach der Eingabe eines Befehls z B einer Rechenanweisung 1234 777 druckt man die Entertaste der Befehl wird vom Interpreter ausgefuhrt und das Ergebnis angezeigt Eine spezielle Anweisung fur die Ausgabe des Ergebnisses wie z B der PRINT Befehl in BASIC ist nicht notig existiert aber fur den Fall dass ein Ergebnis angezeigt werden soll das normalerweise nicht angezeigt wurde z B wenn einer Variablen ein Wert zugewiesen wird Tritt ein Fehler auf erhalt man eine entsprechende Meldung Man kann seine Eingabe modifizieren und erneut ausfuhren Die dadurch mogliche direkte Interaktion mit dem Computer ist bis heute einer der grossen Vorteile von APL als Entwicklungswerkzeug Aus heutiger Sicht klingt dies trivial aber APL war eine der ersten Programmiersprachen die diesen Luxus bot Konkurrierende Sprachen waren noch nicht interaktiv sondern mussten vor der Ausfuhrung eines Programms jeweils kompiliert werden Programmcode Bearbeiten Folgen von Befehlen lassen sich zu Funktionen zusammenfassen Funktionen konnen wiederum andere Funktionen aufrufen In der Tat ist APL eine der ersten funktionalen Programmiersprachen Naheres und ein Beispiel siehe unten Bis in die 1990er Jahre fehlten APL die Kontrollstrukturen der Strukturierten Programmierung Logik musste durch Sprunganweisungen realisiert werden In APL werden Kontrollstrukturen seltener als in anderen imperativen Programmiersprachen verwendet einerseits weil APL Funktionen nicht nur Skalare sondern Datenstrukturen beliebiger Dimension verarbeiten andererseits weil es den Operator Each bietet Datentypen Bearbeiten APL kennt mindestens die Datentypen Char Bool Int und Float allerdings muss der Programmierer dies nicht berucksichtigen denn der Interpreter wandelt die Datentypen automatisch um wann immer dies notwendig ist Dies bedeutet auch dass APL keine Typprufung kennt Der Datentyp von Variablen muss nicht eigens deklariert werden man kann einer Variablen eine Gleitkommazahl zuweisen oder einen Vektor oder eine Matrix von Gleitkommazahlen und danach einen Text ohne dass es zuvor einer besonderen Anweisung bedarf Speicherverwaltung Bearbeiten Auch die Speicherverwaltung wird vom Interpreter ubernommen Ein APL Programmierer muss sich wahrend des Programmablaufs weder um das Reservieren noch um das Freigeben von Speicher kummern Der Arbeitsspeicher wird im sogenannten Workspace fur Variablen und Programme insgesamt zur Verfugung gestellt er kann beim Programmstart festgelegt und in manchen APL Produkten auch dynamisch erweitert werden Array Verarbeitung Bearbeiten Fast alle Funktionen in APL sind auch nicht skalar ausgelegt Dies bedeutet dass Funktionen nicht nur auf einzelne Skalare Zahlen oder Characters sondern auch auf Vektoren Zahlenreihen Matrizen Tabellen und mehrdimensional angeordnete Daten Arrays sowie auf Listen angewendet werden konnen Beispiele die eingeruckte erste Zeile ist die Benutzereingabe die zweite Zeile die Antwort des APL Interpreters Viele Programmiersprachen erlauben die Addition zweier Skalare 2 3 5 APL gestattet aber auch die Addition Vektor und Skalar 2 3 4 3 5 6 7 und die Addition zweier Vektoren 2 3 4 5 6 7 7 9 11 Ausfuhrung und Rangfolge Bearbeiten Es gibt in APL nur eine einzige Rangfolgenregel Alles wird von rechts nach links abgearbeitet Ausnahme Ausdrucke in Klammern werden zuerst abgearbeitet Daher gilt 10 2 3 50 aber 10 2 3 23 Variablen Bearbeiten In APL mussen Variablen nicht deklariert oder typisiert werden siehe Datentypen Eine Variable wird erzeugt indem man einen Namen gefolgt von einem Zuweisungspfeil gefolgt vom Wert bzw den Werten der Variablen eingibt XWERT 456 78 YVECT 56 23 81 8 796 0 014 8 9 20 1 TEXT1 Dies ist ein Text MATRIX 2 4rYVECT der Operator r genannt rho verwandelt den 8 gliedrigen Vektor YVECT in eine Matrix mit 2 Zeilen und 4 Spalten So lassen sich auch Arrays mit mehr Dimensionen bilden Das Konzept der Konstanten also unveranderbar deklarierter Werte gibt es in APL nicht es kann aber simuliert werden durch eine Funktion die keine Argumente benotigt und ein explizites Ergebnis zuruckliefert Geltungsbereich Bearbeiten Jede Zuweisung erzeugt eine globale Variable d h die Variable ist im gesamten Programm sicht und anderbar Man kann den Geltungsbereich von Variablen aber einschranken indem man den Namen der Variablen in die Kopfzeile einer Funktion aufnimmt Eine solche Variable wird als lokal bezeichnet da sie nur zur Laufzeit der Funktion sichtbar ist Wenn allerdings eine Funktion F1 eine lokale Variable A definiert und anschliessend eine Funktion F2 aufruft dann ist A innerhalb von F2 sicht und anderbar was heute als Designmakel gilt Die Direct Functions in Dyalog APL verhalten sich allerdings anders Dort sind lokale Variablen tatsachlich im engeren Sinne lokal und auch in aufgerufenen Funktionen unsichtbar Arrays Bearbeiten Daten jeder Art werden in APL Arrays genannt Arrays konnen unterschiedliche Dimensionen haben Ein einzelner Wert wird Skalar genannt Mehrere Werte nebeneinander bilden einen Vektor Der Operator zur Verkettung Konkatenieren mehrerer Skalare ist das Komma Dabei ist es auch moglich einen einzelnen Wert mit einer Leeren Menge zu verketten und so einen Vektor zu erhalten der aus einem einzigen Element besteht Auch leere Vektoren sind erlaubt Das sind Vektoren die uberhaupt kein Datenelement enthalten sondern nur die Strukturinformation Werte die in Zeilen und Spalten angeordnet sind bilden Tabellen auch Matrizen oder zweidimensionale Arrays genannt Die Dimension eines Arrays wird in APL mit dem griechischen Buchstaben r Rho angegeben Wenn von dem Rank eines Arrays die Rede ist meint man die Anzahl der Dimensionen des Arrays also Rho von Rho Demzufolge ist der Rank eines Skalars 0 der eines Vektors 1 der einer Tabelle 2 und so weiter Die Ebenen eines dreidimensional angeordneten Arrays heissen Planes Es sind Arrays mit n Dimensionen moglich die Anzahl ist nur begrenzt durch die maximale Grosse der Integer Indizierung 231 1 und den zur Verfugung stehenden Speicherplatz nbsp Ein Nested Array in APL2Im Jahre 1986 brachte IBM ein erheblich erweitertes APL mit dem Namen APL2 auf den Markt Die Erweiterung bestand hauptsachlich darin dass jedes Element eines Arrays aus beliebigen anderen Datenstrukturen bestehen kann Nested Array Damit ergeben sich verschachtelte Strukturen Zur Veranschaulichung befindet sich rechts ein Beispiel Es handelt sich dabei um eine bereits behandelte numerische Matrix mit 4 Zeilen und 5 Spalten Jedoch besteht das 2 Element der 2 Zeile aus einem Textvektor und das 4 Element der 3 Zeile aus einer 2x2 Matrix Es lassen sich somit auch die Textlabels mit den numerischen Werten zu einer Tabelle verknupfen APL2 eroffnete die Moglichkeit auch mixed arrays sowie einfache und komplexe Listen zu erzeugen Im Zuge dieser Erweiterung wurden auch neue sogenannte primitive Funktionen primitive funktions zur Bearbeitung der neuen Datenstrukturen eingefuhrt sowie die alten Funktionen angepasst und in ihrem Geltungsbereich erweitert Andere APL Hersteller brachten ahnliche Erweiterungen ihrer Implementierungen heraus wobei feine Unterschiede die Portierung eines Programms zu einer anderen Implementierung erschweren Heute gilt die APL2 Implementation als Referenz fur alle Hersteller man bemuht sich um grosstmogliche Kompatibilitat Funktionen und Operatoren Bearbeiten APL kennt sowohl Funktionen als auch Operatoren aber die Bedeutung der Begriffe ist anders als in der Mathematik Funktionen werden auf Daten angewendet Operatoren auf Funktionen und Daten Funktionen liefern Daten zuruck Operatoren sogenannte abgeleitete Funktionen engl derived function BeispielDas Zeichen slash steht fur den Operator reduce Operatoren erwarten einen oder zwei Operanden Wird nur ein Operand verwendet dann muss er links neben dem Operator stehen In diesem Beispiel ist der Operand die Funktion Plus Zusammen mit dem Operator wird die abgeleitete Funktion Summiere gebildet Angewendet auf einen Vektor 3 4 5 bewirkt der Operator Reduce dass der Operand zwischen die einzelnen Bestandteile des Vektors eingefugt wird Abstrakt ausgedruckt f n1 n2 n3 n1 f n2 f n3 und im konkreten Beispiel das Ergebnis steht darunter 3 4 5 3 4 5 12 Wie machtig dieses Konzept ist wird aber erst bei Betrachtung eines anderen Operators klar Expand backslash verwendet den Operanden in der gleichen Weise wie Reduce erzeugt aber Zwischenergebnisse und reduziert den Rang des Ergebnisses nicht Reduce verwandelt einen Vektor in ein Skalar eine Matrix in einen Vektor und so weiter dies verringert die Notwendigkeit von Programmschleifen 3 4 5 3 7 12 Weitere Beispiele 3 4 5 60 3 4 5 3 12 60 3 4 5 4 3 4 5 3 1 4 Es gibt auch Operatoren die zwei Operanden verlangen Der Operator Outer Product ist ein solcher Operator Verwendet man als Operanden die Funktionen Plus und Mal dann entsteht in APL die Matrizenmultiplikation 1 2 3 40 50 60 320 nbsp APL StatementDas funktioniert genauso mit Matrizen Um dies zu demonstrieren sind in dem Bild einige Zeilen aus einer APL IDE hier Dyalog APL W dargestellt Es werden neben und drei APL Funktionen verwendet Der nach links weisende Pfeil symbolisiert in APL die Zuweisung eines Wertes auf einen Variablennamen Das einem i ahnelnde Zeichen i Iota steht fur die Funktion Indexvektor bilden Im ersten Anwendungsfall wird eine Zahlenkette von 1 bis 6 erzeugt Das dem Buchstaben p ahnelnde Zeichen r rho steht fur die APL Funktion shape und formatiert die rechts angegebenen Daten Die Anzahl der Achsen wird links von dem Zeichen angegeben Im ersten Anwendungsfall wird eine Matrix mit zwei Zeilen und drei Spalten erzeugt Die Formel symbolisiert das Matrizenprodukt Selbstdefinierte Funktionen BearbeitenZusatzlich zu den eingebauten Funktionen primitive functions kann man seine eigenen Funktionen schreiben die dann selbstdefinierte Funktion user defined function genannt werden Eine solche Funktion kann null ein oder zwei Argumente verlangen und heisst entsprechend niladische monadische oder dyadische Funktion Gemass ihrer Abstammung von der mathematischen Notation erwarten monadische APL Funktionen ihr Argument rechts und dyadische Funktionen rechts und links Die Funktion kann einen Wert zuruckliefern Beispiel fur eine dyadische Funktion R S Runde Z Dabei sei S die Zahl der Dezimalstellen auf die das Argument Z eine reelle Zahl zu runden ist das Ergebnis steht in R Anwendung 2 Runde 3 14159265 3 14 Funktionen konnen sich uber mehrere Zeilen erstrecken In Funktionen konnen andere Funktionen aufgerufen werden Verzweigungen erfolgten ursprunglich mittels evtl bedingten Sprungbefehlen und Zielmarken labels Heute wird diese Technik kaum noch verwendet Ausser APL2 bieten alle modernen Implementationen Kontrollstrukturen Programmbeispiel zur Illustration der Wirkungsweise von APL Bearbeiten R S Runde Z 1 Runde eine reelle Zahl Z auf S Stellen 2 Standardwert fur S ist 2 wenn der Wert beim Aufruf nicht spezifiziert wurde 3 0 NC S RN 4 S 2 5 RN R 10 S 0 5 Z 10 S Diese Funktion und ihre Anwendung sollen die Eigenschaften von APL erlautern Erlauterung des Programmbeispiels Bearbeiten Zeile 0 Definition der Funktion mit zwei Argumenten S Stellen und Z Zahl und einem expliziten Ergebnis R Die geschweiften Klammern um das Argument S machen dieses zu einem optionalen Argument Zeilen 1 und 2 Kommentarzeilen erkennbar an der Lampe als erstem Zeichen Zeile 3 Mit einer Bedingung wird gepruft ob die NameClass eingebaute Funktion NC des Namens S ungleich 0 ist 0 bedeutet nicht definiert Die Verzweigung zur Marke RN gilt wenn die Bedingung in Klammern 1 ist andernfalls wird RN das einfach nur die Zeilennummer 5 ist durch die normale APL Anweisung 0 RN auf den leeren Vektor reduziert ist der Operator reduce und es erfolgt keine Verzweigung Zeile 4 Wenn die Bedingung in Zeile 3 nicht erfullt ist Wert ist unbekannt wird S auf 2 gesetzt Zeile 5 Hier findet die eigentliche Rundung statt Kennzeichnend ist das Weiterreichen errechneter Werte von rechts nach links z B die Multiplikation des Parameters Z mit den Rundungsstellen S Z 10 S Der dadurch erzeugte um S Zehnerpotenzen grossere Wert wird anschliessend also links davon kaufmannisch Addition von 0 5 gerundet Funktion genannt floor und somit von weiteren Dezimalstellen befreit so dass er nun ein ganzzahliger Wert ist Das Ergebnis wird in die links stehende Multiplikation mit 10 S weitergereicht die den Wert wieder um S Zehnerpotenzen verringert Dies ist das Ergebnis R der Funktion Wirkungsweise bzw Anwendung Bearbeiten Beispiele 1 Runde 3 14159265 3 1 Runde 3 14159265 3 14 3 Runde 3 14159265 77 123 99 9 3 142 77 123 99 900 Runde 2 2 r i4 7 0 14 0 29 0 43 0 57 Erstes Beispiel Anwendung der Funktion auf Pi Rundung auf 1 Stelle siehe auch weiter oben Zweites Beispiel Rundung von Pi auf zwei Stellen Test des Default Wertes linkes Argument fehlt Drittes Beispiel Rundung eines Vektors auf drei Stellen rechts fehlende Nullen werden erganzt Viertes Beispiel Rundung einer Matrix Tabelle auf zwei Stellen Default zwei Zeilen und zwei Spalten erzeugt durch die Funktion r aus der Division der ersten vier naturlichen Zahlen i4 Funktion iota durch 7 Die Funktion Runde kann nicht nur wie oben gezeigt interaktiv ausgefuhrt werden sie kann auch in anderen Programmen verwendet werden X 4 Runde MAT Dabei sei MAT eine Tabelle mit beliebigen Zahlen die durch die Summenreduktion spaltenweise summiert wird Die entstehenden n stelligen Zahlen ein Vektor werden auf 4 Dezimalen gerundet der Variablen X zugewiesen Stattdessen konnte man auch damit weiterrechnen sie beispielsweise mit 2 multiplizieren 2 4 Runde MAT Moderne Sprachkonzepte Rekursion und Kontrollstrukturen Bearbeiten Eine Starke von APL ist die Rekursion der Aufruf einer Funktion innerhalb ihrer selbst Dies war in der ursprunglichen Implementierung von APL bereits enthalten im Gegensatz zu den meisten damaligen Programmiersprachen wie COBOL oder FORTRAN Beispiel ohne Zeilennummern unter Verwendung moderner in anderen APL Dialekten spater eingefugte Kontrollstrukturen Z FAKULTAT N Da n n n 1 muss am Anfang die Rekursion bei n 1 gestoppt werden 1 1 If N lt 1 Z 1 Else Z N FAKULTAT N 1 EndIf Anm Wegen der Verarbeitungsreihenfolge muss n 1 nicht in Klammern stehen kann aber Machtigkeit und Lesbarkeit BearbeitenAPL ist machtig Es gibt abhangig von der Version rund 70 primitive das heisst im Interpreter verankerte im Gegensatz zu selbst definierten Funktionen Diese werden durch etwa 50 Symbole dargestellt von denen rund 20 Symbole zwei verschiedene Funktionen reprasentieren in Abhangigkeit davon ob sie mit einem oder zwei Argumenten aufgerufen werden Beispiel In 8 4 wird die Funktion dyadisch als Division verwendet Das Ergebnis ist 2 In 25 wird die Funktion monadisch verwendet sie liefert den Kehrwert des rechten Arguments Das Ergebnis ist 4 Die meisten der in APL eingebauten Funktionen wirken sowohl auf Skalare als auch auf Vektoren Matrizen und Arrays Wo in anderen Programmiersprachen Schleifen verwendet werden mussen um eine Menge von Werten zu verarbeiten genugt in der Regel bei APL der Einsatz einer primitiven Funktion Daruber hinaus konnen viele dieser Funktionen mittels Operatoren erweitert werden Neben den primitiven Funktionen die immer aus einem einzelnen Zeichen bestehen gibt es eine grosse Anzahl von System Funktionen und Variablen Datum und Uhrzeit sind z B in einer Systemvariablen TS fur TimeStamp abfragbar Systemvariablen gehoren nicht zum primitiven Sprachumfang sondern sind abhangig von der Implementation Auch Systemfunktionen sind teilweise implementationsabhangig Sie stellen beispielsweise Schnittstellen zu anderen Programmiersprachen und zum Betriebssystem bereit Definierte Funktionen passen sich nahtlos in dieses Konzept ein Sie konnen monadisch oder dyadisch sein und ohne spezielle Syntax mit den primitiven Funktionen zusammen in einem Statement verwendet werden Es konnen sogar selbst programmierte Funktionen als Argumente eines Operators verwendet werden oder Operatoren selbst programmiert werden Da die primitiven Funktionen von APL nur aus einem einzigen Zeichen bestehen und diese Funktionen zudem sehr machtig sind kann keine andere Sprache mit vergleichbarer Kurze und Stringenz aufwarten Wo in anderen Programmiersprachen viele Zeilen vonnoten sind reicht bei APL haufig schon eine Anweisung mit einigen Symbolen aus 5 Dies sind die beruhmt beruchtigten one liners an denen viele APL Programmierer ihr Denkzeug APL as a tool of thought gescharft haben Ken Iverson selbst hat einen one liner geschaffen der eine Liste der ersten Primzahlen bis hochstens N erstellt 6 2 0 T T T iN Es existieren noch extremere Beispiele So gibt es eine APL Losung des n Damen Problems ebenfalls in einer Zeile Kritiker sprechen von APL gelegentlich als von einer Write once read never Sprache Diesem Urteil liegt ein Missverstandnis zugrunde Wenn in einer Zeile APL soviel passiert wie in zwei Seiten C Code dann sollte man realistischerweise davon ausgehen dass diese eine Zeile zum Verstandnis etwa die gleiche Zeit benotigt wie die zwei Seiten C Code APL hat sich besonders in Bereichen bewahrt in denen sich die Anforderungen konstant und schnell andern Versicherungen Hedge Fonds Portfolio Verwalter sowie Prototyping fur neue Anwendungen Die verwendeten Symbole die Kurze der Formulierung und die variable Manipulation abstrakter Objekte die erwahnten Skalare Vektoren Matrizen und so weiter sowohl in Zahlen wie in Textform und sogar gemischt machen APL zu einer Sprache fur Mathematiker wofur sie ja auch anfangs konzipiert war Sie erfordert abstraktes Denken und raumliches Vorstellungsvermogen ist dadurch aber auch einfach und sehr elegant Ausfuhrungsgeschwindigkeit BearbeitenDa APL interpretiert wird kann es vergleichsweise langsam in der Ausfuhrung sein Dies macht sich besonders dann unangenehm bemerkbar wenn ein APL Programm sich um einzelne Datenteilchen kummern muss zum Beispiel in einem KeyPress Event Handler Andererseits umfasst APL einen grossen Vorrat hochspezialisierter Funktionen die fur die Verarbeitung grosser Arrays optimiert sind Werden diese Funktionen auf grosse Datenmengen angewendet dann konnen APL Programme wie auch andere Interpreter Programme sehr schnell sein Als funktionale Sprache ist APL prinzipiell geeignet Multiprozessormaschinen auszunutzen In diesem Bereich gibt es derzeit die grossten Weiterentwicklungen der am Markt erfolgreichen APL Implementationen Entwicklung und aktuelle Situation BearbeitenDie Zeitschrift APL Quote Quad stellte das erste schriftliche Kommunikationsmittel fur APL Anwender ausserhalb von IBM dar und dieses hausgemachte Mitteilungsblatt war definitiv ein Keimzelle fur die Organisation von APL Anwendern unter der Agide der Association for Computing Machinery ACM 7 Bis etwa 1985 war IBM mit ihrem APL2 Interpreter auf PCs wie auf Mainframes der fuhrende Anbieter In den folgenden knapp 10 Jahren war APL sehr erfolgreich wurde aber nicht nennenswert weiterentwickelt Erst seit etwa 1992 haben kleinere Software Unternehmen APL2000 Dyalog APL spater auch MicroAPL APL kontinuierlich weiterentwickelt Mittlerweile haben diese Implementierungen IBMs APL2 in Sachen Leistungsfahigkeit deutlich hinter sich gelassen Allerdings ist APL2 die einzige APL Implementierung die auch auf Mainframes lauft Die vielleicht derzeit beste Implementierung Dyalog APL wurde von Microsoft in den Kreis der anerkannten NET Sprachen aufgenommen IBM APL2 ist dagegen erste Wahl in IBMs Websphere Welt Besondere Bedeutung hat APL2 heute vor allem noch in der Banken Versicherungs und der Tourismusbranche sowie in Forschung und Entwicklung Heute wird APL in kleinen Projekten von spezialisierten Software Unternehmen eingesetzt sowie als Werkzeug von Fachleuten die sich eher als Systemanalytiker oder Business Analysten denn als Programmierer bezeichnen Auch in den Fachabteilungen grosserer Unternehmen Forschungsinstituten und an Universitaten wird es noch immer erfolgreich genutzt APL ist alive and well 8 und hat ein eigenes Wiki 9 2012 konnte das Computer History Museum mit der Erlaubnis von IBM den Assembler Quelltext von APL in der 1969 1972 XM6 Version fur System 360 veroffentlichen 10 Die Firma Log On Software kundigte im Januar 2021 Log On APL2 fur den April 2021 an 11 Bei IBM ging der Support fur das Produkt APL2 im September 2021 zu Ende 12 J und APL BearbeitenIn seinen spaten Jahren hat der Hauptdesigner von APL Ken Iverson einen zweiten Versuch gewagt Das Ergebnis ist die Programmiersprache J die nichts mit Microsofts nicht mehr unterstutzter Programmiersprache J zu tun hat Diese Sprache ahnelt in ihren Konzepten sehr stark APL verwendet aber ausschliesslich Zeichen des ASCII Zeichensatzes Dies wird von den Anhangern als gewaltiger Fortschritt angesehen von Kritikern aber abgelehnt da die Verstandlichkeit vermindert und Selbsterklarung der Symbole nicht ausgenutzt werden Einzelnachweise Bearbeiten Falkoff A D K E Iverson The Design of APL IBM Journal of Research and Development Volume 17 Number 4 1973 07 Iverson K E Notation as a tool of thought Memento vom 24 August 2012 im Internet Archive PDF 2 2 MB Communications of the ACM 23 444 465 August 1980 A D Falkoff K E Iverson E H Sussenguth A formal description of SYSTEM 360 In IBM Systems Journal Volume 3 Issue 2 1964 Die Schreibmaschine hat einen begrenzten Zeichenvorrat Spezielle Symbole wurden deshalb durch Ubereinandertippen zweier Zeichen erzeugt Beispiel Das Zeichen wird durch die Folge Rucktaste erzeugt Als Beispiel moge ein Video auf YouTube dienen in dem Schritt fur Schritt zwei einzeilige APL Funktionen entwickelt werden die erste Funktion berechnet die nachste Generation gemass den Regeln fur Conways Spiel des Lebens die zweite Funktion stellt das Spiel dar Conway s Game Of Life in APL One liner Wars in APL Arlene E Azzarello QUOTE QUAD The Early Years APL Press Palo Alto 1982 11 Morten Kromberg APL Alive and Well Abgerufen am 3 Mai 2022 englisch APL wiki Len Shustek The APL Programming Language Source Code computerhistory org 10 Oktober 2012 abgerufen am 15 Oktober 2013 englisch Log On Software Announces Log On APL2 Database Trends and Applications 8 Februar 2021 abgerufen am 24 Oktober 2021 englisch Software withdrawal and support discontinuance IBM APL2 IBM APL2 Application Environment and IBM Workstation APL2 for Multiplatforms In ibm com 26 Januar 2021 abgerufen am 24 Oktober 2021 englisch Literatur BearbeitenBernard Legrand Mastering Dyalog APL 2009 ISBN 978 0 9564638 0 7 Kenneth E Iverson A Programming Language Wiley 1962 ISBN 0 471 43014 5 James A Brown Sandra Pakin Raymnod P Polivka APL2 at a Glance Prentice Hall 1988 ISBN 0 13 038670 7 Hans Lochner APL2 Handbuch Springer Verlag 1989 ISBN 978 3 540 50677 5 Wulf Dieter Wagner Software Engineering mit APL2 Springer Verlag 1992 ISBN 3 540 54406 2 Hanspeter Bieri und Felix Grimm Datenstrukturen in APL2 Springer Verlag 1992 ISBN 0 387 55747 4 Bernhard Legrand Les APL etendus Masson Paris 1994 Weblinks Bearbeiten nbsp Commons APL Programmiersprache Sammlung von Bildern Videos und Audiodateien Implementierungen Bearbeiten Dyalog APL APL2000 ehemals STSC Manugistics IBMs APL2 MicroAPL J NARS2000 Open Source GNU APL Open Source und frei GPL Periodika Bearbeiten Vector englischsprachige APL Publikation APL Journal deutschsprachige APL PublikationUber APL Bearbeiten APL Wiki APL Germany e V Deutsche Anwendervereinigung Uber APL Conways Game of life in APL APL demonstration Professor Bob Spence Imperial College London 1975 The Origins of APL mit Ken Iverson und Adin Falkoff 1974Syntax Bearbeiten APL2 Handbuch PDF 702 kB Abgerufen von https de wikipedia org w index php title APL Programmiersprache amp oldid 236647000