Frage

Die Array-Sprache Landschaft, während faszinierend, ist verwirrend zu keinem Ende. Gibt es einen Grund eine von J oder K oder APL oder A zu holen? Keine dieser Optionen scheinen Open-Source zu sein - gibt es Open Source-Versionen? Ich würde lieben, die meiner Meinung nach erweitern, aber ich bleibe benebelt.

War es hilfreich?

Lösung

Die Unterschiede zwischen diesen Sprachen sind relativ subtil. APL „richtige“ hat die Vorteile und Nachteile der ursprünglichen symbolischen Notation. (Es gibt kleinere Änderungen, die den Symbolsatz im Laufe der Jahre gemacht worden, aber sie sind alle wahr genug, um die ursprüngliche Vision.)

Die A + Sprache verfügbar ist Open Source. Sie weicht deutlich von den „klassischen“ APLs, ist aber wie sie in den meisten der Kern-Zeichensatz zu halten. Mein Gefühl ist, dass es nicht mit Technologieänderungen auf dem Laufenden gehalten hat. Es war ein Vorläufer K.

Sprachen in der Array-Sprachfamilie, die aus dem unverwechselbaren APL-Zeichensatz gehören J, K und Nial verlassen haben. Nial verwendet englische Wörter anstelle von Symbolen und hat eine Open-Source-Interpreter genannt Q'Nial. K und J setzen vor allem auf Symbole, aber diese sind aus dem ASCII-Zeichensatz gezogen. Worte können anstelle von Symbolen in dieser Sprache verwendet werden, jedoch einfach durch Definitionen zugewiesen wird.

Die APL-Familie von Programmiersprachen ist seit dem ersten Erscheinen von APL als IBM Produkt in erster Linie proprietäre gewesen 1964. Proprietary Array Sprachen scheinen mehr Unterstützung zu haben und schnellere Entwicklung von neuen Funktionen als Open-Source-Alternativen zu diesem Zeitpunkt. Ich bin mir nicht sicher, wie alle Teilnehmer gegen einen Stapel bis einem anderen, aber Dyalog APL arbeitet sicherlich worden aktiv ihre Umsetzung der Sprache als aktuelle Technologie zu fördern. APL2000 bietet Produkte für Unix, Linux und Windows, einschließlich VisualAPL für .Net. MicroAPL Ltd Angebote APLX.

K ist eine Fachsprache, die nicht mehr auf seinem eigenen vermarktet. Kx Systems anstelle der Vermarktung der Kdb + Datenbank und deren Q (Abfrage) Sprache, die beide in K. geschrieben sind, ist es ein leistungsfähiges spezialisiertes Werkzeug, die für Hochgeschwindigkeitsverarbeitung von Daten-Streaming. Sie weicht erheblich von dem ursprünglichen APL Ansatz. Kx Systems Produkte sind teuer und ihre Nutzer meist Arbeit im Finanzbereich.

APL wurde vorgestellt und vor allem von Ken Iverson gestaltet. Nach einer vollständigen Laufbahn der Anwendung und Weiterentwicklung APL in kommerziellen Anwendungen wandte er sich der Aufgabe, eine „rationalisierte“ Revision zu machen, eine, die die Aspekte der Sprache korrigierte er sich mit über die Jahre unzufrieden gefunden hatte. Dieses frisch auf dem Thema heißt J. Die Unterschiede zwischen J und APL sind in einem Papier über die J Software Wiki skizziert. Eine merkliche Änderung ist die Beseitigung der Array Indexierungs Syntax. Das größte Feature ist aber stillschweigend Form, in den Programme geschrieben werden durch Funktionen ohne Bezug auf ihre Argumente zu komponieren. Tacit J ist eng verwandt mit „Punkt-free“ Stil in funktionalen Programmiersprachen, unterscheidet sich aber dadurch, dass diese Form ist von grundlegender Bedeutung für die J Sprache. Die ASCII-basierte Symbole in J verwendet wird, kann schwieriger zu lesen als die ausgeprägtere APL-Zeichen.

Für eine individuelle wollen eine Reihe Sprache zu lernen, ist mein Rat unter Dyalog APL, APLX, J und Q'Nial auszuwählen. Dyalog APL (insb. Für Windows) oder APLX (insb. Für Linux) sind wahrscheinlich am besten für jemanden, der den Kern Symbolik verwenden möchte, die APL so unverwechselbar ist, und wer will starke Verbindung mit der APL-Gemeinschaft als Ganzes. J kann am besten für diejenigen, die Web-Anwendungen aufbauen wollen, oder konzentrieren sich auf Mathematik (wie Project Euler,) und vor allem diejenigen, die von der stillschweigenden Stil fasziniert sind sie betont. Q'Nial ist das, was ich würde wählen, wenn meine Priorität auf Open Source, aber nur, wenn diese Priorität nicht auch bedeutet die Unterstützung einer aktiven OS-Community erwartet.


