APL contre A contre J contre K?

le paysage du langage array, tout en étant fascinant,prête à confusion. Y a-t-il une raison de choisir J ou K ou APL ou A? Aucune de ces options semblent être open-source -- sont là open source versions? J'aimerais élargir mon esprit, mais je reste confuse.

64
apl j k
demandé sur Tikkanz 2010-10-08 07:35:06

7 réponses

Les différences entre ces langues sont relativement subtiles. APL "correcte" a des avantages et des inconvénients, de l'original de la notation symbolique. (Il y a des changements mineurs qui ont été apportés au symbole au fil des ans, mais ils sont tous assez vrais à la vision originale.)

La+ langue est disponible en open source. Il s'écarte de manière significative des APLs" classiques", mais est comme eux en gardant la plupart des caractères de base. Mon sentiment est qu'il a pas été mis à jour avec les changements de technologie. C'était un précurseur de K.

les langues de la famille array-language qui se sont écartées du jeu de caractères distinctifs de L'APL sont J, K et Nial. Nial utilise des mots anglais au lieu de symboles, et dispose d'un interpréteur open source appelé Q'nial. K et J s'appuient 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 des langages de programmation APL a été principalement propriétaire depuis l'apparition d'APL comme produit IBM en 1964. Les langages de tableaux propriétaires semblent avoir plus de support et une évolution plus rapide des nouvelles capacités que les alternatives open source en ce moment. Je ne sais pas comment tous les concurrents s'affrontent, mais Dyalog APL a certainement travaillé activement à promouvoir leur mise en œuvre de la langue comme technologie actuelle. APL2000 offre des produits pour Unix, Linux et Windows, y compris VisualAPL for .Net. MicroAPL Ltd offre 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 (query), tous deux écrits en K. c'est un outil spécialisé puissant, conçu pour le traitement à haute vitesse des données en continu. Il s'écarte de façon significative de l'approche initiale de L'APL. Les produits Kx Systems sont chers et leurs utilisateurs travaillent principalement dans la finance.

APL a été imaginé et principalement conçu par Ken Iverson. Après une carrière complète d'application et de peaufinage APL dans les applications commerciales, il s'est tourné vers la tâche de faire une "rationalized" révision, une qui a corrigé les aspects du langage, il s'était trouvé insatisfait au fil des années. Ce nouveau point de vue sur le thème s'appelle J. les différences entre J et APL sont esquissées dans un papier sur le wiki du logiciel J. Un changement notable est l'élimination de la syntaxe d'indexation de tableau. 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. Le J tacite est étroitement lié au style" point-free " que l'on retrouve dans les langages de programmation fonctionnels, mais diffère en ce que cette forme est fondamentale pour le J language. Les symboles ASCII utilisés dans J peuvent être plus difficiles à lire que les caractères APL plus distinctifs.

pour un individu qui veut apprendre langage de tableau, mon conseil est de choisir parmi Dyalog APL, APLX, J, et Q'nial. Dyalog APL (esp. Pour Windows) ou APLX (esp. Pour Linux) sont probablement les meilleurs pour quelqu'un qui veut utiliser le symbolisme de base qui est si distinctif à APL, et qui veut une forte connexion avec la communauté APL dans son ensemble. J peut être le meilleur pour ceux qui veulent construire des applications web, ou se concentrer sur les mathématiques (comme le projet Euler,) et surtout ceux qui sont fascinés par le style tacite qu'il met l'accent. Q'nial est ce que je choisirais si mon la priorité était accordée au logiciel libre, mais seulement si cette priorité ne signifiait pas aussi qu'il fallait s'attendre au soutien d'une communauté active de systèmes D'exploitation.

mise à jour: J 7.01 a été publié avec le code source ouvert sous GPL 3. En outre, il y a Kona , une variante sur K. ceux-ci augmentent les options pour les langages de tableau open-source.

mise à jour de Tobia: GNU APL est disponible sous GPL. Il suit étroitement la dernière norme ISO publiée sur le langage APL étendu. Il s'agit d'une excellente mise en œuvre D'APL open source et est activement développé et maintenu. Il y a aussi d'autres implémentations intéressantes, par exemple ngn APL , une implémentation étonnamment moderne et bien décrite d'APL écrite en Coffeescript (qui se compile en Javascript).) Les langages Array sont bien vivants en 2015.

107
répondu kaleidic 2015-04-01 20:43:33

pour ajouter plus d'informations...

il existe une version libre de K appelée Kona https://github.com/kevinlawler/kona

pour q/kdb+ , il y a une version d'essai. http://kx.com/download /

les principales limitations sont 2 heures de temps d'arrêt, 32 bits de mémoire, 3 mois d'expiration de licence, et la licence elle-même. Ceux-ci ne devraient pas être trop gênant si tu veux juste t'amuser et apprendre quelque chose.

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

10
répondu Yike Lu 2017-12-09 13:16:46

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.

l'implémentation JSoftware de J (Je ne connais pas d'autres) n'est pas open source, mais elle est libre à utiliser.

bien que le moteur ne soit pas open source, il existe une bibliothèque d'utilisateurs actifs de code J à laquelle les gens peuvent contribuer.

j a 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 deviennent orientés aussi bien qu'avec des problèmes plus avancés.

sur la question de L'Open Source soit dit en passant, la documentation (spécification) pour J est vaste et n'importe qui pourrait en théorie créer un projet open source pour essayer de mettre en œuvre J si elles le voulais.

3
répondu Matthew Brand 2011-01-03 21:20:41

il faut tenir compte du vocabulaire des opérateurs (fonctions d'ordre supérieur).

APL Original only has last and first axis reduction ( f/ , f⌿ ), réduction cumulée sur le dernier et le premier axes( f\ , f⍀ ), plus produit intérieur et extérieur ( f.g , ∘.g ).

la plupart des APLs étendus (par exemple GNU APL, APLX, APL+Win, APL2) n'ajoutent que la spécification de chaque boucle ( ), et des brackets d'axes ( f[ ... ] ).

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

le défunt Sharp APL (SAX) a conservé à la fois les opérateurs traditionnels du dernier axe et de l'indexage du support, tout en ajoutant de nombreux nouveaux opérateurs de J.

Dyalog APL se rapproche peu à peu du vocabulaire de Sharp APL, mais a également incorporé des opérateurs J-exclusive qui ne l'ont jamais fait en Sharp APL.

le tableau ci-dessous compare les vocabulaires de composition des LPA J, Sharp APL et Dyalog. Les inscriptions grisées font l'objet d'une proposition. J, Sharp APL, and Dyalog APL compositions

3
répondu Adám 2017-01-31 21:12:57

ELI est un nouveau langage de programmation multiplateforme disponible gratuitement. Similaire à J et k, il s'appuie 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 temporal datatype et Inbuilt SQL subset.

2
répondu Roman Mishin 2017-06-20 15:18:24

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

1
répondu Brad Ackerman 2014-07-25 04:49:45

je reste moi aussi confus (APL m'a toujours confondu - heureusement il y a 20 ans ou plus que j'ai essayé pour la dernière fois quelque chose avec elle), mais un peu de recherche a trouvé un+, une version open-source de A:

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

0
répondu Michael Burr 2010-10-08 03:55:42