web-dev-qa-db-fra.com

APL contre A contre J contre K?

Le paysage en langage matriciel, bien que fascinant, prête à confusion sans fin. Y a-t-il une raison de choisir l'un de J ou K ou APL ou A? Aucune de ces options ne semble être open source - existe-t-il des versions open source? J'adorerais élargir mon esprit, mais je reste confus.

74
fogus

Les différences entre ces langues sont relativement subtiles. APL "propre" présente les avantages et les inconvénients de la notation symbolique d'origine. (Il y a eu des changements mineurs qui ont été apportés au jeu de symboles au fil des ans, mais ils sont tous assez fidèles à la vision d'origine.)

Le langage A + est disponible en open source. Il s'écarte considérablement des APL "classiques", mais leur ressemble en conservant la plupart des jeux de caractères principaux. J'ai l'impression qu'il n'a pas été mis à jour avec les changements technologiques. C'était un précurseur de K.

Les langues de la famille de langues de tableau qui se sont écartées du jeu de caractères APL distinctif incluent J, K et Nial. Nial utilise des mots anglais au lieu de symboles et dispose d'un interprète open source appelé Q'Nial. K et J reposent principalement sur des symboles, mais ceux-ci sont tirés du jeu de caractères ASCII. Les mots peuvent être utilisés à la place des symboles dans ces langues, cependant, simplement en attribuant des définitions.

La famille de langages de programmation APL est principalement propriétaire depuis l'apparition initiale d'APL en tant que produit IBM en 1964. Les langages de baie propriétaires semblent avoir plus de support et une évolution plus rapide des nouvelles capacités que les alternatives open source à l'heure actuelle. Je ne sais pas comment tous les concurrents se comparent, mais Dyalog APL a certainement travaillé activement pour promouvoir leur implémentation du langage en tant que technologie actuelle. APL2000 propose des produits pour Unix, Linux et Windows, y compris VisualAPL pour .Net. MicroAPL Ltd propose APLX.

K est un langage spécialisé qui n'est plus commercialisé seul. Kx Systems commercialise plutôt la base de données Kdb + et son langage Q (requête), tous deux écrits en K. C'est un puissant outil spécialisé, conçu pour le traitement à grande vitesse des données en streaming. Elle s'écarte considérablement de l'approche APL d'origine. Les produits Kx Systems sont chers et leurs utilisateurs travaillent principalement dans la finance.

APL a été envisagé et principalement conçu par Ken Iverson. Après une carrière complète d'application et de perfectionnement de l'APL dans les applications commerciales, il s'est tourné vers la tâche de faire une révision "rationalisée", qui corrigeait les aspects du langage dont il s'était trouvé insatisfait au fil des ans. Cette nouvelle interprétation du thème s'appelle J. Les différences entre J et APL sont esquissées dans un article sur le wiki J Software. Un changement notable est l'élimination de la syntaxe d'indexation des tableaux. La plus grande caractéristique, cependant, est la forme tacite, dans laquelle les programmes sont écrits en composant des fonctions sans référence à leurs arguments. Tacit J est étroitement lié au style "sans point" que l'on trouve dans les langages de programmation fonctionnels, mais diffère en ce que cette forme est fondamentale pour le langage J. Les symboles ASCII utilisés dans J peuvent être plus difficiles à lire que les caractères APL plus distinctifs.

Pour une personne souhaitant apprendre une langue de tableau, mon conseil est de choisir parmi Dyalog APL, APLX, J et Q'Nial. Dyalog APL (en particulier pour Windows) ou APLX (en particulier pour Linux) sont probablement les meilleurs pour quelqu'un qui veut utiliser le symbolisme de base qui est si distinctif pour APL, et qui veut une connexion forte avec la communauté APL dans son ensemble. J peut être le meilleur pour ceux qui veulent créer des applications Web ou se concentrer sur les mathématiques (comme Project Euler) et surtout ceux qui sont fascinés par le style tacite qu'il met en valeur. Q'Nial est ce que je choisirais si ma priorité était sur l'open source, mais seulement si cette priorité ne signifiait pas également attendre le support d'une communauté OS active.


MISE À JOUR: J 7.01 a été publié avec le code open source sous GPL 3. De plus il y a Kona , une variante sur K. Ceux-ci augmentent les options pour les langages de tableaux open source .