UPDATE: J 7,01 hat freigegeben mit Open-Source-Code unter GPL 3. Zusätzlich gibt es Kona , eine Variante Diese erhöhen K. die Optionen für die Open-Source-Array Sprachen.

UPDATE von Tobia: GNU APL avaunter der GPL ilable. Es folgt eng den zuletzt veröffentlichten ISO-Standard auf der Extended APL Sprache. Es ist eine große offene APL Implementierung Quelle und aktiv entwickelt und gepflegt wird. Es gibt noch andere interessante Implementierungen zu, zum Beispiel ngn APL , eine überraschend gut ausgestattete und moderne Umsetzung von APL geschrieben in Coffeescript (die Javascript kompiliert.) Array Sprachen sind lebendig und gut im Jahr 2015.

Andere Tipps

mehr Informationen hinzuzufügen ...

Es ist eine Open-Source-Version von K genannt Kona https://github.com/kevinlawler/kona

Für q/kdb+ gibt es eine Testversion. http://kx.com/download/

Die wichtigsten Einschränkungen sind 2 Stunden Timeout, 32-Bit-Speicher, 3 Monate Ablauf der Lizenz, und die Lizenz. Diese sollte nicht zu stören, wenn Sie nur spielen wollen um und lernen etwas.

Ich persönlich fand q die meisten Benutzer freundlich zu sein, da KX die monadische (Argument) übersetzt Verben aus K ins Englische Wörter und es gibt eine gute Menge an Dokumentation @ http://code.kx.com . Darüber hinaus wird das Datenbanksystem extrem gut durchdacht und flexibel.

Etwas zu prüfen, ist das Vokabular der Operatoren (Funktionen höherer Ordnung).

nur Original-APL hat letzte und erste Achse Reduktion (f/, f⌿), zuletzt und Achse erste kumulative Reduktion (f\, f⍀) sowie innere und äußere Produkt (f.g, ∘.g).

Ausgedehnteste APLs (z.B. GNU APL, APLX, APL + Win, APL2) Nur die jede Schleife () hinzuzufügen, und Achsenhalterung Spezifikation (f[ ] ...).

J, fügte ein Fülle (genannt Adverbien und Konjunktionen), aber entfernt Klammern (beide Achsen und Indexierung), die jeder Operator (zugunsten des allgemeineren Rang Operators) und Last-Achse (kumulativ) Reduktion.

Der jetzt verstorbene Sharp APL (SAX) beibehalten, sowohl die traditionelle Last-Achse Betreiber und Halter Indizierung, während viele von Js neuen Operatoren hinzufügen.

Dyalog APL wird nach und nach das Vokabular von Sharp APL nähert, hat aber auch J-exklusive Betreiber integriert, die es nie in Sharp APL gemacht.

Die nachstehende Tabelle vergleicht J, Sharp APL, und Vokabularen Zusammensetzung Dyalog APL. Die abgeblendet Einträge sind unter Vorschlag. J, Sharp APL und APL Dyalog compositions

J ist eine ausführbare Mathematische Notation, die eingegeben werden, und ASCII-Zeichen angezeigt werden.

Es ist auch ein vollwertiger Funktional, Object Oriented, Programmiersprache.

Die JSoftware Implementierung von J (ich weiß nicht von irgendwelchen anderen) ist nicht Open Source, aber es ist kostenlos zu benutzen.

Auch wenn der Motor nicht Open Source ist, gibt es eine aktive Anwenderbibliothek von J-Code, in dem Menschen beitragen kann.

J verfügt über umfangreiche und übersichtliche Dokumentation http://www.jsoftware.com/help.htm und Forumsmitglieder glücklich und schnell reagieren auf Fragen oder Probleme und sind sehr daran interessiert, um neue Nutzer sind orientiert sowie mit erweiterten Probleme.

Auf der Open-Source-Ausgabe durch die Art und Weise, in die Dokumentation (Spezifikation) für J ist umfangreich und jeder könnte theoretisch ein Open-Source-Projekt erstellen, um zu versuchen J zu implementieren, wenn sie wollen.

ELI eine neu entwickelte, frei verfügbar, plattformübergreifende, Array-Programmiersprache. Ähnlich wie bei J und k es beruht auf dem ASCII-Zeichensatz. Es implementiert einige der Features, die (ich weiß) waren eindeutig k / q / kdb + wie zeitliche Datentyp und integrierte SQL-Subset.

Während A + bis erscheint (leider) ein totes Projekt, gibt es ein neues Open-Source-APL-Interpreter: GNU APL .

Ich bleibe auch benebelt (APL hat mich immer verwechselt - zum Glück ist es gewesen, mehr als 20 Jahre her, dass ich etwas mit ihm versucht), aber ein bisschen suchen hat A + gefunden, eine Open-Source-Version von A:

Ich habe keine Ahnung, es wird Sie (oder jedermann) Bedürfnisse erfüllen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top