Monday, 17. April 2006
... mag David den P12 nicht? Warum zieht er den anspruchsvollen AP210 einem einfachen "File as Variable" vor?
Wenn ich schon vor einigen Jahren für den P12 die Sicht auf Dateien als Byte-Stream gewünscht habe und dies dann von Nancy auch so vorgesehen wurde, sollte ich dieses Feature zumindest promoten.
Mit dem P12 assoziiert man eine Datei mit einem Variablennamen. Danach kann man auf die Datei fast genauso zugreifen wie auf APL-Variable. Bei der Assoziierung muss man noch eine Struktur für die Variable definieren. Dies kann für flache Dateien eine Vektor von Zeichenvektoren oder Zeichenmatrizen sein.
Das waren die Formate, die für Flatfiles von Anfang an vorgesehen waren. Neu dazugekommen, und das auch nur für die Workstation-Plattformen, sind später Dateien als " Simple Character Vector" - Byte Streams:
"Each byte in the file is a single element in the character vector. Control characters, including line delimiters, are not handled in any special way. They are regular elements of the character vector." (APL2 User's Guide, S.165) Und so geht's:
"Warum nur, warum ..." vollständig lesen
Mit Service Level 8 wird es ohne Umwege über Java, C-Programmierung oder VB möglich sein, aus einem APL2-Interpreter heraus weiter Interpreter zu starten und zu nutzen. David nennt Letztere "Slave Interpreter".
Ich bin mir noch nicht vollkommen schlüssig, wozu das gut sein soll.
Eine Anwendung wäre "Namescope Isolation", Eingriffe in andere Workspaces ohne mögliche Namenskonflikte befürchten zu müssen. Dazu habe ich bisher Namespaces genutzt, und dazu wurden Namespaces auch erfunden.
Eine weitere Anwendung wäre "Multi-Threading". Dies scheint zumindest mit der vorgesehenen externen Funktion nicht ohne Weiteres zu funktionieren. Vielleicht ist dies irgendwann mal Anlass für ein Requirement.
Das Starten eines Slave Interpreters mit APL2PIA erzeugt keinen neuen Prozess und nicht mal einen eigenen Thread im aufrufenden APL2-Prozess. Es bleibt bei den beiden Threads, die APL2 für sich wofür auch immer anlegt. Nur etwas mehr Speicher für den Prozess des "Master Interpreters" wird allokiert, wenn dieser einen Slave Interpreter startet.
Auf jeden Fall ist (nicht nur) in diesem Zusammenhang die von mir vor Jahren gewünschte und inzwischen verfügbarer externe COPY-Funktion offensichtlich sehr nützlich.
Sunday, 16. April 2006
Ich dachte schon, ich könne Java loswerden, um das eine oder andere meiner APL2-Tools im Hintergrund laufen zu lassen.
Dieses kleine Helferlein gibt mir einen Überblick über die Umgebung meiner aktuellen APL2-Sitzung. Damit ich es von meiner Sitzung aus starten kann und es nicht sofort wieder beenden muss, um die Session für Eingaben wieder entsperrt zu bekommen, wird es über Java in einem eigenen Thread aufgerufen. Java wird also nur benötigt, um vom APL2 aus eine weitere APL2-Sitzung in einem eigenen Thread starten.
Nun wird es mit dem neuen Service Level eine externe Funktion geben, mit der aus einer APL2-Sitzung ein weiterer APL2-Interpreter gestartet werden kann. Dort können dann beliebige APL2-Anweisungen ausgeführt werden. Kling doch so, als könnte ich mit diesem neuen Feature den Umweg über Java loswerden.
"Schade ..." vollständig lesen
Monday, 10. April 2006
Ich hätte ihn fast vergessen: den APL2 Keyboard Handler.
Ich kann mich noch erinnern wie David ihn auf einer GSE Tagung vorstellte. Ich glaube, das war in Augsburg. Enger Tagungsraum, ich kam zu spät und war unkonzentriert. In der Folge habe ich den Keyboard Handler einige male gestartet, konnte aber so recht nichts damit anfangen.
Der APL2 User's Guide widmet dem Handler einen kompletten Abschnitt (Seite 36f):
"The APL2 keyboard handler can also enable you to type APL characters in other applications. To enable APL input in other applications, either open the APL2 Keyboard Handler icon in the IBM APL2 folder or run the APL2KEY.EXE program. Then, select an APL font in the application in which you want to type APL characters."
Das funktioniert auf jeden Fall mit Excel und mit Word, aber leider nicht mit Powerpoint. Auch mein Mail-Client zickt mehr oder weniger. Dafür macht Notepad keine Probleme.
"Vergoldet und Vergessen" vollständig lesen
Thursday, 30. March 2006
APL2 kann ja so schnell sein. Das liegt auch daran, dass die Rechner inzwischen immer leistungsfähiger geworden sind. Wenn ich Folgendes Anfang der 80er - als ich meine ersten APL-Schritte unternahm - auch nur ansatzweise einer 5120 zugemutet hätte, hätte selbige mir die APL-Funktion um die Ohren geschlagen.
Ich habe 9 9x9-Matrizen mit booleschen Werten, organisiert als 9x9x9-Array. Die Aufgabe lässt sich so formulieren:
Finde die Spalten in jeder der 9x9-Matrizen, die mit der entsprechenden Spalte einer anderen Matrix identisch ist. Für zwei Matrizen A und B ist das genau
^/[1]A=B (oder ^⌿A=B)
Dies soll paarweise mit den Ebenen der 9x9x9-Matrix S geschehen:
^/[1]S[i;;]=S[j;;]
"Luftschlösser" vollständig lesen
Wednesday, 22. March 2006
Neuer Rechner, neu installiertes APL2: um auf eine DB2 Datenbanken zugreifen zu können, muss APL2 an diese Datenbank gebunden werden. Oder man greift auf die Datenbank mittels ODBC bzw. dem AP227 zu. Ich ziehe es aber den direkten Weg mit dem AP127 vor. Theoretisch sollte das schneller sein, da der zusätzliche OBDC-Layer fehlt.
Für jede DB2-Datenbank, auf die mit APL2 zugegriffen werden soll, müssen vier Bind-Statements durchgeführt werden. Wie dies geschehen muss, wird in apldb2.bat im ..\samples Verzeichnis der APL2-Installation beschrieben.
Dies führe ich hier nun zum x-ten male aus.
"Immer wieder: APL2 an DB2 binden" vollständig lesen
Wednesday, 8. March 2006
Das ist gar keine so eine schlechte Idee:
Nein, nicht das Anmelden einer Marke "Homologische Algebra" - so etwas tut man nicht. Aber Software zu diesem Gebiet zu entwickeln, das wäre schon eine Herausforderung. Aber leider hatte schon 1982 oder früher jemand diese Idee: J.O.Shallit, damals University of California, betrieb damals "Computational Simplicial Homolgy in APL" (APL82 Conference Proceedings). Warum er Homologie mit APL umsetzte, begründete er folgendermaßen:
"In many ways, APL is the ideal language to express algebraic concepts. First, its function-oriented structure applies naturally in algebraic systems. Second, its powerful array processing allows easy manipulation of matrices. Finally, APL's conciseness and power make development and testing easy"
Dem ist nur hinzuzufügen, dass das heute mit den APL-Implementierungen der 2.Generation mehr den je gilt. Ich kenne auch keine Programmiersprache, die diese Eigenschaften mit APL gemein hat. Java hat dies bestimmt nicht.
Unter uns gesagt, Shallits Aussagen sind nicht nur für algebraische Systeme gültig, sondern auch für viele andere Gebiete, wie z.B. der Versicherungsmathematik. Aber nicht weiter sagen!
Da hatte ich mich in den letzten Jahren meines Studiums mit Homologischer Algebra beschäftigt, um dann schon nach einigen Monaten außerhalb der Uni einen Artikel zu finden, der mein altes Lieblingsthema mit meinem damaligen neuen Lieblingsthema verband. Da fühlt man sich doch gleich zu Hause.
Saturday, 4. March 2006
Bisher kam ich in diesem Blog ohne APL-Zeichen aus. Doch jetzt geht es nicht mehr ohne. Es ist schwer, Lösungen mit APL ohne APL-Zeichen darzustellen.
Sehr schlaue Menschen entschieden mal, die APL-Symbole in den Unicode-Zeichensatz aufzunehmen. Eine der wahren weisen Entscheidungen. Moderne Browser unterstützen Unicode, daher ist es kein Problem APL-Code mit Browsern darzustellen:
"⍎" ist z.B. die Kodierung für "Execute" (⍎).
"A←(1,⍴A)⍴A" wird als A←(1,⍴A)⍴A dargestellt.
Wie dies letztendlich aussieht, hängt von den in den Browser-Einstellungen definierten Zeichensätzen ab.
Durch Nutzung von style-Attributen oder Cascading Style Sheets (css) läßt sich die Darstellung von APL-Sequenzen im Browser noch verbessern, vor allem wenn die unter "font-family" angegebene Schriftart auf dem Rechner installiert ist. Ich werde hier Adrian Smiths "APL385 Unicode" Font eintragen. In der Regel wird es keine Probleme geben, APL-Zeichen auf Rechnern ohne diese Schriftart im Browser darzustellen.
Die Verwendung von "APL385 Unicode" in
"<pre style="font-family:APL385 Unicode;monospace;">A&#x2190;(1,&#x2374;A)&#x2374;A</pre>"
sieht dann so auch:
A←(1,⍴A)⍴A
Thursday, 2. March 2006
Das war mein Wunsch letztes Jahr, der als Requirement in die Liste der GSE-AG APL aufgenommen wurde. Keine Ahnung, wie die anderen Teilnehmer votiert haben. Trotzdem sollte ich jetzt mal genauer formulieren, was ich eigentlich meine. David hatte mir dazu schon ein oder zwei Fragen gestellt.
Leider habe ich sie nicht per E-Mail bekommen. Dort finde ich: "Printing grids would be nice, but it would be a lot of work" und weiter "If they need it immediately, I suggest you build something for them." Das habe ich auch getan mit meiner Excel-Schnittstelle:
Mit den XL_-Funktionen baue ich aus dem APL2 heraus im Excel das Grid noch einmal auf. Das Excel-Grid hat aber keine Verbindung mehr zum APL2, ist also komplett selbständig. Nun kann ich die Druckfunktion mit all ihren Einstellmöglichkeiten nutzen, um das Grid zu drucken.
Dies kann aber nur ein Workaround sein. Schöner wäre eine Lösung, die den APL145 um die Möglichkeit erweitert, ein aktives AP145-Grid zu speichern mit der Möglichkeit, den einen oder anderen Parameter hierzu zu setzen.
Letzteres ist also zu formulieren und zwar in Englisch ...
Thursday, 16. February 2006
Liebes Tagebuch ...
Nein, ich habe und hatte noch nie ein Tagebuch. Einige Monate missbrauchte ich einen kleinen grünen Kalender, um meine Gedanke zu Gott und die Welt nieder zuschreiben.
Hier habe ich nichts dergleichen vor!
Dies soll der Platz sein, um über eine meiner Lieblingsbeschäftigungen zu schreiben: mit APL meinen Rechner zu quälen, mit APL ihm schnell und präzise meinen Willen aufzuzwingen.
Ich sage es gleich: Das klappt seit Jahrzehnten hervorragend. Besser als mit Cobol, Fortran, VB oder Java (oder womit ich das sonst noch versucht habe).
Unsere Welt steht auf dem soliden Fundament der Mathematik. Mit Mathematik lässt sich alles beschreiben, was uns bewegt bzw. was sich um uns bewegt. APL ist eine "mathematische" Programmiersprache. Ergo: mit APL lässt sich die Welt besser beschreiben, als mit Programmiersprachen, die nicht auf mathematische Konzepte zurückgreifen.
Das war einfach und kurz. Wenn es polemisch klingt, war dies beabsichtigt.
Mit APL einen Computer zähmen macht Spaß. Darum soll es mir hier gehen.
|