MISE À JOUR par Tobia: GNU APL est disponible sous la GPL. Il suit de près la dernière norme ISO publiée sur le langage APL étendu. Il s'agit d'une excellente implémentation APL open source et est activement développée et maintenue. Il existe également d'autres implémentations intéressantes, par exemple ngn APL , une implémentation étonnamment bien équipée et moderne d'APL écrite en Coffeescript (qui se compile en Javascript.) Les langages de tableaux sont bien vivants en 2015.

120
kaleidic

Pour ajouter plus d'informations ...

Il existe une version open source de K appelée Konahttps://github.com/kevinlawler/kona

Pour q/kdb+, il existe une version d'essai. http://kx.com/download/

Les principales limitations sont le délai d'expiration de 2 heures, la mémoire 32 bits, l'expiration de la licence de 3 mois et la licence elle-même. Cela ne devrait pas être trop gênant si vous voulez simplement jouer et apprendre quelque chose.

Personnellement, j'ai trouvé que q était le plus convivial depuis que KX a traduit les verbes monadiques (argument unique) de K en mots anglais et qu'il y a une bonne quantité de documentation @ http : //code.kx.com . De plus, le système de base de données est extrêmement bien pensé et flexible.

11
Yike Lu

Quelque chose à considérer est le vocabulaire des opérateurs (fonctions d'ordre supérieur).

L'APL d'origine n'a que la dernière et la première réduction d'axe (f/, f⌿), réduction cumulée du dernier et du premier axe (f\, f⍀), plus produit intérieur et extérieur (f.g, ∘.g).

La plupart des APL étendues (par exemple GNU APL, APLX, APL + Win, APL2) n'ajoutent que la boucle each () et la spécification du support d'axe (f[...]).

J, a ajouté un pléthore (appelé adverbes et conjonctions), mais a supprimé les crochets (à la fois l'axe et l'indexation), chaque opérateur (en faveur de l'opérateur de classement plus général) et le dernier axe (cumulatif) réduction.

Le Sharp APL (SAX), aujourd'hui disparu, a conservé à la fois les opérateurs de dernier axe traditionnels et l'indexation des supports, tout en ajoutant de nombreux nouveaux opérateurs de J.

Dyalog APL se rapproche progressivement du vocabulaire de Sharp APL, mais a également incorporé des opérateurs exclusifs à J qui ne l'ont jamais fait dans Sharp APL.

Le tableau ci-dessous compare les vocabulaires de composition J, Sharp APL et Dyalog APL. Les entrées grisées sont en cours de proposition. J, Sharp APL, and Dyalog APL compositions

7
Adám

J est une notation mathématique exécutable qui est entrée et affichée en utilisant des caractères ascii.

C'est aussi un langage de programmation fonctionnel, orienté objet, à part entière.

L'implémentation JSoftware de J (je n'en connais pas d'autres) n'est pas open source, mais son utilisation est gratuite.

Bien que le moteur ne soit pas open source, il existe une bibliothèque utilisateur active de code J à laquelle les gens peuvent contribuer.

J possède une documentation complète et concise http://www.jsoftware.com/help.htm et les membres du forum répondent avec joie et rapidité à toutes les questions ou problèmes et sont désireux d'aider les nouveaux utilisateurs à s'orienter ainsi que avec des problèmes plus avancés.

Soit dit en passant, sur la question de l'Open Source, la documentation (spécification) pour J est complète et n'importe qui pourrait en théorie créer un projet open source pour essayer d'implémenter J s'il le souhaitait.

3
Matthew Brand

ELI est un nouveau langage de programmation multi-plateforme, librement disponible et multiplateforme. Semblable à J et k, il repose sur le jeu de caractères ASCII. Il implémente certaines des fonctionnalités qui (comme je le sais) étaient uniques à k/q/kdb + telles que le type de données temporel et le sous-ensemble SQL intégré .

2
Roman Mishin

Alors que A + semble (malheureusement) être un projet mort, il existe un nouvel interpréteur APL open-source: GNU APL .

1
Brad Ackerman

Je reste également perplexe (APL m'a toujours confondu - heureusement, cela fait 20 ans ou plus depuis que j'ai essayé pour la dernière fois), mais un peu de recherche a trouvé A +, une version open-source de A:

Je n'ai aucune idée qu'il répondra à vos besoins (ou à ceux de quiconque).

0
Michael Burr