StringAPL - die wohl mächtigste Funktion, nicht nur für Strings


  • Was wäre wenn[1] man sowohl HTML parsen, Finanzen berechnen, Fraktale zeichnen oder Primzahlen analysieren könnte, und zwar ein einer Zeile Code? Wenn das Ganze dann noch aussieht wie ein abstraktes Kunstwerk, ist garantiert APL[2] im Spiel :D


    Was ist APL?


    APL ist zunächst eine Programmiersprache[2], die ursprünglich als interaktive Interpreter-Sprache gedacht war. Die größte Besonderheit von APL ist der extrem komprimierte Code. Dieser kommt durch die Tatsache zustande, dass jeder Befehl von einem absonderlichen Zeichen dargestellt wird. APL unterstützt mehrere Datentypen, Schleifen, Funktionen aber vor allem extreme mathematische Möglichkeiten zur Array, Matrizen und Vektor-Verarbeitung. Der einzige Nachteil ist die wirklich kryptographische Syntax.


    Wie sieht das ganze aus?


    Nehmen wir mal an, wir wollen ein Mandelbrot berechnen. Dann ist das hiermit schon getan:
    [Blockierte Grafik: http://q52.imgup.net/apltestb773.png]
    (bitte vorerst den zweiten Parameter komplett ignorieren, dieses Feature ist momentan noch experimentell)


    Wunderschön, nicht :D .


    Was muss ich tun um APL zu nutzen?


    Zunächst mal die APL Schriftart[3] installieren. Das ist die EINZIGE Schriftart, welche den APL Zeichensatz darstellen kann. Dazu muss jedes Skript, in welchem die StringAPL Funktion verwendet wird, als UTF8-BOM geöffnet werden (die APL Schriftart lässt sich in SciTe mittel STRG-1, Monospace Font->APL Unicode festlegen und sieht garnichtmal so schlecht aus ^^ ).


    Dann einfach das Beispiel ausprobieren.


    Wie funktioniert die UDF?


    Die UDF basiert auf ngns APL Interpreter in JavaScript. Das ist der einzige benutzbare (offline-) Interpreter, der alle Funktionen von APL beherrscht. Ausgeführt wird das Skript über den IE. Warum nicht in AutoIt? Nun, zunächst ist JS wesentlich schneller und zudem sind es über 7500 Zeilen Code, die sich ziemlich schwer übersetzen lassen ^^ .


    Was kann man damit tun?


    Man kann es sich als eine Art RegEx auf Steroiden vorstellen, das gleichzeitig noch normale Funktionen bietet. Es ist ALLES möglich. Man könnte sogar einen AutoIt-Interpreter in APL schreiben, aber das wäre glaube ich Selbstmord :D



    ______________________________________________________________________________________


    [1] - Wer versteht die Anspielung ;-)
    [2] - http://de.wikipedia.org/wiki/APL_(Programmiersprache) bzw. http://en.wikipedia.org/wiki/APL_(programming_language)
    [3] - http://sites.google.com/site/baavector/fonts

    Dateien

    • StringAPL.au3

      (776,89 kB, 126 Mal heruntergeladen, zuletzt: )
    • Example.au3

      (3,06 kB, 125 Mal heruntergeladen, zuletzt: )

    Einmal editiert, zuletzt von minx ()

  • Also unter Version 3.3.9.5 stürzt das Beispiel beim ersten Aufruf von StringAPL ab (Exit code: -1073741819). In der Funktion selbst scheint der Fehler bei _IECreate zu liegen. Die Datei mit dem Ergebnis wird aber trotzdem korrekt erstellt.