APL (Programmiersprache)

Apl
APL (programming language) logo.svg
Paradigma Array, funktional, strukturiert, modular
Entworfen von Kenneth E. Iverson
Entwickler Larry Breed, Dick Lathwell, Roger Moore und andere
Erstmals erschienen 27. November 1966; Vor 55 Jahren[1]
Stabile Version
ISO / IEC 13751: 2001 / 1. Februar 2001; Vor 21 Jahren
Disziplin tippen Dynamisch
Plattform Cross -Plattform
Lizenz Proprietär, Open Source
Webseite Aplwiki.com
Haupt Implementierungen
  • Apl \ 360
  • Apl \ 1130
  • Apl*Plus
  • Scharfes Apl
  • APL2
  • Dyalog Apl
  • NARS2000
  • APLX
  • Gnu apl
Beeinflusst von
Mathematische Notation
Beeinflusst

Apl (nach dem Buch benannt Eine Programmiersprache)[3] ist ein Programmiersprache entwickelt in den 1960er Jahren von Kenneth E. Iverson. Sein zentraler Datentyp ist der Mehrdimensionales Array. Es verwendet eine große Auswahl von Spezielle grafische Symbole[4] die meisten Funktionen und Betreiber darstellen, was zu sehr prägnantem Code führt. Es war ein wichtiger Einfluss auf die Entwicklung der Konzeptmodellierung, Tabellenkalkulationen, Funktionelle Programmierung,[5] und Computer -Mathematikpakete.[6] Es hat auch mehrere andere Programmiersprachen inspiriert.[7][8]

Geschichte

Mathematische Notation

A Mathematische Notation Für die Manipulation von Arrays wurde von entwickelt von Kenneth E. Iversonab 1957 bei Harvard Universität. 1960 begann er zu arbeiten IBM wo er diese Notation mit entwickelte Adin Falkoff und veröffentlichte es in seinem Buch Eine Programmiersprache 1962.[3] Das Vorwort besagt seine Prämisse:

Die angewandte Mathematik befasst sich weitgehend mit der Gestaltung und Analyse expliziter Verfahren zur Berechnung der genauen oder ungefähren Werte verschiedener Funktionen. Solche expliziten Verfahren werden Algorithmen genannt oder Programme. Da eine wirksame Notation für die Beschreibung der Programme eine beträchtliche syntaktische Struktur aufweist, wird sie als a genannt Programmiersprache.

Diese Notation wurde in IBM für kurze Forschungsberichte über Computersysteme wie die verwendet Burroughs B5000 und sein Stapelmechanismus, wenn Stapelmaschinen gegen Maschinen registrieren wurden von IBM für bevorstehende Computer bewertet.

Iverson benutzte seine Notation auch in einem Entwurf des Kapitels Eine Programmiersprache, geschrieben für ein Buch, mit dem er schrieb Fred Brooks, Automatische Datenverarbeitung, die 1963 veröffentlicht werden würde.[9][10]

1979 erhielt Iverson die Turing Award für seine Arbeit an APL.[11]

Entwicklung in eine Computerprogrammiersprache

Bereits 1962 ereignete sich der erste Versuch, die Notation zu verwenden, um ein vollständiges Computersystem zu beschreiben IBM System/360 Familie.

1963 implementierte Herbert Hellerman, der am IBM Systems Research Institute arbeitete IBM 1620 Computer, und es wurde von Schülern in einem speziellen Highschool -Kurs zur Berechnung der transzendentalen Funktionen nach Serienübersicht verwendet. Die Schüler testeten ihren Code in Hellermans Labor. Diese Implementierung eines Teils der Notation wurde als personalisierter Array -Übersetzer (PAT) bezeichnet.[12]

1963, Falkoff, Iverson und Edward H. Sussenguth Jr.Alle bei IBM arbeiteten und benutzten die Notation für eine formale Beschreibung der IBM System/360 Serienmaschinenarchitektur und -funktionalität, die zu einem Papier führte, das in veröffentlicht wurde IBM Systems Journal 1964. Nachdem dies veröffentlicht wurde, wandte sich das Team auf eine Implementierung der Notation auf einem Computersystem zu. Einer der Motivationen für diesen Schwerpunkt der Umsetzung war das Interesse von John L. Lawrence, der neue Pflichten hatte Science Research Associates, ein Bildungsunternehmen, das 1964 von IBM gekauft wurde. Lawrence bat Iverson und seine Gruppe, die Sprache als Instrument zur Entwicklung und Verwendung von Computern in der Bildung zu nutzen.[13]

Nach Lawrence M. Breed und Philip S. Abrams von der Stanford University trat dem Team bei IBM Research bei. Sie setzten ihre früheren Arbeiten an einer Implementierung fort Forran IV für einen Teil der Notation, der für die getan worden war IBM 7090 Computer, der auf dem ausgeführt wird Ibys Betriebssystem. Diese Arbeit wurde Ende 1965 abgeschlossen und später IVSYS (für Iverson System) ernannt. Die Grundlage dieser Implementierung wurde von Abrams in einem technischen Bericht der Stanford University, "Ein Dolmetscher für Iverson Notation" im Jahr 1966, ausführlich beschrieben. Niklaus Wirth.[14] Wie das PAT -System von Hellermans PAT -System enthielt diese Implementierung nicht das APL -Zeichensatz, sondern verwendete spezielle englisch reservierte Wörter für Funktionen und Betreiber. Das System wurde später für a angepasst Zeitteilung System und bis November 1966 wurde es für die neu programmiert IBM System/360 Modell 50 Computer, der in einem Zeitaustauschmodus ausgeführt wird und intern bei IBM verwendet wurde.[15]

Hardware

IBM -Typballs und Schreibmaschinen mit griechischen Charakteren.
Die Ansicht eines Programmierers auf das IBM 2741 -Tastaturlayout mit dem eingefügten Druckelement des APL -Typs -Druckens

Eine Schlüsselentwicklung in der Fähigkeit, APL effektiv vor der breiten Verwendung des Kathodenstrahlrohrs zu verwenden (Crt) Terminals war die Entwicklung eines besonderen IBM Selectric Schreibmaschine Austauschbares Tippelement mit allen speziellen APL -Zeichen. Dies wurde auf Papierdruckanschlussarbeitsstationen unter Verwendung des Selectric -Schreibmaschinen- und Typierungselementmechanismus verwendet, wie der IBM 1050 und IBM 2741 Terminal. Schlüsselkaps konnten über den normalen Schlüssel platziert werden, um anzuzeigen, welche APL -Zeichen eingegeben und getippt werden würden, wenn dieser Schlüssel getroffen würde. Zum ersten Mal konnte ein Programmierer eingeben und ordnungsgemäße APL -Zeichen sehen, wie sie in Iversons Notation verwendet werden und nicht gezwungen werden, unangenehme englische Keyword -Darstellungen von ihnen zu verwenden. Falkoff und Iverson hatten die Special APL Selectric Typing Elements, 987 und 988, die Ende 1964 entworfen wurden, obwohl für die Verwendung kein APL -Computersystem verfügbar war.[16] Iverson zitierte Falkoff als Inspiration für die Idee, ein IBM Selectric Typing -Element für den APL -Zeichensatz zu verwenden.[17]

Viele APL-Symbole mussten auch mit den APL-Zeichen auf dem elektrischen Typing-Element durch überholende zwei vorhandene Elementzeichen eingegeben werden. Ein Beispiel ist das up up Charakter, der aus a gemacht werden musste Delta (Shift-H) und a Sheffer Schlaganfall (Shift-M). Dies war notwendig, da der APL-Zeichensatz viel größer war als die 88 Zeichen, die dem Tippelement zulässig waren, selbst wenn die Buchstaben auf obere Fälle beschränkt waren (Hauptstädte).

Kommerzielle Verfügbarkeit

Die erste interaktive APL -Anmeldung und die Erstellung eines APL -Arbeitsbereichs wurden 1966 von Larry Breed mit einem IBM 1050 -Terminal am IBM Mohansic Labs in der Nähe verwendet Thomas J. Watson Research Center, die Heimat von Apl, in Yorktown Heights, New York.[16]

IBM war hauptsächlich für die Einführung von APL auf den Markt verantwortlich. Die erste öffentlich verfügbare Version von APL wurde 1968 für die veröffentlicht IBM 1130. IBM zur Verfügung gestellt Apl \ 1130 für kostenlos, aber ohne Haftung oder Unterstützung.[18][19] Es würde in nur 8K 16-Bit-Speicherwörtern laufen und eine dedizierte 1 Megabyte Festplatte verwendeten.

APL hat von den späten 1960er Jahren bis in die frühen 1980er Jahre an Mainframe-Timesharing-Systemen gesunken, teilweise, weil es mehrere Benutzer auf Systemen mit niedrigerer Spezifikation unterstützen würde, die keine hatten Dynamische Adressübersetzung Hardware.[20] Zusätzliche Leistungsverbesserungen für ausgewählte IBM System/370 Mainframe -Systeme umfassten die APL unterstützt Mikrocode in dem einige Unterstützung für die APL -Ausführung in den Prozessor aufgenommen wurde Firmware, im Unterschied als vollständig durch eine höhere Software auf höherer Ebene. Etwas später, als die angemessene Leistung Hardware endlich Mitte bis Ende der 1980er Jahre erhöhte, migrierten viele Benutzer ihre Anwendungen in die Umgebung mit PC.

Frühe IBM-APL-Dolmetscher für IBM 360 und IBM 370 Hardware haben ihr eigenes Multi-User-Management implementiert, anstatt sich auf die Host-Dienste zu verlassen, daher waren sie ihre eigenen Timesharing-Systeme. Erstes für die Verwendung bei IBM im Jahr 1966 eingeführt, die Apl \ 360[21][22][23] System war ein Mehrbenutzer-Dolmetscher. Die Fähigkeit, programmatisch mit dem Betriebssystem zu kommunizieren, um Informationen zu erhalten und Interpreter-Systemvariablen festzulegen monadisch und dyadisch Operationen.[24]

