Sunday, 22. June 2008
... 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.
"APL ist parallel" vollständig lesen
Monday, 21. April 2008
Dies habe ich von interessierter Seite zugeschickt bekommen:[
22:47:28] zurück zum Thema. Du willst das Timeout
runtersetzen, aber man kann es nicht?
[22:47:48] Ich kann...
[22:47:51] Ich kann C
[22:48:57] Und ich A
[22:49:09] Und P
[22:49:17] APL?
[22:50:01] A wie "alles, nur nicht richtig" und P wie
"Plain Text"
[22:50:38] Und L?
[22:50:58] L wie Labern?
[22:51:03] super, das kann ich auch!
Ein Name wurde unkenntlich gemacht. Am Inhalt wurde nichts geändert.
Bedeutet dieses historische Dokument eine dramatische Wendung für die gegenwärtigen APL-Forschung?
Tuesday, 12. February 2008
Nicht immer hat man Glück, eine gewünschte Integration eines Unternehmens in eine anderes, größeres zu erleben.
IBM ist inzwischen recht routiniert bei der Eingliederung übernommener Mitarbeiter in die eigenen Strukturen und Prozesse. Es sind noch keine 3 Monate vergangen, dass IBM den Kauf von Cognos bekannt gab, und die Integrationsmaschinerie läuft schon auf Hochtouren.
Neue Mail-Signaturen ("Cognos - an IBM Company"), neue Schilder, Meetings, Videokonferenzen und stapelweise neue Rechner - Thinkpad T61p, IBM meint es gut mit den Neuen. Bin gespannt, wie das weitergeht.
Eile tut not. Der Wettbewerb (im IBM-Jargon: die Marktbegleiter) schläft nicht. Mindestens gnauso spannend, wie die Integration der Menschen, ist daher das Zusammenbauen der Produkte. Auch da tut sich bereits überraschend viel.
Ist Ambuj Goyal überhaupt klar, dass er nun einige (erfolgreiche) Softwareprodukte im Portfolio hat, die auf APL basieren?
Sunday, 6. January 2008
So werden gemeinhin Formulierungen in APL charakterisiert, im Positiven, aber auch im Negativen.
APL-Kritikern zufolge führt das in der Regel zu "Write-only" Code. Und Schuld daran ist die APL-Symbolik.
Dass die Verwendung von Symbolen beim Programmieren nicht per se von Übel sein kann, zeigt folgendes, zufällig gefundene Wikipedia-Zitat:
"Der historisch wichtigste Vorteil von Visual Basic ist die einfache Erlernbarkeit der Sprache. Die Sprache ist bewusst an die englische Sprache angelehnt und benutzt Wörter (z. B. And, Or, Mod) anstelle von Symbolen (z. B. &&, ||, % in C++). Viele erfahrenere Programmierer bevorzugen hingegen aus genau diesem Grund C#, da der Leistungsumfang VB.NET sehr ähnlich ist, die Sprache jedoch kompaktere Formulierungen ermöglicht."
Kritisiert man APL wegen der Kompaktheit seiner Ausdrücke, müsste man dies konsequenterweise auch mit C++ oder C# tun, aber auch mit der Mathematik. Und Letzteres ist kaum vorstellbar.
Tatsächlich mag das Fehlen APL-geeigneter Eingabemedien zu nerven. Dies spricht aber nicht prinzipiell gegen APL.
Saturday, 5. January 2008
... war die Idee UNIQUE zur APL-Grundfunktion zu erheben. Dies war schon im APL2 IUP der Fall. Aber nicht nur dort:
Vor mehr als einem Jahr, mit Version 6.2, wurde der Sprachumfang von APL-Win um eine Unique-Funktion erweitert. Ich fand das und finde das immer noch nachahmenswürdig.
Beide APL implementieren ein "Unique", die jeweiligen Funktionen unterscheiden sich allerdings in einem wesentlichen Punkt:
Das Ergebnis des APL2 IUP "Unique" ist eine boolesche Maske, mit der das jeweils erste Auftreten der unterschiedlichen Elemente einer APL-Struktur markiert wird. Mit der hiermit definierten Funktion ∩ gilt dann für Vektoren x
(∩x) ≡ (x⍳x)=⍳⍴x
Das Ergebnis des APL+Win "Unique" enthält die verschiedene Elemente eines Vektor jeweils einmal in der Reihenfolge ihres Auftretens im vorgegebenen Vektor, also
(∪x) ≡ ((x⍳x)=⍳⍴x)/x
"Nicht mein eigen ..." vollständig lesen
Thursday, 3. January 2008
Dies ist kein APL-Thema, es beginnt aber mit der letzten APL-Tagung in Berlin. Zunächst kann man aus Folgendem erneut erkennen, dass auf APL-Veranstaltungen nicht ausschließlich über APL geredet wird. Seit Jahren lerne ich z.B. wie Kalender berechnet werden - dank Peter Antweiler -, ein Wissen, mit dem ich vor kurzem noch einen Dialog zu einem Dreiergespräch erweitern konnte (was nur verklausuliert, dass ich mich unaufgefordert und besserwisserisch in ein Gespräch eingemischt habe).
In Berlin hatten wir darüber hinaus noch Musik, Akkorde auf einem Torus, visualisiert mit dem AP207. Faszinierend! Zwei meiner Lieblingsthemen zusammengebracht. Nicht erst seit " Gödel, Escher, Bach" wissen wir ja, dass Musik und Mathematik vieles verbindet. Einige Musikwissenschaftler treiben es noch weiter. Das war für mich die Erkenntnis des Vortrages von Dr. Helmut Engelke unter dem Titel "Visualisierung musikalischer Tonräume in APL2".
Der Titel sagt nicht viel über die Rolle der Mathematik in der Musiktheorie aus, aber dafür mehr der Vortrag selbst und vor allem ein referenziertes Buch: " The Topos of Music: Geometric Logic of Concepts, Theory, and Performance" von Guerino Mazzola. Ein Werk mit mehr als 1.300 Seiten, zu viel, um es mal nebenher zu lesen.
"Es wächst zusammen, was möglicherweise zusammen gehört" vollständig lesen
Wednesday, 2. January 2008
... mir etwas von IBM zu Weihnachten hätte wünschen dürfen (mit ernsthafter Aussicht auf Erfüllung), hätte ich sicher " Unique" als APL2-Grundfunktion auf dem Wunschzettel notiert. Ich bin der festen Überzeugung, dass das gleichnamige Idiom ein eigenes Symbol verdient hätte - nicht nur, weil ich mein ∆UNIQUE so häufig einsetze.
Allerdings darf ich diese Idee nicht mein eigen nennen:
Es war einmal das APL2 "Installed User Program", sozusagen die APL2 Version 0.5, ein voll funktionsfähiges APL2 für den Mainframe der frühen 80er, mit dem IBM die Akzeptanz der vielen Neuerungen gegenüber dem guten, alten VSAPL durch den geneigten APL-Kunden testen wollte. Dieses APL2 IUP realisierte "Unique" als monadische Grundfunktion mit dem Symbol ∩. Unter Shift-C ist dieses Zeichen heute noch mit gängigen APL2-Tastaturen erreichbar, aber leider nahezu nutzlos.
Ich finde, diesem armen, vergessenen Symbol sollte wieder Leben eingehaucht werden!
Auf welche Weise, lässt sich im APL2 IUP Language Manual nachlesen (gut, wenn man es im Regal stehen hat):
"Wenn ich ..." vollständig lesen
Saturday, 9. June 2007
Tatsächlich wurde auch schon vor mehr als 30 Jahren richtig gute Software gemacht. Ausnahmsweise meine ich nicht APL, denn das wurde letztes Jahr sogar 40.
Nein, es ist Graphpak, eine Sammlung von APL-Funktionen für die Erstellung von Grafiken. Damit habe ich erstmals 1983 mit VSAPL auf einem IBM-Mainframe einige Balkendiagramme erstellt.
Viel später habe ich einige Fingerübungen mit Graphpak zur Darstellung von mehr oder weniger komplizierten mathematischen Fragestellungen unternommen. Ein wenig Animation beim Nachstellen von Fußballspielen war auch dabei. Aber für diesen Zweck erschien mir die Nutzung von Graphpak wie mit Kanonen auf Spatzen geschossen.
"Business Grafiken" werden heute kaum noch mit APL2 und Graphpak erstellt. Mir fällt spontan zumindest kein Anwendungsfall ein. Dies ist heute Aufgabe von Business Intelligence Software, aber vor allem und leider von Excel.
Trotzdem habe ich in den vergangenen Monaten die Kombination von APL2 mit Graphpak schätzen, wenn nicht sogar lieben gelernt. Gerade bei der Darstellung mathematischer Sachverhalte, wie z.B. von Funktionsverläufe im Reellen oder Komplexen, ist dieses Team für mich unschlagbar. Funktionen einer oder mehrerer Veränderlichen sind im Handumdrehen mit APL dem Computer nahe gebracht, mit PLOT kann man den Graphen dieser Funktion umgehend visualisieren:
x←¯10 to 10,0.1
PLOT x,[1.5] f x
Das war's schon.
"Gute Wein in alten Schläuchen" vollständig lesen
Saturday, 2. June 2007
Keine Angst vor der Übergabe großer Variablen als Argument einer Funktion! Es ist nämlich nicht so, dass sich nach Aktivierung der Funktion der Inhalt des Arguments gleich zweimal im Arbeitsspeicher ausbreitet. Statt eine Kopie anzulegen speichert APL nur einen Pointer.
Das spart Platz, aber nur solange bis in der aufgerufenen Funktion das Argument selbst modifiziert wird. Selbst die kleinsten Änderung (z.B. (↑Arg)←0 ) bewirkt eine umgehende Erstellung einer Kopie der ursprünglichen Variablen.
Das Gleiche gilt für ganz einfache Zuweisungen der Form C←B, selbst wenn B bereits nur einen Pointer zu A darstellt. Und was passiert nun mit dieser verpointerten Kette, wenn A bzw. B modifiziert wird?
"Sparsam" vollständig lesen
Sunday, 20. May 2007
In der Regel befassen sich APL-Tagungen mit Themen wie "Problem X leicht und schnell gelöst mit APL", "So geht es mit APL" oder "APL und der Rest der Welt". Und es ist tatsächlich so: Mit APL lassen sich wichtige Anwendungen leichter und schneller realisieren.
Aber manchmal lernt man bei besagten APL-Treffen interessante Dinge außerhalb des heilen APL-Universums, gute Dinge aus einer anderen Welt, in der normalerweise das Böse herrscht. So war es vor einer Woche in Bingen. Bernd zeigte, wie man APL2 über die Java-Schnittstelle mit Open Office verbinden kann. Ich bin ihm dankbar für die ausführliche Einführung in die Welt der alternativen, offenen Software für Büroanwendungen.
Denn es ist alles vorhanden, was ich brauche, und das zu einem wirklich günstigen Preis, nämlich kostenlos. Aus Sicht eines Anwenders ist auch die Kompatibilität mit den MS Office Formaten vollkommen zufrieden stellend. Leider spielt das auch für mich eine wesentliche Rolle.
"Open statt Microsoft" vollständig lesen
Monday, 19. February 2007
Abstürzende Software ist ärgerlich. Aber das kommt selbst bei den besten Exemplaren dieser Spezies vor. Keine einigermaßen komplexe Anwendung ist fehlerfrei - solange Menschen ihre Finger im Spiel haben. Irren ist eben menschlich. Ich bin gespannt, wann wir endlich in der Lage sind, die Fehlerfreiheit von Programmen maschinell nachzuweisen.
Solange das nicht möglich ist, müssen wir mit allzu menschlichen Fehlern leben. Selbst APL ist davor nicht gefeit. Gerade beim Test neuer Features bringe ich ab und zu eine APL-Sitzung zum Absturz. Es passiert auch schon mal, dass ich durch wochenlange intensive Entwicklung einer APL2-Anwendung den dazugehörigen Workspace zerraspelt vorfinde. Aber stets hilft hier die )clear- )copy - )save - Sequenz.
Das alles kommt so selten vor, dass man getrost APL-Systeme als äußerst zuverlässig und stabil bezeichnen kann.
Auch gängige Anforderungen an die Kompatibilität innerhalb der APL-Versionen eines Herstellers werden zufriedenstellend erfüllt. Selbst eine Migration von APL-Anwendungen auf Vorversionen ist mit den üblichen Einschränkungen möglich.
Ganz anders bei MS Access. Ich habe selten eine Anwendung so schnell wegen simpelster Probleme komplett abstürzen sehen. Es genügte schon, eine mdb mit einem ins leere gehenden Verweis zu übernehmen. Auch bei der Aufwärtskompatibilität von Version 10 nach 11 liegt offensichtlich einiges im Argen.
Ich will nicht wissen, wie viele Entwickler bei Kleinstweich an Access rumentwickeln, es werden garantiert mehr sein als alle Entwickler von APL-Systemen zusammengenommen. Ich kann mich des Eindrucks nicht erwehren, dass in den vorliegenden Fällen die Softwarequalität umgekehrt proportional zur Größe der Programmierteams ist.
Sunday, 11. February 2007
Von "Multi-row Fetch" oder "Multi-row Insert" hatte ich bisher nichts gehört, bis mich David fragte mich heute morgen danach fragte. Ein APL2-Fan wünscht sich wohl, dass der AP127 diese DB2-Features nutzt. Recht hat er.
Seit der Version 8 bietet die Programmierschnittstelle der DB2 für z/OS die Möglichkeit, mit nur einem Fetch auf mehr als nur eine Zeile des Resultsets zuzugreifen. Eine sehr sinnvolle Erweiterung, die mit der Version 8.2 dann auch für andere DB2-Plattformen zur Verfügung gestellt wurde. Es liegt wohl nur an der Beschränkheit der Mainstream-Programmiersprachen, dass obwohl ein SQL-Select eine Menge von Tabellenzeilen als Ergebnis ergibt, aber auf Elemente dieser Menge nur einzeln zugegriffen werden kann - Zeile nach Zeile per Schleife.
Für APL mit seiner hervorragenden Fähigkeit, komplette Datenstrukturen verarbeiten zu können, stellt diese Einschränkung eher einen ärgerlichen Logikbruch dar. Nur gut, dass mit dem AP127 per Parameter für den Fetch mehrere Ergebniszeilen mit einer Anweisung zum APL2 übertragen werden können.
"Das passt" vollständig lesen
Sunday, 21. January 2007
Nach nun mehr als 30 Jahren ergab sich die Gelegenheit, mich wieder intensiver mit den Grundlagen der Mathematik zu beschäftigen. Der Mathe-Kurs für Informatiker im ersten Semester erinnert natürlich sehr an des 1.Semester eines Mathematikers: Mengenlehre, ein wenig Algebra, schon mehr Lineare Algebra und natürlich die Anfänge der Analysis.
Für mich ist das mehr als nur eine Wiederholung. Lineare Algebra macht mir heute wesentlich mehr Spaß als zu Beginn meines Studiums. Das gleiche gilt für die Algebra. Meine Zuneigung zu ihr habe ich ja erst im Hauptstudium entdeckt. Dazu war der richtige "Lehrer" nötig.
Heute ist es für mich wesentlich einfacher, mathematische Probleme zu lösen. Das liegt nicht nur daran, dass ich eine komplette Mathe-Ausbildung genossen habe. Ich habe auch noch APL zur Unterstütztung. Die öde Rechnerei zu Fuß ist passe. So ist das Produkt von Matrizen mit der Eingabe von nur fünf Zeichen zu berechnen, die Inverse benötigt gar nur zwei. Und das ohne jegliche eigene Programmierung.
Ebenso wenig stellt die Berechnung von Eigenwerten und -vektoren eine zeitraubende Aufgabe dar. APL hilft dem Mathematiker sich mit den wesentlichen Dingen zu beschäftigen.
"Das muss mal geschrieben werden" vollständig lesen
Thursday, 11. January 2007
Es war im Frühjahr 2005, vor etwas weniger als zwei Jahren. David arbeitete an der COM-Schnittstelle für APL2 und ich durfte sie hier und da testen. Parallel arbeitete ich an einem Vortrag für die kommende Tagung der GSE APL2-Arbeitsgruppe. Irgendwie schien es nahe liegend, in den Vortrag helfend die MS Agents einzubeziehen.
Die Idee war nicht neu: Im Mai 1999 hatte ich mir von Merlin und Konsorten einige Erklärungen zu dem damals neuen APL2-Runtime Feature (das es inzwischen so auch nicht mehr gibt) abnehmen lassen. Zur Programmierung der Agents bot sich damals VBA unter Powerpoint an, obwohl ich auch APL+Win hätte nehmen können - APL2 dagegen nicht.
Ich versuchte vor zwei Jahren also, die Szenarien, die ich 1999 in VBA entwickelt hatte, mit APL2 und der neuen COM-Funktion nachzubauen. Das klappte erwartungsgemäß auch ohne prinzipielle Probleme. Nur zwei Dinge konnte ich nicht wie gewünscht umsetzten:
"Bookmarks" waren nicht umsetzbar, "Housekeeping" erst nach Ende einer Szene nur händisch oder durch Setzen von ⎕DL. Der Grund für beides war die damals fehlende Unterstützung für COM-Events.
Und die gibt es inzwischen - seit Service Level 7 - und damit konnte ich mir nun beide Wünsche erfüllen.
"Geschafft" vollständig lesen
Wednesday, 13. December 2006
So überschrieb Alan Zeichick seinen Blog-Eintrag zu 40 Jahre APL. Für mich ist Alan ein APL-Unbekannter. Nach eigener Aussage hat er Ende der 70er Jahre mit APL gearbeitet. Das kann aber nicht sehr ernsthaft gewesen sein: "I have no idea why we had APL on our System/370; it was never used for anything but fooling around."
Ich habe einige Ideen, wozu er und seine Kollegen hätten APL sinnvoll einsetzen können. Viele haben das ja gerade zu der Zeit getan. Dies ist übrigens auch heute noch eine wahre Aussage - nicht dass jemand jetzt auf die Idee kommt zu meinen, APL sei heute tot. Dem ist glücklicherweise nicht so.
Doch weiter zu Alan's Blog-Eintrag "Amazingly, IBM still sells APL tools today, 40 years later ...". Aber das sollte Dich doch nicht wirklich überraschen, Alan, denn Gutes hält sich ewig.
"You can perform complex calculations with only a few characters; designing algorithms to be concise (and often unreadable) is a marvelous talent." Talent hin oder her, die Fähigkeit, Algorithmen prägnant zu formulieren, ist auch eine typisch mathematische Eigenschaft. APL ist hier genauso lesbar oder unlesbar wie Mathematik. Und diese Präzision, die dem mathematischen Denken inne wohnt, ist Basis für die erstaunlichsten Fortschritte in den letzten Jahrhunderten.
"Sadly, I didn't spend enough time with APL to develop much skill. My "real" work involved PL/1, COBOL and FORTRAN, and noodling with APL was essentially a hobby." Dem kann man nur zustimmen. Tatsächlich ein trauriges Leben als ITler.
Tatsächlich startet Alan's Beitrag zur APL-Geburtstagsparty nicht sonderlich stark. Macht nichts, denn das Ende ist herrlich ("that article" meint den Beitrag zu APL in en.wikipedia.org):
"However, that article merely scratches the surface, and doesn't show the beauty and elegance of APL programming."
Dem ist nichts mehr hinzuzufügen.
|