... sollte man meinen.
Das könnte auch so sein, denn als Sprache enthält APL eine Vielzahl paralleler Konzepte. So kann die Addition zweier Matrizen auf mehrerer Prozessoren verteilt werden, ohne dass der Entwickler das explizit vorgeben muss. Dies gilt für viele Funktionen und Operatoren, es ist nur eine Frage der jeweiligen Implementierung.
Und genau hier scheitern die heutigen APL-Interpreter: Sie nutzen die inzwischen üblichen mehrfachen Prozessorkerne nicht für diese Art der Parallelität. Man kann nur hoffen, dass die Entwickler von APL-Systemen die Chance, die moderne Prozessorarchitekturen bieten, nutzen werden. APL als Sprache ist dafür bestens geeignet, besser als die meisten anderen Sprachen.
APL2 macht mit der
CSD 12 einen ersten Schritt in diese Richtung. Mit den definierten Operatoren PEACHT und PEACHP werden Modelle für ein paralleles "Each" angeboten.
Die Idee des "Parallel Each" (PEACH) ist nicht neu, mit " ∵ " wurde auch schon ein eigenes Symbol vorgeschlagen. Denn PEACH operiert entsprechend EACH bis auf den Umstand, dass mit PEACH abgeleitete Funktionen möglicherweise andere Resultate bei Verwendung von globalen Variablen als implizite Argumente und Ergebnisse im Operanden liefern.
Die Umsetzung von PEACH im Service Level 12 weicht syntaktisch in zwei Punkten vom theoretischen Vorbild ab: Sowohl PEACHT als auch PEACHP haben einen rechten Operanden, der linke Operand ist keine Funktion, sondern enthält den Namen einer Funktion.
PEACH lässt sich entsprechend "Each" als Spezialfall von Function Arrays verstehen. Bei einer parallelen Implementierung solcher Strukturen werden einzelne Funktionen des Array simultan auf unterschiedlichen Prozessoren ausgeführt. PEACHT oder PEACHP sollten sich ohne Änderung der Syntax leicht für Vektoren von Funktionsnamen im linken Operanden erweitern lassen.
Irgend jemand übersetzte in den 80ern APL mit "A Parallel Language". PEACHT und PEACHP sind ein erster Schritt zur Umsetzung dieser Eigenschaft der Sprache in Software.