1973 veröffentlichte IBM Apl.sv, was eine Fortsetzung desselben Produkts war, aber das angeboten wurde gemeinsame Variablen als Mittel, um auf Einrichtungen außerhalb des APL -Systems zuzugreifen, wie z. B. Betriebssystemdateien. Mitte der 1970er Jahre wurde der IBM-Mainframe-Dolmetscher sogar für die Verwendung auf dem angepasst IBM 5100 Desktop -Computer mit einer kleinen CRT und einer APL -Tastatur, wenn die meisten anderen kleinen Computer der Zeit nur angeboten wurden BASIC. In den 1980er Jahren die Vsapl Programmprodukt genoss große Verwendung mit Konversationsmonitorsystem (CMS), Zeitfreigabeoption (TSO), VSPC, Musik/sp, und CICs Benutzer.

In den Jahren 1973 bis 1974 leitete Patrick E. Hagerty die Umsetzung des Dolmetschers der University of Maryland APL für die 1100 -Linie des Sperry UNIVAC 1100/2200 Serie Mainframe -Computer.[25] Zu der Zeit hatte Sperry nichts. 1974 wurde Studenten Alan Stebbens die Aufgabe der Implementierung einer internen Funktion zugewiesen.[26] Xerox APL war ab Juni 1975 für Xerox 560 und Sigma 6, 7 und 9 Mainframes erhältlich CP-V und für Honeywell CP-6.[27]

In den 1960er und 1970er Jahren entstanden mehrere Timesharing -Unternehmen, die APL -Dienste mit modifizierten Versionen der IBM APL \ 360 verkauften[23] Dolmetscher. In Nordamerika waren die bekannteren IP Sharp Associates, Wissenschaftliche Zeit Sharing Corporation (STSC), Zeitaustausch -Ressourcen (TSR) und die Computergesellschaft (TCC). CompuServe trat auch 1978 mit einem APL-Dolmetscher auf, der auf einer modifizierten Version von Digital Equipment Corp und Carnegie Mellon's basiert, die auf den KI- und KL 36-Bit-Maschinen von DEC lief. Die APL von CompuServe war sowohl für den kommerziellen Markt als auch für den Verbraucherinformationsdienst verfügbar. Mit dem Advent zuerst von günstigeren Mainframes wie dem IBM 4300Und später der Personalcomputer, Mitte der 1980er Jahre, war die Timesharing-Branche so gut wie verschwunden.

Scharfes Apl war bei IP Sharp Associates erhältlich, zunächst als Timesharing -Service in den 1960er Jahren und später als Programmprodukt ab 1979. Scharfes Apl war eine fortgeschrittene APL -Implementierung mit vielen Sprachverlängerungen, wie z. Pakete (Die Fähigkeit, ein oder mehrere Objekte in eine einzelne Variable zu setzen), Dateisystem, verschachtelte Arrays und gemeinsame Variablen.

APL-Dolmetscher waren auch bei anderen Mainframe- und Mini-Computer-Herstellern erhältlich, insbesondere bei Burroughs, Steuerungsdatengesellschaft (CDC), Daten allgemein, Digital Equipment Corporation (Dez),, Harris, Hewlett Packard (HP), Siemens, Xerox und andere.

Garth Foster von Syracuse University gesponserte regelmäßige Treffen der APL -Implementierer -Community im Syracuse's Minnowbrook Conference Center in Syracuse in Blue Mountain Lake, New York. In späteren Jahren organisierte Eugene McDonnell ähnliche Treffen im Asilomar -Konferenzgelände nahe Monterey, Kalifornienund in Pajaro Dunes in der Nähe Watsonville, Kalifornien. Die Sigapl Special Interest Group der Verband für Rechenmaschinen Unterstützt weiterhin die APL -Community.[28]

Mikrocomputer

Auf Mikrocomputer, die ab Mitte der 1970er Jahre erhältlich waren, BASIC wurde die dominante Programmiersprache.[29] Trotzdem stellten einige Mikrocomputer stattdessen APL zur Verfügung - die erste war die Intel 8008-basierend MCM/70 die 1974 veröffentlicht wurde[30][31] und was in erster Linie in der Bildung eingesetzt wurde.[32] Eine weitere Maschine dieser Zeit war die Videobrain -Familiencomputer, veröffentlicht 1977, das mit seinem Dialekt von APL als APL/s geliefert wurde.[33]

Das Commodore Superpet, eingeführte 1981, umfasste einen von der entwickelten APL -Dolmetscher, der entwickelt wurde Universität von Waterloo.[34]

1976 behauptete Bill Gates in seinem Offener Brief an Hobbyisten das Microsoft Corporation implementierte APL für die Intel 8080 und Motorola 6800 hatte aber "nur sehr wenig Anreiz, Hobbyisten zur Verfügung zu stellen", weil Softwarepiraterie.[35] Es wurde nie veröffentlicht.

APL2

Ab den frühen 1980er Jahren, IBM APL -Entwicklung, unter der Führung von Jim Brownimplementierte eine neue Version der APL -Sprache, die als primäre Verbesserung das Konzept von enthielt verschachtelte Arrays, wo ein Array andere Arrays und neue Sprachmerkmale enthalten kann, die die Integration verschachtelter Arrays in den Programm -Workflow erleichterten. Ken Iverson, nicht mehr die Kontrolle über die Entwicklung der APL -Sprache, verließ IBM und schloss sich an I. P. Sharp Associates, wo einer seiner Hauptbeiträge darin bestand, die Entwicklung von scharfen APL so zu lenken, dass er seiner Vision mehr entspricht.[36][37][38] APL2 wurde zum ersten Mal für veröffentlicht für CMS und Tso 1984.[39] Die APL2 Workstation Edition (Windows, OS/2, AIX, Linux, und Solaris) folgte später.[40][41]

Da andere Anbieter damit beschäftigt waren, APL -Dolmetscher für neue Hardware zu entwickeln, insbesondere für neue Hardware Unix-basierend MikrocomputerAPL2 war fast immer der Standard für neue APL -Interpreterentwicklungen. Noch heute zitieren die meisten APL -Anbieter oder deren Benutzer eine APL2 -Kompatibilität als Verkaufsargument für diese Produkte.[42][43] IBM zitiert seine Verwendung für Problemlösung, Systemdesign, Prototyping, technische und wissenschaftliche Berechnungen, Expertensysteme,[44] Für das Unterrichten von Mathematik und anderen Themen, Visualisierung und Datenbankzugriff.[45]

Moderne Implementierungen

Verschiedene Implementierungen von APL von APLX, Dyalog, et al., Enthalten Erweiterungen für Objekt orientierte Programmierung, Unterstützung für .NET Framework, XML-Array Conversion Primitive, Grafik-, Betriebssystem-Schnittstellen und Lambda -Kalkül Ausdrücke.

Ableitungssprachen

APL hat die Grundlage für die folgenden Sprachen gebildet oder beeinflusst:

  • A und a+, eine alternative APL, letztere mit grafischen Erweiterungen.
  • FP, eine funktionale Programmiersprache.
  • Ivy, ein Dolmetscher für eine APL-ähnliche Sprache, die von entwickelt wurde von Rob Pikeund was verwendet ASCII als Eingabe.[46]
  • J, das auch von Iverson entworfen wurde und das verwendet ASCII mit Digraphen anstelle von besonderen Symbolen.[7]
  • K, eine proprietäre Variante von APL, die von Arthur Whitney entwickelt wurde.[8]
  • LYaPAS, a Sowjet Erweiterung an APL.
  • Matlab, ein numerisches Berechnungswerkzeug.[6]
  • Nial, eine hochrangige Array-Programmiersprache mit einer funktionalen Programmiernotation.
  • Polymorphe Programmiersprache, eine interaktive, erweiterbare Sprache mit einer ähnlichen Basissprache.
  • S, eine statistische Programmiersprache (normalerweise in der Open-Source-Version, die als bekannt als bekannt ist R).
  • Speakeasy, eine numerische Computing Interactive -Umgebung.
  • Wolfram Sprachedie Programmiersprache von Mathematica.[47]

Sprachmerkmale

Zeichensatz

APL wurde kritisiert und für seine Wahl eines einzigartigen, nicht standardmäßigen Charakters gesetzt. Einige, die es lernen, werden zu leidenschaftlichen Anhängern. In den 1960er und 1970er Jahren könnten nur wenige Terminalgeräte oder sogar Displays den APL -Zeichensatz reproduzieren. Die beliebtesten beschäftigten die IBM Selectric Druckmechanismus mit einem speziellen APL -Typelement. Eine der frühen APL Zeilenterminals (NUR LINE-Mode-Betrieb, nicht Vollbild) war das Texas Instruments Ti Model 745 (c.1977) mit dem vollständigen APL -Zeichensatz[48] was zeigte sich Halb- und Voll Duplex Telekommunikation Modi zum Interagieren mit einem APL Zeitteilung Service oder Remote -Mainframe, um einen Remote -Computer -Job auszuführen, RJE genannt.

Im Laufe der Zeit, mit der universellen Verwendung hochwertiger grafischer Displays, Druckgeräte und Unicode Unterstützung, das Problem der APL -Charakter -Schriftart wurde größtenteils beseitigt. Die Eingabe von APL -Zeichen erfordert jedoch die Verwendung von Eingabemethoden -Redakteure, Tastaturzuordnungen, virtuelle/On-Screen-APL-Symbolsätze,[49][50] oder leicht referenzgedruckte Tastaturkarten, die Anfänger frustrieren können, die an andere Programmiersprachen gewöhnt sind.[51][52][53] Bei Anfängern, die keine vorherigen Erfahrungen mit anderen Programmiersprachen haben, stellte eine Studie mit Schülern fest, dass das Tippen und die Verwendung von APL -Zeichen die Schüler nicht messbar behinderte.[54]

Zur Verteidigung von APL müssen weniger Zeichen eingeben, und Tastaturzuordnungen werden im Laufe der Zeit auswendig gelernt. Spezielle APL -Tastaturen werden auch heute hergestellt und verwendet, ebenso wie frei herunterladbare Schriftarten für Betriebssysteme wie Microsoft Windows.[55] Die gemeldeten Produktivitätsgewinne gehen davon aus, dass man genug Zeit damit verbringt, in der Sprache zu arbeiten, um es sich lohnt, sich die Symbole, ihre Semantik und Tastaturzuordnungen zu merken, ganz zu schweigen von einer beträchtlichen Anzahl von Idioms für gemeinsame Aufgaben.

Entwurf

