APL (A Programming Language) ist eine der ältesten und ungewöhnlichsten Programmiersprachen: Kenneth E. Iverson entwickelte sie 1962 als mathematische Notation, aus der später eine echte Sprache wurde. Ihr Kernprinzip ist die Array-Programmierung — statt über Schleifen zu iterieren, wendet man Operationen auf ganze Vektoren und Matrizen an. Der Code ist extrem kompakt und arbeitet mit über 80 speziellen Symbolen statt Wörtern.
Grundprinzip: Alles ist ein Array
Ein Skalar ist in APL ein 0-dimensionales Array, ein Vektor ein 1-dimensionales. Operationen wie + oder * wirken automatisch elementweise auf ganze Arrays — diese Eigenschaft heißt Pervasion. Der Code a + b addiert also zwei Vektoren, ohne dass eine Schleife geschrieben werden muss.
Die wichtigsten Symbole und Operatoren
⍳ iota — erzeugt einen Zahlenvektor (⍳5 → 1 2 3 4 5)
⍴ reshape/rho — formt einen Vektor in eine Matrix um
⌈ ceiling/maximum (monadisch: aufrunden, dyadisch: Maximum)
⌊ floor/minimum (monadisch: abrunden, dyadisch: Minimum)
+ - × ÷ Grundrechenarten, elementweise auf Arrays
/ reduce — faltet ein Array (+/1 2 3 → 6)
scan — kumulative Version (+ 2 3 → 1 3 6)
⍋ grade up — Sortierindizes aufsteigend
⍒ grade down — Sortierindizes absteigend
Ein berühmtes Beispiel ist die Summe der Zahlen 1 bis 100: +/⍳100 liefert 5050 — in fünf Zeichen, ohne Schleife.
Monadische und dyadische Funktionen
APL-Symbole haben je nach Kontext zwei Bedeutungen: Monadisch (ein Argument, z. B. ⌈3.7 → 4) oder dyadisch (zwei Argumente, z. B. 5⌈3 → 5). Diese Doppelbelegung macht die Notation ausgesprochen dicht, verlangt aber Übung beim Lesen.
Dyalog APL als moderne Implementierung
Die heute verbreitetste Implementierung ist Dyalog APL (seit 1983, kommerziell, für Windows/Linux/macOS). Sie bietet eine integrierte Entwicklungsumgebung, eine deutschsprachige Community und eine kostenlose persönliche Lizenz. Auch online lässt sich APL direkt ausprobieren, etwa auf der Lernplattform TryAPL. Weitere Implementierungen sind GNU APL (Open Source) und der APL-Interpreter in einigen IBM-Systemen.
Verwandte Grundlagen: Forth-Befehle (Stack-Programmierung als weiteres kompaktes Paradigma), Wolfram-Befehle (mathematische Symbolik), Julia-Befehle und MATLAB-Befehle (numerische Konkurrenz), Nial-Befehle, Ivy-Befehle und BQN-Befehle setzen die Array-Idee als moderne ASCII-Dialekte fort. Python-Befehle (mit NumPy ebenfalls array-orientiert).