Saturday, 23. August 2008
So steht es im APL2 User's Guide unter "Deviations from APL2 Programming Language Reference": "Any usage of bracket indexing in a selective assignment expression, such as
(2↑V[⍳4])←3
gives SYNTAX ERROR."
Das hat bisher auch stets so "funktioniert". Ich konnte mich also darauf verlassen, dass vom Host migrierte Funktionen an solch einer inkompatiblen Stelle unterbrochen wurden.
Es ist allerdings nicht nur so, dass Workstation APL2 eine selektive Zuweisung kombiniert mit den eckigen Klammern nicht zulässt, es versäumt in einem Spezialfall sogar die oben beschriebene Fehlermeldung. Hier ist der Fall:
V←(1 2 3)(4 5 6)
(1⊃V)[2]←12
Keine Fehlermeldung, kein SYNTAX ERROR, wie doch im User's Guide angekündigt. Sollte es etwa möglich sein, dass mit "Pick" in einer selektiven Zuweisung die Nutzung von eckigen Klammern möglich wird?
Leider nicht. Die Verarbeitung wird zwar ohne Fehler fortgesetzt, aber im obigen Beispiel bleibt V unverändert, als wäre die betreffende Anweisung nicht vorhanden.
Es ist schon schade, dass diese Form der selektiven Zuweisung auf der Workstation nicht funktioniert (man kann die Inkompatibilität immerhin leicht mit Hilfe der Indexfunktion beheben). Es wäre allerdings hilfreich, wenn APL2 Workstation auf solche Stellen konsequent mit einem SYTAX ERROR reagiert.
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
Friday, 20. June 2008
Auch mit APL2 Service Level 12 gilt, was bereits für vorangehende Versionen angemerkt wurde:
- APL-Zeichen wie z.B. "∆" in Namen von APL2-Objekten werden in der Titelleiste des Objekteditors nicht als solche angezeigt - soweit man den Schicki-Micki Aero-Desktop verwendet.
Die Korrektur ist wohl schwieriger als man erwarten sollte. Microsoft legt den APL2-Entwicklern (und nicht nur denen) auch schwere Steine in den Weg.
- Bei deaktivierter Benutzerkontensteuerung entfällt die Einschränkung in der readmec.txt bezüglich des Zugriifes auf Dateien im APL2-Installationsverzeichnis.
"CSD 12 nachgetreten" vollständig lesen
Tuesday, 10. June 2008
Was ist das? P15 in Aktion!
Alle beteiligten Variablen sind mit dem neuen Prozessor 15 - "Access Structured Storage" - assoziiert. Dies geschah natürlich bevor der Wert der Variablen erstmalig abgefragt wurde:
'J16 0' 15 ⎕NA 'A'
('ADDRESS' 'A')15 ⎕NA 'ADR'
Die hier erstellte Variable ADR enthält die aktuelle Speicheradresse der Variablen J16. Als Name verweist "A" (und auch die folgenden Namen) auf Speicher außerhalb des APL-Workspaces.
"Prozessor 15 in Aktion" vollständig lesen
Monday, 9. June 2008
EM 2008, Niederland - Italien, nach 20 Minuten, man kann es sehen und auch nachlesen:
Die Niederlande dominieren. In Zahlen:
Torschüsse: 5-2
Ballbesitz in %: 60-40
gewonnene Zweikämpfe in %: 60-40
Steffen Simon kommentiert das so: "Die Holländer im deutlichen Plus".
Die Impire-Ticker ist mehr als ein nettes Spielzeug.
Ursache: Ich verändere eine Variable, hier E8←123.456
Wirkung: Weitere Variablen werden ohne Einwirkung von außen modifiziert.
Bug or Feature?
Ein mögliches Szenario: Bei den beteiligten Variablen handelt es sich um "gemeinsame Variablen" zweier APL2-Sitzungen. Die weitere Sitzung reagiert auf die Veränderung der " Shared Variable" E8 und verändert die anderen gemeinsamen Variablen I4, I2, C1 und B1.
Das wäre leicht zu realisieren, es geht aber einfacher.
Sunday, 8. June 2008
Wer will sich schon auf das blöde Gequatsche von Bela Rethy verlassen. Ton ausschalten und einen Ticker laden ist allemal besser.
Einen richtig guten und schnellen EM-Ticker findet man unter dpc.liga-liveticker.de/index.php oder www.dpc.de.
Vor allem die aktuellen Zahlen zu Ballbesitz, Ballkontakten, Zwieikämpfen und gewonnen Zweikämpfen geben meistens ein besseres Bild über die Leistung der Spieler und Mannschaften als die Kommentare der manchmal von Blindheit geschlagenen Menschen hinter den Mikrofonen. Zahlen lügen eben nicht.
Dass die zdf-Kommentatoren gestern so häufig daneben lagen, ist wohl darauf zurückzuführen, dass sie den zdf-Ticker nicht konsultieren konnten. Der war gestern nur selten verfügbar war. Besser und schneller war da der dpc-Ticker oder auch der stern-Ticker.
Da hat das zdf den Ansturm auf die Server wohl stark unterschätzt.
Saturday, 7. June 2008
E8
0
I4
0 0
⎕AF C1
0 0 0 0 0 0 0 0
8 8⍴B1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Keine Frage, alle Variablen sind irgendwie 0. Aber was passiert hier?
"Was ist das?" vollständig lesen
Saturday, 31. May 2008
Eine der wesentlichen Neuerungen der CSD 12 betrifft die DB2-Schnittstelle:
"As of Service Level 12, AP 127 has been re-written to use the CLI interface to DB2."
Dahinter steckt eine große Erleichterung: Nie wieder muss ich APL2 an eine DB2-Datenbank binden bevor ich auf diese per AP127 zugreifen kann.
Aber Vista zerstört so manche Verbesserung: Nach Installation der CSD 12 funktionierte das Deklarieren einer gemeinsamen Variablen mit dem AP127 schlicht und ergreifend nicht. Jeder Versuch brachte nur einen Kopplungsgrad von 1, einen zuwenig, um mit dem AP127 sprechen zu können.
Und wer stand wohl zwischen APL2 und dem AP127? Wie so oft die Benutzerkontensteuerung. Erst nachdem ich sie komplett ausgeschaltet hatte, konnte ich auf eine DB2-Datenbank zugreifen.
Netter Nebeneffekt: Bein Starten von Vista taucht nebenstehende DB2-Fehlermeldung nicht mehr auf und mit DB2 lässt sich wieder so bequem arbeiten wie unter XP.
Aber das ist nicht der einzige Grund, die Benutzerkontensteuerung entgegen der Empfehlung von Mickeysoft auszuschalten.
Tuesday, 13. May 2008
Eigentlich mag ich VMware, auf jeden Fall gefällt mir das Konzept. Daher habe ich mir letzte Woche die Workstation 6 besorgt, um aus einem realen XP-Rechner einen virtuellen zu machen - sozusagen als Sicherung.
Die Idee gefällt mir immer noch, aber bei der Ausführung hapert's doch erheblich.
Ich habe nun mit dem Workstation 6 Converter drei Versuche unternommen, eine virtuelle Kopie des XP-Rechners zu erstellen. Der erste Versuch endet bei 99% Fertigstellung, auch nach einer Nacht wurden die 100% nicht erreicht. Die nahezu fertige VM war möglicherweise auch nahezu nutzbar, aber eben nicht komplett.
Die zwei folgenden Versuche konnten mit jeweils einer ordnungsgemäß fertiggestellten VM beendet werden, aber weder mit Workstation 6 noch mit dem Player konnten die Maschinen vollständig gestartet werden.
Es gibt wohl noch einige Schrauben, an denen ich beim Bau der Virtuellen Maschine drehen muss.
Monday, 12. May 2008
Zu den Neuerungen des Service Level 12 gehört mit dem P15 ein neuer Assoziierter Prozessor. Auf den ersten Blick ähnelt er konzeptionell dem P12 "Files as Variables", nur dass hier nicht Dateien wie APL-Variablen behandelt werden, sondern Speicher außerhalb des APL2-Arbeitsbereiches.
Diese Neuerung ist für mich die große Überraschung und in ihrer Auswirkung auf das Arbeiten mit APL2 schwer einschätzbar.
Dagegen offenbart sich der Nutzen der folgenden Erweiterungen mehr oder weniger sofort:
"Großes Kino (Folge 2)" vollständig lesen
Sunday, 11. May 2008
Einen Monat früher, als ich erwartet habe ist die CSD 12 für Workstation APL2 verfügbar. Dass mit diesem Service Level die Ausführung von Stored Procedures durch den AP127 möglich wird oder ActiveX Steuerelemente für Dialoge genutzt werden können, war vorhersehbar. Beides bietet weite Felder für neue Anwendungen.
Daneben wartet die CSD 12 mit einer großen und vielen kleineren Überraschungen auf. Die vollständige Liste der Neuerungen findet man wie üblich in der readmec.txt im APL2-Installationsverzeichnis. Hier nur eine Auswahl, die Reihenfolge ist mehr oder weniger willkürlich:
"Großes Kino (Folge 1)" vollständig lesen
Sunday, 27. April 2008
Die meisten Abweichungen zwischen APL2 Versionen für den Mainframe und für Workstations führen bei Ausführung auf einer Workstation umgehend zu einem Fehler. Bei selektiven Zuweisungen wäre das z.B. ein SYNTAX ERROR. So ärgerlich das auch sein mag - vor allem, wenn sie zu Hunderten auftauchen - man kann die Inkompatibilität stante pede beheben. Die Diagnose liegt auf Hand, mit der Behandlung kann sofort begonnen werden.
Leider ist dies nicht immer der Fall. Die fehlende Füllfunktion für den Each-Operator ("No fill function is implemented for the Each operator") muss nicht zum sofortigen Abbruch der betroffenen Anweisung führen. Die Auswirkungen der Inkompatibilität können auch erst viel später in den unendlichen Tiefen einer komplexen Anwendung auftreten.
So geschehen mit
⍕¨NUM_ARRAY
Wie häufig ist das rechte Argument von Format hier numerisch, im vorliegenden Fall allerdings auch leer. Das Ergebnis ist natürlich (wegen "Each") wiederum eine leere Struktur, aber leider eine numerische und keine alphanumerische, wie vernünftigerweise zu erwarten wäre - und wie es APL2 Mainframe auch vorsieht.
"Noch tückischer" 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?
Sunday, 13. April 2008
Nicht ganz so lange kann der Test auf Identität jeweils zweier aufeinanderfolgender Zeichenketten in einem Vektor aus 1 Million solcher Elemente dauern. Allerding nur auf dem Mainframe und mit "N-wise Reduce":
2≡/VEC
So harmlos dieser Ausdruck auch aussieht, er hat es in sich. Für den vorliegenden Fall langer Vektoren VEC mit relativ kurzen Zeichenketten (z.B. mit Länge 10) als Elemente habe ich nicht die Geduld gehabt ein Ergebnis abzuwarten. Denn selbst eine Schlewife, in deraufeinanderfolgende Vektorelemente vergleichen werden, wäre schon lange mit dem Thema durch gewesen. Erst rech natürlich die typische APL-Lösung ohne N-wise Reduce, selbst bei mehr als 1 Million zu vergleichender Objekte.
Später habe ich erfahren, das dieser Ausdruck mit den Daten wie hier beschrieben auf einem IBM Mainframe nach ca. 38 Stunden mit dem Ergebnis rausrückte. Für einen heutigen Großrechner eine halbe Ewigkeit.
"Eine Ewigkeit" vollständig lesen
|