Im Gegensatz zu traditionell strukturierten Programmiersprachen ist der APL -Code normalerweise als Ketten von strukturiert monadisch oder dyadisch Funktionen, und Betreiber[56] Einwirken auf Arrays.[57] APL hat viele nicht standardmäßige Primitive (Funktionen und Operatoren), die durch ein einzelnes Symbol oder eine Kombination einiger Symbole angezeigt werden. Alle Primitiven sind definiert, um dasselbe zu haben Vorrangund immer mit der rechten assoziieren. So ist APL lesen oder am besten verstanden von rechts nach links.

Frühe APL -Implementierungen (c.1970 oder so) hatte keine Programmierschleife-Ablaufsteuerung Strukturen wie z. tun oder während Schleifen und If-then-else Konstrukte. Stattdessen verwendeten sie Array -Operationen und Verwendung von Strukturierte Programmierung Konstrukte waren oft nicht erforderlich, da eine Operation in einer vollständigen Anweisung auf einem vollständigen Array durchgeführt werden konnte. Zum Beispiel die Jota Funktion (ι) kann For-Loop ersetzen Wiederholung: ι n, wenn sie auf eine skalare positive Ganzzahl angewendet werden sauber getrennt.

Die APL -Umgebung wird als a genannt Arbeitsplatz. In einem Arbeitsbereich kann der Benutzer Programm und Daten definieren, d. H. Die Datenwerte existieren auch außerhalb der Programme, und der Benutzer kann auch die Daten manipulieren, ohne ein Programm zu definieren.[58] In den folgenden Beispielen trifft der APL -Interpreter erst sechs Leerzeichen vor, bevor er auf die Eingabe des Benutzers wartet. Seine eigene Ausgabe beginnt in Spalte 1.

  n  4 5 6 7 
Zuweist Vektor der Werte, {4 5 6 7}, zur Variablen n, ein Array erstellen Operation. Ein äquivalenter und dennoch prägnanterer APL -Ausdruck wäre n ← 3 + ⍳4. Mehrere Werte werden in Array gespeichert n, die Operation durchgeführt Ohne formelle Schleifen oder Kontrollflusssprache.
  n  4 5 6 7 
Den Inhalt von anzeigen n, derzeit ein Array oder Vektor.
  n+4 8 9 10 11 
4 wird jetzt zu allen Elementen des Vektors hinzugefügt nErstellen eines 4-Element-Vektors {8 9 10 11}.
Wie oben zeigt der Interpreter von APL das Ergebnis, da der Wert des Ausdrucks einer Variablen nicht zugeordnet wurde (mit a ).
  +/n 22 
APL zeigt die Summe der Komponenten des Vektors an n, d.h. 22 (= 4 + 5 + 6 + 7) Verwenden einer sehr kompakten Notation: Lesen +/ als "Plus, Over ..." und eine leichte Änderung wäre "multiplizieren, über ..."
  m  +/3+⍳4  m 22 
Diese Operationen können zu einer Aussage kombiniert werden, um sich daran zu erinnern, dass APL Ausdrücke von rechts bis links bewertet: zuerst ⍳4 erstellt ein Array, [1,2,3,4]und dann wird 3 zu jeder Komponente hinzugefügt, die zusammen summiert und das in Variablen gespeicherte Ergebnis gespeichert werden m, schließlich angezeigt.

In normaler mathematischer Notation entspricht es: . Erinnern Sie sich daran, dass mathematische Ausdrücke nicht von Recht nach links gelesen oder bewertet werden.

Der Benutzer kann den Arbeitsbereich mit allen Werten, Programmen und Ausführungsstatus speichern.

APL verwendet eine Reihe von NichtsASCII Symbole, die eine Erweiterung der traditionellen arithmetischen und algebraischen Notation sind. Mit einzelnen Zeichennamen für einzelne Anweisungen, mehrere Daten (Simd) Vektorfunktionen sind eine Möglichkeit, wie APL die kompakte Formulierung von Algorithmen für die Datenumwandlung wie das Computing ermöglicht Conways Leben des Lebens in einer Codezeile.[59] In fast allen Versionen von APL ist es theoretisch möglich, eine rechenbare Funktion in einem Ausdruck auszudrücken, dh in einer Codezeile.

Wegen der Ungewöhnlichen Zeichensatz, viele Programmierer verwenden speziell Tastaturen mit APL -Schlüsseltops zum Schreiben von APL -Code.[60] Obwohl es verschiedene Möglichkeiten gibt, APL -Code mit nur ASCII -Zeichen zu schreiben, schreiben[61] In der Praxis ist es fast nie getan. (Es kann angenommen werden, dass dies die These von Iverson unterstützt Notation als Denkinstrument.[62]) Die meisten wenn nicht alle modernen Implementierungen verwenden Standard -Tastaturlayouts mit speziellen Zuordnungen oder Eingabemethoden -Redakteure Zu greifen auf Nicht-ASCII-Zeichen zuzugreifen. Historisch gesehen war die APL -Schriftart unterscheidbar, mit iTalischen vortrammalischen alphabetischen Zeichen und aufrechten Ziffern und Symbolen. Die meisten Anbieter zeigen weiterhin den in einer benutzerdefinierten Schriftart festgelegten APL -Zeichen an.

Befürworter von APL[wer?] behaupten, dass die Beispiele für sogenannte Schreibcode (schlecht geschriebener und fast unverständlicher Code) sind fast immer Beispiele für schlechte Programmierpraxis oder Anfängerfehler, die in jeder Sprache auftreten können. Befürworter behaupten auch, dass sie mit APL weitaus produktiver sind als mit konventionelleren Computersprachen, und dass Arbeitssoftware in weitaus weniger Zeit und weit weniger Programmierern implementiert werden kann als andere Technologien.

Sie können auch behaupten, dass APL, weil es kompakt und knapp ist, sich gut für eine größere Softwareentwicklung und -komplexität eignet, da die Anzahl der Codezeilen stark reduziert werden kann. Viele APL -Befürworter und Praktiker sehen auch Standard -Programmiersprachen wie z. Cobol und Java als vergleichsweise mühsam. APL wird häufig dort gefunden, wo Zeit-zu-Markt wichtig ist, beispielsweise bei Handelssystemen.[63][64][65][66]

Terminologie

APL unterscheidet sich klar zwischen Funktionen und Betreiber.[56][67] Funktionen nehmen Arrays (Variablen oder Konstanten oder Ausdrücke) als Argumente und geben Arrays als Ergebnisse zurück. Operatoren (ähnlich wie Funktionen höherer Ordnung) Nehmen Sie Funktionen oder Arrays als Argumente und leiten Sie verwandte Funktionen ab. Zum Beispiel die Summe Funktion wird abgeleitet, indem die Anwendung des die Ermäßigung Bediener zum Zusatz Funktion. Anwenden des gleichen Reduktionsbetreibers auf die maximal Funktion (die die größere von zwei Zahlen zurückgibt) leitet eine Funktion ab, die die größte Gruppe (Vektor) von Zahlen zurückgibt. In der J -Sprache ersetzte Iverson die Begriffe Verb zum Funktion und Adverb oder Verbindung zum Operator.

APL identifiziert auch die in der Sprache eingebauten Merkmale und wird durch ein Symbol oder eine feste Kombination von Symbolen dargestellt Primitive. Die meisten Primitiven sind entweder Funktionen oder Operatoren. Das Codieren von APL ist größtenteils ein Prozess des Schreibens unprimitiver Funktionen und (in einigen Versionen von APL) -Operatoren. Einige Primitive werden jedoch weder als Funktionen noch als Operatoren angesehen, die am deutlichsten zuzuordnen.

Einige in der APL -Literatur verwendete Wörter haben Bedeutungen, die sich sowohl in der Mathematik als auch in der Allgemeinheit der Informatik unterscheiden.

Terminologie von APL -Operatoren
Begriff Beschreibung
Funktion Operation oder Zuordnung, die Null, ein (rechts) oder zwei (links und rechts) Argumente dauert, die Skalare, Arrays oder kompliziertere Strukturen sein können und ein ähnlich komplexes Ergebnis zurückgeben können. Eine Funktion kann sein:
  • Primitiv: eingebaut und durch eine einzelne Glyphe dargestellt;[68]
  • Definiert: als benannte und geordnete Sammlung von Programmaussagen;[68]
  • Abgeleitet: als eine Kombination eines Operators mit seinen Argumenten.[68]
Array Daten bewertetes Objekt von Null oder mehr senkrecht Abmessungen in Reihen-Major Reihenfolge, in der jedes Element ein primitives Skalardatum oder ein anderes Array ist.[69]
Niladic keine Argumente nehmen oder benötigen, nullär[70]
monadisch nur ein Argument benötigen; rechts für eine Funktion links für einen Bediener Unary[70]
dyadisch sowohl ein links als auch ein rechter Argument erforderlich, binär[70]
ambivalent oder monadisch in einem monadischen oder dyadischen Kontext in der Lage, das linke Argument zu ermöglichen[68]
Operator Betrieb oder Zuordnung, die eine (links) oder zwei (linke und rechte) Funktion oder ein Array -Wert -Argumente (Operanden) dauert und eine Funktion abgeleitet. Ein Bediener kann sein:
  • Primitiv: eingebaut und durch eine einzelne Glyphe dargestellt;[68]
  • Definiert: als benannte und geordnete Sammlung von Programmaussagen.[68]

Syntax

APL hat explizite Darstellungen von Funktionen, Operatoren und Syntax, wodurch eine Grundlage für die klare und explizite Aussage erweiterter Einrichtungen in der Sprache und Tools zum Experimentieren über sie geliefert werden.[71]

Beispiele

Hallo Welt

Dies zeigt "Hallo Welt":

'Hallo Welt' 

Ein Designthema in APL besteht darin, Standardaktionen in einigen Fällen zu definieren, die in den meisten anderen Programmiersprachen Syntaxfehler erzeugen würden.

Die oben angezeigte String -Konstante von 'Hello, World' zeigt, da Anzeige die Standardaktion für einen Ausdruck ist, für den keine Aktion explizit angegeben ist (z. B. Zuweisung, Funktionsparameter).

Exponentiation

Ein weiteres Beispiel für dieses Thema ist, dass die Exponentiation in APL als geschrieben wird 2*3, was anzeigt, dass 2 auf die Power 3 erhöht werden (dies würde als geschrieben werden als 2^3 in einigen anderen Sprachen und 2**3 in Forran und Python). Viele Sprachen verwenden * Multiplikation zu bedeuten, wie in 2*3, aber APL entscheidet sich zu verwenden 2×3. Wenn jedoch keine Basis angegeben ist (wie bei der Anweisung *3 in apl, oder ^3 In anderen Sprachen) würden die meisten Programmiersprachen dies als Syntaxfehler ansehen. APL nimmt jedoch die fehlende Basis an, um die natürliche Logarithmuskonstante zu sein eund interpretiert *3 wie 2.71828*3.

Einfache Statistiken

Nehme an, dass X ist eine Reihe von Zahlen. Dann (+/X)÷⍴X gibt seinen Durchschnitt. Lektüre rechts nach links, ⍴X gibt die Anzahl der Elemente in x und seitdem ÷ ist ein dyadischer Bediener, der Begriff links ist ebenfalls erforderlich. Es ist von Klammern umgeben, da sonst x genommen wird (so dass die Summierung von von X÷⍴X- Each +/X gibt die Summe der Elemente von X. Aufbau auf diesem Ausdruck berechnet und berechnet Standardabweichung:

((+/((X - (+/X)÷ ⍴X)*2))÷ ⍴X)*0,5 

Natürlich würde man diesen Ausdruck als Funktion für wiederholte Verwendung definieren, anstatt ihn jedes Mal neu zu schreiben. Da die Zuordnung ein Operator ist, kann sie innerhalb eines Ausdrucks erscheinen, sodass die folgenden geeigneten Werte in T, AV und SD eingeben würden:

SD((+/((X - EIN V(T+/X)÷ ⍴X)*2))÷ ⍴X)*0,5 

Wählen Sie 6 Lottozahlen

Dieser folgende Ausdruck des sofortigen Modus erzeugt einen typischen Satz von Wählen Sie 6 Lotterie Zahlen: sechs Pseudo-Random Ganzzahlen im Bereich von 1 bis 40, garantiert nicht wieder aufzunehmenund zeigt sie in aufsteigender Reihenfolge an:

x[x6?40] 

Das obige tut viel, präzise, ​​obwohl es für einen neuen Apler komplex erscheinen mag. Es kombiniert die folgenden APL Funktionen (auch genannt Primitive[72] und Glyphen[73]):

  • Die erste, die ausgeführt wird (APL wird von rechts bis links ausgeführt) ist die dyadische Funktion ? (genannt handeln wenn dyadisch) das zurückgibt a Vektor bestehend aus einer ausgewählten Zahl (links Argument: 6 in diesem Fall) von zufälligen Ganzzahlen von 1 bis zu einem bestimmten Maximum (rechts Argument: 40 in diesem Fall), was, wenn dies maximal ≥ Vektorlänge ist, garantiert nicht wieder aufzunehmen ist ; So erzeugen/erstellen Sie 6 zufällige ganze Zahlen im Bereich von 1 bis 40.[74]
  • Dieser Vektor ist dann zugewiesen () zur Variablen x, weil es später benötigt wird.
  • Dieser Vektor ist dann sortiert in aufsteigender Reihenfolge durch ein monadisches Funktion, die bis zum nächsten unausgeglichenen Argument alles rechts davon hat Nahverfolgungen oder Nahparenthesis. Das Ergebnis von sind die Indizes, die sein Argument in aufsteigender Reihenfolge einsetzen.
  • Dann die Ausgabe von wird verwendet, um die Variable zu indizieren x, was wir früher zu diesem Zweck gespeichert haben, und wählte damit seine Elemente in aufsteigend Reihenfolge.

Da es links von der linken x keine Funktion gibt, um APL zu sagen, was mit dem Ergebnis zu tun ist, gibt es einfach an die Anzeige (auf einer einzigen Zeile, durch Leerzeichen getrennt) aus, ohne dass dies explizite Anweisungen benötigt.

? hat auch ein monadisches Äquivalent genannt rollen, was einfach eine zufällige Ganzzahl zwischen 1 und seinem alleinigen Operanden [rechts davon] zurückgibt. Also a Rollenspiel Programm könnte den Ausdruck verwenden ? 20 um einen Sundundzwanzig-Seiten-Würfel zu rollen.

Primzahlen

Der folgende Ausdruck findet alle Primzahlen Von 1 nach R in Zeit und Raum ist die Berechnungskomplexität (in Big O Notation).

(~RR∘.×R)/R1↓ ⍳R 

Von rechts nach links ausgeführt, bedeutet dies:

  • Jota schafft einen Vektor, der enthält Ganzzahlen aus 1 zu R (wenn R = 6 Zu Beginn des Programms, ⍳r ist 1 2 3 4 5 6)
  • Fallen Erstes Element dieses Vektors ( Funktion), d.h. 1. So 1 ↓ ⍳r ist 2 3 4 5 6
  • Satz R zum neuen Vektor (, Abtretung primitiv), d.h. 2 3 4 5 6
  • Das / replizieren Der Bediener ist dyadisch (binär) und der Dolmetscher bewertet zunächst sein linkes Argument (vollständig in Klammern):
  • Generieren Außenprodukt von R multipliziert mit R, d.h. eine Matrix, die die ist Multiplikationstabelle von r durch r (°. × Operator), d.h.,
4 6 8 10 12
6 9 12 15 18
8 12 16 20 24
10 15 20 25 30
12 18 24 30 36
  • Bauen Sie einen Vektor in gleicher Länge wie R mit 1 an jedem Ort, an dem die entsprechende Zahl in R ist in der äußeren Produktmatrix (, Einbeziehung einstellen oder Element von oder Epsilon Operator), d.h., 0 0 1 0 1
  • Logisch negieren (nicht) Werte im Vektor (ändern Nullen in die und die zu Nullen) (, logisch nicht oder Tilde Operator), d.h., 1 1 0 1 0
  • Wählen Sie die Elemente in R für das das entsprechende Element ist 1 (/ replizieren Operator), d.h., 2 3 5

(Beachten Sie, dass der APL -Ursprung 1 beträgt, d. H. Indizes beginnen mit 1. APL können so eingestellt werden, dass 0 als Ursprung verwendet werden, so dass so ι6 ist 0 1 2 3 4 5, was für einige Berechnungen bequem ist.)

Sortierung

Der folgende Ausdruck Sorts Eine Wortliste, die in Matrix X nach Wortlänge gespeichert ist:

X[X+.'' ';] 

Spiel des Lebens

Die folgende Funktion "Leben", geschrieben in Dyalog APL,[75][76] nimmt eine boolesche Matrix und berechnet die neue Generation nach Conways Leben des Lebens. Es zeigt die Kraft von APL, einen komplexen Algorithmus in sehr wenig Code zu implementieren, aber das Verständnis erfordert einige erweiterte Kenntnisse über APL (wie das gleiche Programm in vielen Sprachen).

Leben  {1  . 3 4 = +/ + ¯1 0 1 ∘. ¯1 0 1 ¨ } 

HTML -Tags Entfernung

Im folgenden Beispiel, auch Dyalog, weist die erste Zeile einer Variablen einen HTML -Code zu txt und verwendet dann einen APL -Ausdruck, um alle HTML -Tags zu entfernen (Erläuterung):

  txt'<html> <body> <p> Dies wird <em> betont </em> text. </p> </body> </html>' '  { /⍨ ~{∨ ≠\}'<>'} txt Dies ist betont Text. 

Benennung

APL leitet seinen Namen aus den Initialen von Iversons Buch ab Eine Programmiersprache,[3] obwohl das Buch beschreibt Iversons mathematische Notation, anstatt die in diesem Artikel beschriebene implementierte Programmiersprache. Der Name wird nur für tatsächliche Implementierungen verwendet, beginnend mit Apl \ 360.

Adin Falkoff geprägt den Namen 1966 während der Implementierung von Apl \ 360 bei IBM:

Als ich das Büro am Büro ging, teilten ich die drei Studenten mit, wie ich Geräusche eines Arguments hören konnte. Ich steckte meinen Kopf in die Tür und Eric fragte mich: "Ist es nicht wahr, dass jeder weiß, dass die Notation, die wir verwenden, APL heißt?" Es tut mir leid, ihn zu enttäuschen, indem ich gestand, dass ich es noch nie gehört hatte. Wo hatte er die Idee, dass es bekannt war? Und wer hatte beschlossen, es so zu nennen? Warum musste es etwas genannt werden? Eine ganze Weile später hörte ich, wie es genannt wurde. Als die Implementierungsbemühungen im Juni 1966 begannen, begann auch die Dokumentationsbemühungen. Ich nehme an, als sie über "It" schreiben mussten, haben Falkoff und Iverson festgestellt, dass sie "It" einen Namen geben mussten. Zu dieser Zeit wurden wahrscheinlich viele Vorschläge gemacht, aber ich habe nur von zwei gehört. Eine Gruppe in SRA in Chicago, die Unterrichtsmaterialien unter Verwendung der Notation entwickelte, befasste sich für den Namen "Mathlab". Das hat sich nicht angesammelt. Ein weiterer Vorschlag bestand darin, es "Iversons bessere Mathematik" zu nennen und dann die Leute als das entsprechende Akronym einzuhalten. Dies wurde als fakett angesehen.

Dann ging Adin Falkoff eines Tages in Kens Büro und schrieb "eine Programmiersprache" auf das Board und darunter dem Akronym "APL". So wurde es geboren. Eric Iverson stellte mir nur eine Woche nach dieser Woche seine Frage, zu einer Zeit, in der der Name noch nicht die dreizehn Meilen auf dem Taconic Parkway von IBM Research bis IBM Mohansic gefunden hatte.

Apl wird gelegentlich neu interpretiert als Array -Programmiersprache oder Array -Verarbeitungssprache,[78] Dadurch machen Apl in ein BackRonym.

British APL Association (BAPLA) -Konferenztasche.

Es gab immer eine Zusammenarbeit zwischen APL -Anbietern, und von 1969 bis 2010 wurden regelmäßig gemeinsame Konferenzen abgehalten.[79] Auf solchen Konferenzen APL Fan-Shop wurde oft verteilt, mit APL -Motiven oder Sammlung von Lieferantenlogos. Gemeinsam waren Äpfel (als Wortspiel über die Ähnlichkeit bei der Aussprache von Apfel und Apl) und der Code -Snippet ⍺*⎕ Welches sind die Symbole Die klassische APL -Tastatur Layout beim Halten der APL Modifikatorschlüssel und "APL" tippen.

Trotz all dieser Gemeinschaftsbemühungen entstand kein universelles Anbieter-agnostischer Logo für die Programmiersprache. Als beliebte Programmiersprachen haben zunehmend erkennbare Logos festgelegt, Forran Einen im Jahr 2020 bekommen,[80] Die British APL Association startete in der zweiten Hälfte von 2021 eine Kampagne, um ein solches Logo für APL zu errichten, und nach einer Community -Wahl und mehreren Feedback -Runden wurde im Mai 2022 ein Logo ausgewählt.[81]

Verwenden

APL wird für viele Zwecke verwendet, einschließlich finanziell und Versicherung Anwendungen,[82] künstliche Intelligenz,[83][84] Neuronale Netze[85] und Robotik.[86] Es wurde argumentiert, dass APL a ist Berechnung Werkzeug und keine Programmiersprache;[87] Seine symbolischen Natur- und Array -Fähigkeiten haben es bei populärer gemacht Domain -Experten und Datenwissenschaftler[88] wer hat oder verlangt nicht die Fähigkeiten von a Computerprogrammierer.

APL ist gut geeignet zu Bildbearbeitung und Computeranimation, wo grafische Transformationen als Matrixmultiplikationen codiert werden können. Eines der ersten kommerziellen Computergrafikhäuser, Digitale Effekte, produzierte ein APL -Grafikprodukt mit dem Namen Visionen, der verwendet wurde, um Fernsehwerbung und Animation für den Film von 1982 zu erstellen Tron.[89] In letzter Zeit das Sturmwind Bootssimulator Verwendet APL, um seine Kernlogik, seine Schnittstelle zur Rendering -Pipeline -Middleware und einen wesentlichen Teil seiner zu implementieren Physik -Engine.[90]

Heute bleibt APL beispielsweise in einer Vielzahl von kommerziellen und wissenschaftlichen Anwendungen verwendetInvestitionsmanagement,[82] Anlagenmanagement,[91] Gesundheitsvorsorge,[92] und DNA -Profilerstellung,[93][94] und von Hobbyisten.[95]

Bemerkenswerte Implementierungen

Apl \ 360

Die erste Implementierung von APL unter Verwendung erkennbarer APL -Symbole war APL \ 360, das auf dem lief IBM System/360und wurde im November 1966 fertiggestellt[1] Zu diesem Zeitpunkt blieb jedoch nur innerhalb von IBM verwendet.[39] 1973 seine Implementierer, Larry Breed, Dick Lathwell und Roger Moorewurden mit dem ausgezeichnet Grace Murray Hopper Award von dem Verband für Rechenmaschinen (ACM). Es wurde "für ihre Arbeit in der Gestaltung und Implementierung von APL \ 360 gegeben, wobei neue Standards in Einfachheit, Effizienz, Zuverlässigkeit und Reaktionszeit für interaktive Systeme festgelegt wurden".[96][97][98]

1975 die IBM 5100 Mikrocomputer angeboten Apl \ 360[99] Als eines von zwei integrierten ROM-basierten interpretierten Sprachen für den Computer, komplett mit einer Tastatur und Anzeige, die alle in der Sprache verwendeten speziellen Symbole unterstützte.[100]

Wesentliche Entwicklungen an APL \ 360 umfassten CMS/APL, die die nutzten Virtueller Speicher Fähigkeiten von CMS und APLSV, das eingeführt wurde gemeinsame Variablen, Systemvariablen und Systemfunktionen. Es wurde anschließend auf die portiert IBM System/370 und VSPC Plattformen bis zu seiner endgültigen Veröffentlichung im Jahr 1983, nach der es durch APL2 ersetzt wurde.[39]

Apl \ 1130

1968 wurde APL \ 1130 das erste öffentlich verfügbare APL -System,[101] Erstellt von IBM für die IBM 1130. Es wurde das beliebteste IBM Typ-III-Bibliothek Software, die IBM veröffentlicht hat.[102]

Apl*Plus und scharfes APL

APL*Plus und Sharp APL sind Versionen von APL \ 360 mit zusätzlichen geschäftsorientierten Erweiterungen wie Datenformatierung und Einrichtungen zum Speichern von APL-Arrays in externen Dateien. Sie wurden gemeinsam von zwei Unternehmen entwickelt, die verschiedene Mitglieder des ursprünglichen IBM APL \ 360 -Entwicklungsteams beschäftigen.[103]

Die beiden Unternehmen waren I. P. Sharp Associates (IPSA), ein 1964 von Ian Sharp, Roger Moore und anderem gegründeter Unternehmen von APL \ 360 Services und gegründet STSC, eine Zeitteilungs- und Beratungsdienstleistungsgesellschaft, die 1969 von Lawrence Breed und anderen gegründet wurde. Zusammen entwickelten die beiden entwickelten APL*Plus weiter und entwickelten sich danach weiter zusammen, entwickelten sich jedoch separat als APL*Plus und scharfe APL. STSC portierte APL*Plus auf viele Plattformen, wobei Versionen für den VAX 11 gemacht wurden.[104] PC und UNIX, während IPSA einen anderen Ansatz als Ankunft des persönlicher Computer und machte auf dieser Plattform scharfe APL mit zusätzlichem erhältlich PC-XT/360 Hardware. 1993, Soliton integriert wurde gebildet, um scharfe APL zu stützen und scharfe APL zu SAX (scharfe APL für UNIX). Ab 2018APL*Plus setzt sich als APL2000 APL+Win fort.

1985 erhielten Ian Sharp und Dan Dyer von STSC gemeinsam die Kenneth E. Iverson Award für herausragenden Beitrag zu APL.[105]

APL2

APL2 war eine signifikante Neuimplementierung von APL durch IBM, die von 1971 entwickelt und 1984 veröffentlicht wurde. Es bietet viele Ergänzungen der Sprache, von denen die bemerkenswertesten (nicht rektangulären) Array-Unterstützung verschachtelt sind.[39] Das gesamte APL2 -Produkt- und Dienstleistungsteam wurde 2007 mit dem Iverson Award ausgezeichnet.[105]

Im Jahr 2021 verkaufte IBM APL2, um Software anzumelden, die das Produkt entwickelt und verkauft als Log-On APL2.[106]

Aplgol

1972 wurde APLGOL als experimentelle Version von APL veröffentlicht, die dem Sprachrahmen strukturierte Programmiersprache -Konstrukte hinzugefügt hat. Neue Aussagen wurden für die Interstatementkontrolle, die Ausführung der bedingten Erklärung und die Strukturierung von Anweisungen sowie Aussagen hinzugefügt, um die Absicht des Algorithmus zu klären.[107] Es wurde 1977 für Hewlett-Packard implementiert.[108]

Dyalog Apl

Dyalog APL wurde zuerst von veröffentlicht von britisch Firma Dyalog Ltd.[109] 1983[110] Und ab 2018, ist verfügbar für AIX, Linux (einschließlich auf der Raspberry Pi), Mac OS und Microsoft Windows Plattformen. Es basiert auf APL2, mit Erweiterungen zu unterstützen Objekt orientierte Programmierung[111] und Funktionelle Programmierung.[112] Lizenzen sind kostenlos für den persönlichen/nichtkommerziellen Gebrauch.[113]

Im Jahr 1995 zwei des Entwicklungsteams - John Scholes und Peter Donnelly - wurden für ihre Arbeiten am Dolmetscher mit dem Iverson Award ausgezeichnet.[105] Gitte Christensen und Morten Kromberg waren 2016 gemeinsame Empfänger des Iverson Award.[114]

NARS2000

NARS2000 ist ein Open-Source-APL-Dolmetscher von Bob Smith, einem prominenten APL-Entwickler und Implementierer von STSC In den 1970er und 1980er Jahren. NARS2000 enthält erweiterte Funktionen und neue Datentypen und wird nativ ausgeführt Microsoft Windowsund andere Plattformen unter Wein. Es ist nach einem Entwicklungsinstrument aus den 1980er Jahren, NARS (verschachteltes Arrays -Forschungssystem), benannt.[115]

APLX

APLX ist a plattformübergreifend Dialekt von APL, basierend auf APL2 und mit mehreren Erweiterungen, die zum ersten Mal von freigesetzt wurden von britisch Unternehmen Microapl im Jahr 2002. Obwohl es nicht mehr in der Entwicklung oder im kommerziellen Verkauf ist, ist es jetzt kostenlos bei Dyalog erhältlich.[116]

Gnu apl

GNU APL ist eine kostenlose Implementierung von erweitertem APL, wie in ISO/IEC 13751: 2001 angegeben und ist somit eine Implementierung von APL2. Es läuft weiter Linux (einschließlich auf dem Raspberry PI), macOS, mehreren BSD -Dialekten und unter Windows (entweder mit Verwendung Cygwin für die volle Unterstützung aller Systemfunktionen oder als native 64-Bit-Windows-Binärdatei, wobei einige seiner Systemfunktionen fehlen). GNU APL verwendet Unicode intern und kann geschrieben werden. Es wurde von Jürgen Sauermann geschrieben.[117]

Richard Stallman, Gründer der GNU -Projekt, war ein früher Anwender von APL, der im Sommer 1969 einen Texteditor als Schüler als Highschool -Schüler schrieb.[118]

Interpretation und Zusammenstellung von APL

APL ist traditionell ein Interpretierte Sprache, mit Sprachmerkmalen wie z. Schwache variable Typisierung nicht gut geeignet zu Zusammenstellung.[119] Mit Arrays als Kerndatenstruktur jedoch[120] Es bietet Möglichkeiten für Leistungsgewinne durch Parallelität,[121] Parallele Computing,[122][123] massiv parallel Anwendungen,[124][125] und Sehr große Integration (VLSI),[126][127] und von Anfang an wurde APL als Hochleistungssprache angesehen[128] - Zum Beispiel wurde es für die Geschwindigkeit festgestellt, mit der es komplizierte Matrixoperationen durchführen konnte, "da es in Arrays arbeitet und Operationen wie die Matrix -Inversion intern ausführt".[129]

Dennoch wird APL selten nur interpretiert und kompiliert oder partielle Kompilierungstechniken, die die folgenden enthalten sind oder wurden:

Idiomerkennung

Die meisten APL -Dolmetscher unterstützen Idiom Erkennung[130] und bewerten gemeinsame Redewendungen als einzelne Operationen.[131][132] Zum Beispiel durch Bewertung der Idiom Bv/⍳⍴a als einzelne Operation (wo Bv ist ein Boolesche Vektor und A ist ein Array), die Schaffung von zwei Zwischenarrays wird vermieden.[133]

Optimierte Bytecode

Eine schwache Eingabe in APL bedeutet, dass ein Name auf ein Array (eines beliebigen Datentyps), eine Funktion oder einen Bediener verweisen kann. Im Allgemeinen kann der Dolmetscher nicht im Voraus wissen, welche Form er aussehen wird, und muss daher zur Laufzeit eine Analyse, Syntaxprüfung usw. durchführen.[134] Unter bestimmten Umständen ist es jedoch möglich, im Voraus zu schließen, auf welchen Typ ein Name erwartet wird und dann generiert wird Bytecode Dies kann mit reduzierter Laufzeitaufwand ausgeführt werden. Dieser Bytecode kann auch mit Kompilierungstechniken wie z. B. optimiert werden Konstante Faltung oder gemeinsame Eliminierung der Subtonpression.[135] Der Interpreter wird den Bytecode ausführen, wenn sie vorhanden sind und wenn die getroffenen Annahmen erfüllt werden. Dyalog APL beinhaltet die Unterstützung für optimierte Bytecode.[135]

Zusammenstellung

Zusammenstellung von APL ist Gegenstand von Forschung und Experiment, seit die Sprache zum ersten Mal verfügbar wurde. Der erste Compiler gilt als Burroughs APL-700[136] das wurde um 1971 veröffentlicht.[137] Um APL kompilieren zu können, müssen Sprachbeschränkungen auferlegt werden.[136][138] Apex ist ein Forschungs -APL -Compiler, der von geschrieben wurde von Robert Bernecky und ist unter dem verfügbar GNU Public Lizenz.[139]

Das STSC Der APL -Compiler ist ein Mischung eines Bytecode -Optimierers und ein Compiler - er ermöglicht die Zusammenstellung von Funktionen zu Maschinensprache vorausgesetzt, dass seine Unterfunktionen und Globale sind erklärt, aber der Dolmetscher wird immer noch als verwendet Laufzeitbibliothek und Funktionen auszuführen, die den Zusammenstellungsanforderungen nicht entsprechen.[140]

Standards

APL wurde durch die standardisiert American National Standards Institute (ANSI) Arbeitsgruppe X3j10 und Internationale Standardisierungsorganisation (ISO) und Internationale Elektrotechnische Kommission (IEC), ISO/IEC Joint Technical Committee 1 Unterausschuss 22 Arbeitsgruppe 3. Die Kern -APL -Sprache ist in ISO 8485: 1989 angegeben, und die erweiterte APL -Sprache ist in ISO/IEC 13751: 2001 angegeben.

Verweise

  1. ^ a b "APL -Zitate und Anekdoten". jsoftware.com. Jsoftware. Abgerufen 14. April, 2018.
  2. ^ "std :: iota". cppreference.com.
  3. ^ a b c Iverson, Kenneth E. (1962). Eine Programmiersprache. Wiley. ISBN 978-0-471-43014-8. Archiviert von das Original Am 2014-10-27. Abgerufen 2014-10-27.
  4. ^ McIntyre, Donald B. (1991). "Sprache als intellektuelles Werkzeug: Von Hieroglyphen bis APL". IBM Systems Journal. 30 (4): 554–581. doi:10.1147/sj.304.0554. Archiviert von das Original am 4. März 2016. Abgerufen 9. Januar, 2015.
  5. ^ "ACM Award Citation - John Backus". Awards.Acm.org. 1977. archiviert von das Original am 12. Februar 2008. Abgerufen 3. Februar, 2010.
  6. ^ a b Moler, Cleve. "Das Wachstum von Matlab" (PDF). Archiviert von das Original (PDF) am 11. April 2009. Abgerufen 3. Februar, 2010.
  7. ^ a b "Eine Bibliographie von APL und J". Jsoftware.com. Abgerufen 2. März, 2010.
  8. ^ a b "Ein Interview mit Arthur Whitney". KX -Systeme. 4. Januar 2004. archiviert von das Original am 4. April 2009. Abgerufen 2. März, 2010.
  9. ^ Iverson, Kenneth E., "Automatische Datenverarbeitung: Kapitel 6: Eine Programmiersprache" Archiviert 4. Juni 2009 bei der Wayback -Maschine, 1960, Entwurfskopie für Brooks und Iverson 1963 Buch, Automatische Datenverarbeitung.
  10. ^ Brooks, Fred; Iverson, Kenneth, (1963), Automatische Datenverarbeitung, John Wiley & Sons Inc.
  11. ^ "Turing Award Citation 1979". Awards.Acm.org. Archiviert von das Original am 2009-12-23. Abgerufen 3. Februar, 2010.
  12. ^ Hellerman, H. (Juli 1964). "Experimentelles personalisiertes Array -Übersetzersystem". Kommunikation der ACM. 7 (7): 433–438. doi:10.1145/364520.364573. S2CID 2181070.
  13. ^ Falkoff, Adin D.; Iverson, Kenneth E., "Die Entwicklung von APL", ACM Sigplan Mitteilungen 13, 1978-08.
  14. ^ Abrams, Philip S.,, Ein Dolmetscher für "Iverson Notation", Technischer Bericht: CS-TR-66-47, Abteilung für Informatik, Stanford University, August 1966;
  15. ^ Haigh, Thomas (2005). "Biografien: Kenneth E. Iverson". IEEE Annals of the History of Computing. doi:10.1109/mahc.2005.4.
  16. ^ a b Rasse, Larry, "Die erste APL -Terminalsitzung", APL Quote Quad, Vereinigung für Computermaschinen, Band 22, Nummer 1, September 1991, p. 2–4.
  17. ^ 19, 2009 Adin Falkoff - Computergeschichte Museum. "Iverson hat ihn für die Auswahl des Namens APL und die Einführung des IBM Golf-Ball-Schreibmaschinens mit dem Ersatztyphead zugeschrieben, der das berühmte Charakter zur Darstellung von Programmen bereitstellte."
  18. ^ Rasse, Larry (August 2006). "Wie wir zu Apl \ 1130 gekommen sind". Vektor (British APL Association). 22 (3). ISSN 0955-1433. Archiviert von das Original am 2008-05-12. Abgerufen 2007-04-02.
  19. ^ Apl \ 1130 Handbuch Archiviert 2011-02-21 bei der Wayback -Maschine, Mai 1969
  20. ^ "APL erinnern". Quadibloc.com. Abgerufen 17. Juni, 2013.
  21. ^ Falkoff, Adin; Iverson, Kenneth E., "APL \ 360 Benutzerhandbuch" Archiviert 2012-02-29 bei der Wayback -Maschine, IBM Research, Thomas J. Watson Research Center, Yorktown Heights, NY, August 1968.
  22. ^ "APL \ 360 Terminalsystem" Archiviert 2010-07-11 bei der Wayback -Maschine, IBM Research, Thomas J. Watson Research Center, März 1967.
  23. ^ a b Pakin, Sandra (1968). APL \ 360 Referenzhandbuch. Science Research Associates, Inc. ISBN 978-0-574-16135-2.
  24. ^ Falkoff, Adin D.; Iverson, Kenneth E.,Das Design von APL, IBM Journal of Research and Development, Band 17, Nummer 4, Juli 1973. "Diese umwelt definierten Funktionen basierten auf der Verwendung einer weiteren Klasse von Funktionen-aufgrund der Form des für sie verwendeten Symbols" I-Träger "bezeichnet-, die eine allgemeinere Einrichtung bieten Für die Kommunikation zwischen APL-Programmen und den weniger abstrakten Teilen des Systems. Die I-Beam-Funktionen wurden zunächst von den Systemprogrammierern eingeführt, damit sie Systeme/360 Anweisungen aus APL-Programmen ausführen können, und verwenden Sie APL so als direkte Hilfe in ihrer Programmieraktivität. Die offensichtliche Bequemlichkeit von Funktionen dieser Art, die anscheinend Teil der Sprache zu sein schien, führte zur Einführung der monadischen I-Beam-Funktion für die direkte Verwendung durch alle. Verschiedene Argumente zu dieser Funktion lieferten Informationen über die Umgebung wie z. B. Verfügbarer Raum und Tageszeit. "
  25. ^ Minker, Jack (Januar 2004). "Beginn der Computer- und Computerwissenschaften an der University of Maryland" (PDF). Abschnitt 2.3.4: Universität von Maryland. p. 38. archiviert von das Original (PDF) am 10. Juni 2011. Abgerufen 23. Mai, 2011.{{}}: CS1 Wartung: Standort (Link)
  26. ^ Stebbens, Alan. "Wie alles begann". Archiviert von das Original am 2016-03-04. Abgerufen 2011-05-22.
  27. ^ "Xerox APL Language and Operations Referenzhandbuch" (PDF).
  28. ^ "Sigapl". Sigapl.org. Abgerufen 17. Juni, 2013.
  29. ^ "Fünfzig Jahre grundlegend, die Programmiersprache, die Computer persönlich gemacht hat". Zeit. 29. April 2014. Abgerufen 29. April, 2018.
  30. ^ "MCM Computers M70/M700". Old-computers.com. Archiviert von das Original am 3. April 2018. Abgerufen 8. April, 2018.
  31. ^ Stachniak, Stachniak (2011). Erfinden Sie den PC: Die MCM/70 -Geschichte. McGill Queens 'University Press. ISBN 978-0-7735-3852-8.
  32. ^ Miller, Michael (17. Dezember 2014). "PCs, die den Weg für den Altair ebnen". PC Magazine. Ziff Davis. Abgerufen 29. April, 2018.
  33. ^ "Videobrain -Familiencomputer", Populärwissenschaften, November 1978, Werbung.
  34. ^ "Ein Blick auf Superpet". Berechnen!. Small System Services Inc. Dezember 1981. Abgerufen 29. April, 2018.
  35. ^ Gates, Bill (31. Januar 1976). "Ein offener Brief an Hobbyisten". Homebrew Computer Club Newsletter. Abgerufen 29. April, 2018.
  36. ^ Hui, Roger. "Erinnern Sie sich an Ken Iverson". keiapl.org. Keiapl. Abgerufen 10. Januar, 2015.
  37. ^ ACM A.M. Turing Award. "Kenneth E. Iverson - Zitat". Amturing.acm.org. ACM. Abgerufen 10. Januar, 2015.
  38. ^ ACM Sigplan. "APL2: Die frühen Jahre". www.sigapl.org. ACM. Abgerufen 10. Januar, 2015.
  39. ^ a b c d Falkoff, Adin D. (1991). "Die IBM -Familie von APL -Systemen". IBM Systems Journal. 30 (4): 416–432. doi:10.1147/sj.304.0416. S2CID 19030940.
  40. ^ "IBM APL2". EDM2. 2019-10-09. Abgerufen 2021-11-17.
  41. ^ "APL2: Was ist neu". ibm.com. IBM. Abgerufen 22. April, 2018.
  42. ^ Micro Apl. "Überblick über das APL -System". www.microapl.co.uk. Micro Apl. Abgerufen 10. Januar, 2015.
  43. ^ Robertson, Graeme. "Eine persönliche Sichtweise von APL2010". archive.vector.org.uk. Vektor - Journal der British APL Association. Archiviert von das Original am 2. April 2015. Abgerufen 10. Januar, 2015.
  44. ^ Rodriguez, P.; Rojas, J.; Alfonseca, M.; Burgos, J. I. (1989). "Ein Expertensystem in der chemischen Synthese in APL2/PC". ACM Sigapl APL Quote Quad. 19 (4): 299–303. doi:10.1145/75144.75185. S2CID 16876053.
  45. ^ IBM. "APL2: Eine Programmiersprache zur Problemlösung, Visualisierung und Datenbankzugriff". www-03.ibm.com. IBM. Abgerufen 10. Januar, 2015.
  46. ^ Pike, Rob (2018-03-25). "Efeu". Godoc. Archiviert von das Original Am 2019-08-13.
  47. ^ "Wolfram Language FAQ". Wolfram. Abgerufen 20. Februar, 2020. Lisp und APL waren zwei frühe Einflüsse
  48. ^ Texas Instruments (1977). "Ti 745 Vollseitige Anzeige: Einführung eines neuen Zeichens von Charakteren". Computerwelt. 11 (27): 32. Abgerufen 20. Januar, 2015.
  49. ^ Dyalog. "APL -Schriftarten und Tastaturen". www.dyalog.com. Dyalog. Abgerufen 19. Januar, 2015.
  50. ^ Smith, Bob. "NARS2000 -Tastatur". www.sudleyplace.com. Bob Smith / NARS2000. Abgerufen 19. Januar, 2015.
  51. ^ Microapl Ltd. "Einführung in APL - APL -Symbole". www.microapl.co.uk. Microapl Ltd. Abgerufen 8. Januar, 2015.
  52. ^ Brown, James A.; Hawks, Brent; Trimble, Ray (1993). "Erweitern Sie den APL -Zeichensatz". ACM Sigapl APL Quote Quad. 24 (1): 41–46. doi:10.1145/166198.166203.
  53. ^ Kromberg, Morten. "Unicode -Unterstützung für APL". archive.vector.org.uk. Vektor, Journal der British APL Association. Archiviert von das Original am 20. Januar 2015. Abgerufen 8. Januar, 2015.
  54. ^ Hsu, Aaron. "Informatik Öffentlichkeitsarbeit und Bildung mit APL". Dyalog, Ltd. Abgerufen 15. Juli, 2016.
  55. ^ Dyalog, Inc. APL -Schriftarten und Tastaturen. http://www.dyalog.com/apl-font-tyboard.htm
  56. ^ a b Mikroapl. "Operatoren". www.microapl.co.uk. Mikroapl. Abgerufen 12. Januar, 2015.
  57. ^ Primitive Funktionen. "Primitive Funktionen". www.microapl.co.uk/. Abgerufen 1. Januar, 2015.
  58. ^ Arbeitsplatz. "Der Arbeitsbereich". www.microapl.co.uk. Abgerufen 1. Januar, 2015.
  59. ^ "Beispiel". Catpad.net. Archiviert von das Original am 8. Juli 2013. Abgerufen 17. Juni, 2013.
  60. ^ APL -Symbole. "Eingeben von APL -Symbolen". www.microapl.co.uk. Abgerufen 1. Januar, 2015.
  61. ^ Dickey, Lee, eine Liste von APL -Transliterationsschemata Archiviert 2006-09-29 bei der Wayback -Maschine, 1993
  62. ^ Iverson K.E., "Notation als Denkinstrument Archiviert 2013-09-20 bei der Wayback -Maschine",", Kommunikation der ACM23: 444-465 (August 1980).
  63. ^ Batenburg. "APL -Effizienz". www.ekevanbatenburg.nl. Abgerufen 1. Januar, 2015.
  64. ^ Vaxman. "APL großartige Programmierung" (PDF). www.vaxman.de. Abgerufen 1. Januar, 2015.
  65. ^ Janko, Wolfgang (Mai 1987). "Untersuchung der Effizienz der Verwendung von APL für die Programmierung einer Inferenzmaschine". ACM Sigapl APL Quote Quad. 17 (4): 450–456. doi:10.1145/384282.28372.
  66. ^ Borealis. "Warum APL?". www.aplborealis.com. Abgerufen 1. Januar, 2015.
  67. ^ Iverson, Kenneth E. "Ein Wörterbuch von APL". www.jsoftware.com. Jsoftware; Iverson Estate. Abgerufen 20. Januar, 2015.
  68. ^ a b c d e f "APL -Konzepte". Microapl.co.uk. Abgerufen 3. Februar, 2010.
  69. ^ "Verschachtelte Array -Theorie". Nial.com. Archiviert von das Original Am 2011-07-09. Abgerufen 3. Februar, 2010.
  70. ^ a b c "Progromma I APL", Bohman, Fröberg, StudentLitteratur, ISBN91-44-13162-3
  71. ^ Iverson, Kenneth E. "APL -Syntax und Semantik". www.jsoftware.com. I. P. Sharp Associates. Abgerufen 11. Januar, 2015.
  72. ^ Mikroapl. "APL Primitive". www.microapl.co.uk. Mikroapl. Abgerufen 11. Januar, 2015.
  73. ^ NARS2000. "APL -Schrift - zusätzliche APL -Glyphen". Wiki.nars2000.org. NARS2000. Abgerufen 11. Januar, 2015.
  74. ^ Fox, Ralph L. "Systematisch zufällige Zahlen". www.sigapl.org. Sigapl. Abgerufen 11. Januar, 2015.
  75. ^ Scholes, John (26. Januar 2009). Conways Leben des Lebens in APL (Video). Youtube. Abgerufen 20. November, 2021.
  76. ^ Weitere technische Details in APL Wikis Artikel "Conways Game of Life". Abgerufen am 20. November 2021.
  77. ^ McDonnell, E. E. die Einführung zu Ein Quellbuch in APL, APL Press, 1981. (Voller Buchscan)
  78. ^ Acharya, R; Pereira, (904567457) N.E. APL -Programmiersprache. Papier für CS5314 (Konzepte der Programmiersprachen) bei Virginia Tech.
  79. ^ APL Wiki. APL -Konferenz. Abgerufen am 13. Oktober 2021.
  80. ^ Jacob Williams. Entartete Kegel: Neues Blut. Abgerufen am 13. Oktober 2021.
  81. ^ APL Wiki. APL -Logo. Abgerufen am 20. Mai 2022.
  82. ^ a b "2017 Jahresbericht" (PDF). Simcorp. 1. Februar 2018. Abgerufen 3. April, 2018. Sofia ist eine Plattform für Investmentmanagement von Front-Back-Investment-Management wie Simcorp-Dimension. ... Sofia basiert wie einige Teile der Simcorp -Dimension auf der APL -Codierungssprache.
  83. ^ Lee, Georges; Lelouche, rötlich; Meissonnier, Vincent; Zarri, Gian Piero (1. September 1982). "Verwenden von APL in einer künstlichen Intelligenzumgebung". ACM Sigapl APL Quote Quad. 13 (1): 183–191. doi:10.1145/390006.802242. Abgerufen 3. April, 2018.
  84. ^ Fordyce, K.; Sullivan, G. (1985). "Entwicklung künstlicher Intelligenzentwicklung". APL Quote Quad. APL 85 Conf. Proc. (15): 106–113. doi:10.1145/255315.255347.
  85. ^ Alfonseca, Manuel (Juli 1990). "Neuronale Netze in APL". ACM Sigapl APL Quote Quad. 20 (4): 2–6. doi:10.1145/97811.97816. Abgerufen 3. April, 2018.
  86. ^ Kromberg, Morten. "Roboterprogrammierung in APL". www.dyalog.com/. Abgerufen 6 Januar, 2015.
  87. ^ Holmes, W n (Mai 1978). "Ist APL eine Programmiersprache?". Das Computerjournal. 21 (2): 128–131. doi:10.1093/comjnl/21.2.128.
  88. ^ Hsu, Aaron (18. November 2017). "Entwurfsmuster gegen Anti-Muster in APL". functionalconf.com. Archiviert von das Original am 23. März 2018. Abgerufen 2018-04-07.
  89. ^ Magnat-Thalmann, Nadia; Thalmann, Daniel (1985). Computeranimationstheorie und -praxis. Springer-Verlag. p. 38. ISBN 9784431684336. Abgerufen 3. April, 2018. Digitale Effekte ist ein weiteres Produktionshaus, das bei Tron gearbeitet hat. Sie verwendeten ein Laser-Scanning-System, um Bilder zu digitalisieren, zu speichern und zu reproduzieren. Judson Rosebush, Präsident von Digital Effects, ist der Hauptdesigner von APL Vision und Forran Vision, zwei Computeranimationspakete, die derzeit verwendet werden.
  90. ^ Gutsell, Sam (17. Oktober 2017). "Sturmwind -Simulator bei Dyalog '16". www.optima-systems.co.uk. Optima -Systeme. Abgerufen 3. April, 2018. Stormwind ist ein [3D -Bootssimulator], der ein großes Interesse an der APL -Community gewonnen hat.
  91. ^ "OP-Pohjola Ja Tieto Hoitivat Sovelluksen Muutostyöt Sujuvalla Yhteistyöllä" [Reibungslose Zusammenarbeit zwischen OP-Pohjola und Tieto -fähige App -Änderung] (PDF). www.tieto.com (In finnisch). Anbinden an. Abgerufen 3. April, 2018.[Permanent Dead Link]
  92. ^ "Vi idag" [Wir heute]. profdoccare.se (auf Schwedisch). Abgerufen 3. April, 2018. Durch die Wahl von APL als technische Plattform ist es relativ einfach, eine Lösung schnell zu erstellen, die als ausführbarer Prototyp bezeichnet werden kann (übersetzt aus dem Original)
  93. ^ Brenner, Charles. "DNA -Identifikationstechnologie und APL". DNA-view.com. Präsentation auf der APL -Benutzerkonferenz 2005. Abgerufen 9. Januar, 2015.
  94. ^ Brenner, Charles. "Es gibt überall DNA - eine Gelegenheit für APL". www.youtube.com. Youtube. Archiviert vom Original am 2021-11-14. Abgerufen 9. Januar, 2015.
  95. ^ "Tipps zum Golfen in APL". stackexchange.com. Abgerufen 3. April, 2018.
  96. ^ "Auszeichnungen - 1973 - Lawrence Breed". Verband für Rechenmaschinen. Archiviert von das Original am 2. April 2012.
  97. ^ "Auszeichnungen - 1973 - Richard Lathwell". Verband für Rechenmaschinen. Archiviert von das Original am 2. April 2012.
  98. ^ "Auszeichnungen - 1973 - Roger Moore". Verband für Rechenmaschinen. Archiviert von das Original am 2. April 2012.
  99. ^ "IBM 5100". Old-computers.com. Archiviert von das Original am 30. April 2018. Abgerufen 8. April, 2018.
  100. ^ "Willkommen, IBM, zum persönlichen Computer". Byte. Dezember 1975. p. 90. Abgerufen 29. April, 2018.
  101. ^ "Chronologie von APL und ihre Einflüsse auf die Entwicklung der Computersprache". www.sigapl.org. ACM. Abgerufen 29. April, 2018.
  102. ^ Larry Breed (August 2006). "Wie wir zu Apl \ 1130 gekommen sind". Vektor (British APL Association). 22 (3). ISSN 0955-1433. Archiviert von das Original am 12. Mai 2008. Abgerufen 29. April, 2018.
  103. ^ Roger Moore (2005). "Geschichte von I. P. Sharp Associates Timesharing und Netzwerk". Rogerdmoore.ca. Roger Moore. Archiviert von das Original am 4. April 2019. Abgerufen 7. März, 2018.
  104. ^ Blumenthal, Marcia (18. Mai 1981). "Vax-11 erwerben einen APL-Prozessor". Computerwelt. Abgerufen 22. April, 2018.
  105. ^ a b c "Kenneth E. Iverson Award für herausragenden Beitrag zu APL". Sigplan Kapitel über Array -Programmiersprachen (SIGAPL). Archiviert von das Original Am 26. Februar 2012.
  106. ^ Mark Schora (2021-01-26). "Anmeldesoftware kündigt Anmeldung APL2 an". Anmeldesoftware. Abgerufen 2021-11-17.
  107. ^ Kelley, R.A. (1973). "Aplgol, eine experimentelle strukturierte Programmiersprache". IBM Journal of Research and Development. 17: 69–73. doi:10.1147/rd.171.0069.
  108. ^ Johnston, Ronald L. (Juli 1977). "APLGOL: Strukturierte Programmieranlagen für APL". Hewlett-Packard Journal.
  109. ^ "Dyalog Ltd Website". Abgerufen 6. Juni 2018.
  110. ^ "Dyalog bei 25" (PDF). Vector Magazine. British APL Association. September 2008. Abgerufen 14. April, 2018.[Permanent Dead Link]
  111. ^ Kromberg, Morten (22. Oktober 2007). "Arrays von Objekten" (PDF). Verfahren des Symposiums 2007 über dynamische Sprachen: 20. doi:10.1145/1297081.1297087. ISBN 9781595938688. S2CID 18484472. Abgerufen 27. August 2018.
  112. ^ Scholes, John. "D: Eine funktionale Untergruppe von Dyalog APL". Britische APL -Asskoziation.
  113. ^ "Dyalog - Preise und Lizenzen".
  114. ^ "2016 Iverson Award wird Dyalogs CEO und CXO ausgezeichnet". Abgerufen 6. Juni 2018.
  115. ^ "Verschachteltes Arrays Research System - NARS2000: Ein experimenteller APL -Dolmetscher". NARS2000. Sugley Place Software. Abgerufen 10. Juli, 2015.
  116. ^ "APLX wurde aus dem kommerziellen Verkauf zurückgezogen, kann aber kostenlos heruntergeladen werden.". Microapl.com. Abgerufen 14. April, 2018.
  117. ^ "GNU APL". Verzeichnis.fsf.org. Kostenloses Softwareverzeichnis. Abgerufen 28. September, 2013.
  118. ^ Stallman, Richard M. "RMS Berättar". Archiviert von das Original am 26. November 2018. Abgerufen 22. April, 2018.
  119. ^ Budd, Timothy (1988). Ein APL -Compiler. Springer-Verlag. ISBN 978-0-387-96643-4.
  120. ^ Sigapl. "Was ist APL?". www.sigapl.org. Sigapl. Abgerufen 20. Januar, 2015.
  121. ^ Ju, DZ-Ching; Ching, Wai-Mee (1991). "Ausnutzung von APL-Daten parallelistisch auf einer Mimd-Maschine mit gemeinsam genutztem Memd". Newsletter ACM Sigplan Notizes. 26 (7): 61–72. doi:10.1145/109625.109633. S2CID 8584353.
  122. ^ Hsu, Aaron W.; Bowman, William J. "APL in der modernen Ära wiederholen" (PDF). www.cs.princeton.edu. Indiana University / Princeton. Abgerufen 20. Januar, 2015.
  123. ^ Ching, W.-M.; Ju, D. (1991). "Ausführung automatisch parallelisierter APL -Programme auf RP3". IBM Journal of Research & Development. 35 (5/6): 767–777. doi:10.1147/rd.355.0767. Abgerufen 20. Januar, 2015.
  124. ^ Blelloch, Guy E.; Sabot, Gary W. (1990). "Zusammenstellung von Sammlungssprachen auf massiv parallelen Computern". Journal of Parallel und Distributed Computing. 8 (2): 119–134. Citeseerx 10.1.1.51.5088. doi:10.1016/0743-7315 (90) 90087-6. Sammlungsorientierte Sprachen umfassen APL, APL2
  125. ^ Jendrsczok, Johannes; Hoffmann, Rolf; EDIGER, Patrick; Keller, Jörg. "Implementieren von APL-ähnlichen Daten parallele Funktionen auf einer GCA-Maschine" (PDF). www.fernuni-hagen.de. Fernuni-Hagen.de. S. 1–6. Archiviert von das Original (PDF) am 22. Januar 2015. Abgerufen 22. Januar, 2015. GCA - Globale zelluläre Automatisierung. Von Natur aus massiv parallel. "APL wurde aufgrund der Fähigkeit ausgewählt, Matrix- und Vektorstrukturen auszudrücken.
  126. ^ Brenner vom IBM T.J.Watson Research Center, Norman (1984). "VLSI -Schaltungsdesign mit APL mit FORTRAN -Subroutinen". Proceedings der Internationalen Konferenz über APL - APL '84. ACM Sigapl APL Quote Quad. Vol. 14. ACM Sigapl. S. 77–79. doi:10.1145/800058.801079. ISBN 978-0897911375. S2CID 30863491. APL zur Interaktivität und Leichtigkeit der Codierung
  127. ^ Gamble, D.J.; Hobson, R.F. (1989). "Auf dem Weg zu einer Grafik-/prozeduralen Umgebung zum Erstellen von VLSI -Modulgeneratoren". Konferenzverfahren IEEE Pacific Rim Conference über Kommunikation, Computer und Signalverarbeitung. S. 606–611. doi:10.1109/pacrim.1989.48437. S2CID 7921438. VLSI -Modulgeneratoren werden beschrieben. APL und C als Beispiele für interpretierte und kompilierte Sprachen können mit einer erweiterten Grafikanzeige verbunden werden
  128. ^ Lee, Robert S. (1983). "Zwei Implementierungen von APL". PC Magazine. 2 (5): 379. Abgerufen 20. Januar, 2015.
  129. ^ Martha und Lama. "Die APL -Computersprache". Marthallama.org. Marthallama. Abgerufen 20. Januar, 2015.
  130. ^ Metzger, Robert; Wen, Zhaofang (2000). Automatische Algorithmuserkennung und Ersatz: Ein neuer Ansatz zur Programmoptimierung. Die MIT -Presse. ISBN 9780262133685. Abgerufen 6. Mai, 2018.
  131. ^ Snyder, Lawrence (1982). "Erkennung und Auswahl von Redewendungen für die Codeoptimierung". Acta Informatica. 17 (3). doi:10.1007/bf00264357. S2CID 8369972.
  132. ^ Cheng, Feng Sheng (1981). "Idiom Matching: Eine Optimierungstechnik für einen APL -Compiler". Iowa State University. Abgerufen 6. Mai, 2018. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  133. ^ "Idiomerkennung". dyalog.com. Abgerufen 6. Mai, 2018.
  134. ^ Strawn, George O. (März 1977). "Muss APL wirklich eine Laufzeit analysieren?" Software: Übung und Erfahrung. 7 (2): 193–200. doi:10.1002/spe.4380070207. S2CID 1463012.
  135. ^ a b "Compiler -Benutzerhandbuch" (PDF). www.dyalog.com. Dyalog Ltd. Abgerufen 7. Mai, 2018.
  136. ^ a b Driscoll Jr., Graham C.; Orth, Donald L. (November 1986). "Kompilien von APL: The Yorktown APL Übersetzer". IBM Journal of Research and Development. 30 (6): 583–593. doi:10.1147/rd.306.0583. S2CID 2299699.
  137. ^ "Chronologie von APL". www.sigapl.org. ACM. Abgerufen 7. Mai, 2018.
  138. ^ Wai-Mee, Ching (November 1986). "Programmanalyse und Codegenerierung in einem APL/370 -Compiler". IBM Journal of Research and Development. 30 (6): 594–602. doi:10.1147/rd.306.0594. S2CID 17306407.
  139. ^ "Das Apex -Projekt".
  140. ^ "APL Compiler (Nachricht von Jim Weigang an die Comp.lang.APL -Newsgroup)". 5. April 1994.

Weitere Lektüre

Video

Externe Links

Internetquellen

Anbieter

Benutzergruppen und Gesellschaften