Top 10 Articles

Zoophilia
Liste de prières et de bénédictions juives
Pastèque
Gmail
Saola
Odnoklassniki.ru
Xeroderma pigmentosum
La maladie de Minamata
Orkut
Liste de missions de maintien de la paix des Nations Unies

News:

APL (langage de programmation)

APL
Paradigme rangée, fonctionnel, structuré, modulaire
Apparu dedans 1964
Conçu près Kenneth E. Iverson
Réalisateur Kenneth E. Iverson
Discipline de dactylographie dynamique
Réalisations principales IBM APL2, Dyalog APL, APL2000, APL pointu
Dialectes A+, Dyalog APL, APLNext
Influencé près notation mathématique
Influencé J, K, Nial

APL (A Programming Ll'anguage) est programmation de rangée langue basée sur une notation inventée en 1957 près Kenneth E. Iverson tandis qu'à Université de Harvard. Il a commencé comme tentative de fournir à notation conformée pour l'enseignement et l'analyse des matières liées à l'application des ordinateurs. Iverson a édité sa notation en 1962 dans un livre intitulé Un langage de programmation. D'ici 1965, un sous-ensemble de la notation a été mis en application comme langage de programmation, puis connu comme IVSYS. Plus tard, avant son dégagement commercial, l'APL a obtenu son nom du titre du livre. Iverson a reçu Récompense de Turing en 1979 pour son travail.

La notation d'Iverson plus tard a été employée pour décrire IBM System/360 usinez l'architecture, une description beaucoup plus concise et exacte que la documentation existante et indiquer plusieurs problèmes précédemment inaperçus. Plus tard, a Selectric le typeball a été particulièrement conçu pour écrire une représentation linéaire de cette notation. Cet aspect distinctif d'APL, l'utilisation d'un jeu de caractères spécial dépeignant visuellement les opérations à exécuter, demeure fondamentalement inchangé aujourd'hui.

Les dispositifs de langue d'APL un ensemble riche d'opérations qui travaillent à entier rangées des données, comme l'ensemble d'instruction de vecteur d'a SIMD architecture. Tandis que beaucoup de langages de programmation exigeraient itération à, par exemple, ajoutez deux rangées ensemble, des fonctions dans l'affaire d'APL typiquement avec des rangées entières immédiatement. En même temps qu'un jeu de caractères spécial où les glyphs représentent des opérations à exécuter, ceci réduit rigoureusement le nombre potentiel de boucles et tient compte de plus petit, des programmes plus concis et plus compacts.

Comme avec tous les langages de programmation qui ont eu plusieurs décennies d'une utilité continuelle, l'APL a évolué sensiblement, généralement d'une façon vers le haut-compatible, de ses dégagements plus tôt. L'APL est habituellement interprétatif et interactif, et comporte normalement lire-évaluer-impriment la boucle (REPL) pour l'entrée de commande et d'expression. Aujourd'hui, presque tout l'appui moderne de réalisations programmation structurée tandis que plusieurs dialectes comportent maintenant une certaine forme de orienté objectivement constructions de programmation.

Table des matières

Histoire

La première incarnation de ce qui était plus tardive pour être le langage de programmation d'APL était un livre décrivant une notation inventée en 1957 près Kenneth E. Iverson tandis qu'à Université de Harvard. Édité en 1962, la notation décrite dans le livre était reconnaissable pourtant éloignée de l'APL.

IBM était principalement responsable de l'introduction de l'APL au marché. En 1965, une partie de la notation a été retouchée et a mis en application comme langage de programmation. L'APL était d'abord disponible en 1967 pour IBM 1130 As APL \ 1130[1]. L'APL a gagné son équilibre sur les systèmes en temps partagé d'unité centrale des années 60 en retard par les années 80. Plus tard, quand convenablement l'exécution du matériel était commencer finalement disponible dans le tôt au milieu des années 80, beaucoup d'utilisateurs a émigré leurs applications à l'environnement de PC.

Interprètes tôt d'IBM APL pour IBM 360 et IBM 370 mis en application par le matériel leur propre gestion à utilisateurs multiples au lieu de compter sur les services de centre serveur, ainsi ils étaient les systèmes en temps partagé dans leur propre droite. D'abord présenté en 1966, APL \ 360 le système était un interprète à utilisateurs multiples. En 1973, IBM a libéré APL.SV ce qui était une suite du même produit, mais qui a offert variables partagées en tant que le moyen d'accéder à des équipements en dehors de du système d'APL, tel que le logiciel d'exploitation classe. Au milieu des années 70, l'interprète d'unité centrale d'IBM a été même adapté pour l'usage sur IBM 5100 ordinateur de bureau, qui a eu un petit tube et un clavier d'APL, quand la plupart des autres petits ordinateurs du temps ont seulement offert le BASIC. Dans les années 80, VSAPL le produit de programme a apprécié l'utilisation répandue avec CMS, TSO, VSPC, et CICS utilisateurs.

Plusieurs sociétés en temps partagé ont pris naissance dans les années 60 et les années 70 qui ont vendu des services d'APL en utilisant des versions modifiées de l'interprète APL \ 360 d'IBM. En Amérique du Nord, meilleur-connue était I. P. Associés de dièse, Scientific Timesharing Corporation, et la société d'informatique (TCC). Avec l'arrivée d'abord des unités centrales moins chères telles qu'IBM 4331 et plus tard le PC, l'industrie en temps partagé a eu tout sauf disparu par le milieu des années 80.

APL pointu était disponible de I. P. Associés de dièse, d'abord sur une base en temps partagé dans les années 60, et plus tard comme produit de programme commençant autour 1979. APL pointu était une exécution avançée d'APL avec beaucoup d'élargissements de langue, comme paquets (la capacité de mettre un ou plusieurs objets dans une variable simple), le système de fichiers, a niché des rangées, et variables partagées.

Les interprètes d'APL étaient fournis par l'autre unité centrale et le mini-ordinateur fabrique aussi bien, notamment Burroughs, CDC, Data General, DEC, Harris, Hewlett-Packard, Siemens, Xerox, et d'autres.

APL2

Commençant au début des années 80, développement d'IBM APL, sous la conduite du DR Brun de Jim, mis en application une nouvelle version de la langue d'APL a contenu en tant que son perfectionnement primaire dont le concept rangées nichées là où une rangée peut contenir d'autres rangées, plus les nouveaux dispositifs de langue qui ont facilité l'intégration des rangées nichées dans le déroulement des opérations de programme. Ken Iverson, plus dans la commande du développement de la langue d'APL, IBM gauche et jointif I. P. Associés de dièse là où il, entre autres, a dirigé l'évolution de l'APL pointu pour être plus selon sa vision. Iverson plus tard a développé Langue de J.

Car d'autres fournisseurs étaient occupés à les interprètes se développer d'APL pour le nouveau matériel, notamment Unix- basé micro-ordinateurs, APL2 était presque toujours la norme choisie pour de nouveaux développements d'interprète d'APL. Même aujourd'hui, la plupart des fournisseurs d'APL citent la compatibilité APL2, qui approche seulement 100%, comme point de vente pour leurs produits.

APL2 pour IBM les ordinateurs centraux est encore aujourd'hui disponible, et était d'abord disponible pour CMS et TSO autour 1980. L'édition du poste de travail APL2 (Windows, OS/2, AIX, Linux, et Solaris) a suivi beaucoup plus tard au début des années 90.

Micro-ordinateurs

La première exécution de micro-ordinateur de l'APL était sur le MCM/70, 8008- processeur basé, en 1973. A Petit APL pour Intel 8080 EMPL appelés ont été libérés en 1977, et Softronics APL, avec la plupart des fonctions du plein APL, parce que 8080 systèmes basés de CP/M ont été libérés en 1979.

En 1977, a été libéré un niveau APL d'affaires connu sous le nom de TIS APL, basé sur le processeur Z80. Il a comporté l'ensemble complet des fonctions de dossier pour l'APL, plus un plein écran entré et la commutation de bons et gauches arguments pour la plupart des opérateurs dyadiques en présentant le ~. préfixe à toutes les fonctions dyadiques de caractère simple comme - ou à/.

La tête d'avant-garde APL était disponible pour Z80 CP/M- processeurs basés vers la fin des années 70. APL.68000 libéré par TCC au début des années 80 pour Motorola 68000- processeurs basés, ce système servant de base au produit limité de MicroAPL APLX. I. P. Les associés de dièse ont libéré une version de leur interprète d'APL pour le PC et le PC/370 d'IBM - pour le PC d'IBM, émulateur a été écrit qui a facilité reusing une grande partie du code d'unité centrale d'IBM 370. Discutablement, l'interprète d'APL le plus connu pour le PC d'IBM était STSC's APL*Plus/PC.

Au début des années 80, Analogic Corporation développée La machine d'APL, qui était traitement matriciel l'ordinateur a conçu pour être programmé seulement dans l'APL. Il y avait réellement trois unités de traitement, le poste de travail de l'utilisateur, PC D'IBM, où des programmes ont été suivis et édités, Motorola 6800 processeur qui a couru l'interprète d'APL, et la machine cellulaire analogique qui a exécuté les primitifs. À l'heure de son introduction la machine d'APL était probable le système d'APL le plus rapide disponible. Bien qu'un succès technologique, la machine d'APL ait été un échec de vente. La version initiale a soutenu un processus simple à la fois. Lorsque le projet a été discontinué, la conception avait été remplie pour permettre les utilisateurs multiples. Comme aparté, un aspect peu commun de la machine d'APL était que la bibliothèque des zones de travail a été organisée tels qu'une fonction ou une variable simple qui ont été partagées par beaucoup de zones de travail a existé seulement par le passé dans la bibliothèque. Plusieurs des membres du projet de machine d'APL avaient précédemment passé un certain nombre d'années avec mettre en application de Burroughs APL \ 700.

À une étape, Microsoft Corporation a projeté libérer une version d'APL, mais ces plans non jamais matérialisés.

Une début publication 1978 de Rodnay Zaks de Sybex était Une exécution microprogrammée d'APL ISBN 0895880059 ce qui est la liste complète et totale de source pour le microcode pour un PDP/le processeur LSI-11 mettant en application l'APL. Ceci a pu avoir été la substance de sa thèse de PhD.

Vue d'ensemble

[recherche originale ?]

Au-dessus d'un ensemble très large de domaines de problème (maths, science, technologie, conception d'ordinateur, robotique, visualisation de données, science actuarielle, DP traditionnel, etc.) l'APL est extrêmement un puissant, expressif et le langage de programmation concis, a typiquement placé dans un environnement interactif. Il a été à l'origine créé, entre autres, comme manière de décrire des ordinateurs, en exprimant notation mathématique d'une manière dont rigoureuse pourrait être interprété par un ordinateur. Il est facile d'apprendre mais quelques programmes d'APL peuvent prendre un certain temps de comprendre, particulièrement pour un venu. Peu d'autres langages de programmation offrent la fonctionnalité complète de rangée de l'APL.

À la différence des langages de programmation traditionnellement structurés, le code dans l'APL est typiquement structuré comme chaînes de univalent ou dyadique fonctions et opérateurs action dessus rangées. Car l'APL a beaucoup non standard primitifs (fonctions et opérateurs, indiqués par un symbole simple ou une combinaison de quelques symboles), elle n'a pas la fonction ou priorité d'opérateur. Les réalisations tôt d'APL n'ont pas eu commandez les structures (faites ou tandis que des boucles, si-alors-d'autre), mais en employant des opérations de rangée, utilisation de programmation structurée les constructions étaient non nécessaires simplement. Par exemple, la fonction d'iota (qui rapporte une rangée unidimensionnelle, ou vecteur, de 1 à N) peut remplacer la pour-boucle itération. Des réalisations plus récentes d'APL incluent généralement les structures complètes de commande, ainsi l'écoulement de structure de données et de commande de programme peut être clairement et a proprement séparé.

L'environnement d'APL s'appelle l'a zone de travail. Dans une zone de travail l'utilisateur peut définir des programmes et des données, c.-à-d. les valeurs de données existent également en dehors des programmes, et l'utilisateur peut manoeuvrer les données sans nécessité pour définir un programme. Par exemple,

assigne vecteur valeurs 4 5 6 7 à N ;

additionne 4 à toutes les valeurs (donnant 8 9 10 11) et les imprime (une valeur de retour non assignée à la fin d'un rapport à une variable en utilisant la flèche de tâche est montré par l'interprète d'APL) ;

imprime la somme de N, c.-à-d. 22.

L'utilisateur peut sauver la zone de travail avec tous les valeurs, programmes et statut d'exécution.

L'APL est bien connu pour son usage d'un ensemble de nonASCII symboles qui sont une prolongation d'arithmétique traditionnelle et notation algébrique. Avoir des noms simples de caractère pour SIMD les fonctions de vecteur est à sens unique que l'APL permette la formulation compacte des algorithmes pour la transformation de données telle que le calcul Le jeu de Conway de la vie dans une ligne de code (exemple). Dans presque toutes les versions d'APL, il est théoriquement possible d'exprimer n'importe quelle fonction calculable en une expression, c'est-à-dire, dans une ligne de code.

En raison de sa nature condensée et caractères non standard, l'APL s'est parfois nommé « langue d'écriture seulement« , et lecture qu'un programme d'APL peut au début se sentir comme le décodage Hiéroglyphes égyptiens. En raison du peu commun jeu de caractères, utilisation de beaucoup de programmeurs spéciale claviers avec des keytops d'APL pour écrire le code d'APL. Bien qu'il y ait de diverses manières d'écrire le code d'APL en utilisant seulement des caractères d'ASCII[2], dans la pratique, il n'est presque jamais fait. (Ceci peut être pensé pour soutenir les thèses d'Iverson environ notation comme outil de pensée[la citation a eu besoin].) Les la plupart sinon toutes les réalisations modernes emploient les dispositions de clavier standard, avec les tracés spéciaux ou Rédacteurs de méthode d'entrée aux caractères de l'accès non-ASCII. Historiquement, la police d'APL a été distinctive, avec les lettres d'italique majuscule et les numéros et les symboles droits. La plupart des fournisseurs continuent à montrer le jeu de caractères d'APL dans une police à la carte.

Les avocats de l'APL réclament que les exemples du prétendu code d'écriture seulement sont presque invariablement des exemples des erreurs de programmation pauvres de pratique ou de débutant, qui peuvent se produire dans n'importe quelle langue. Les avocats de l'APL réclament également qu'ils sont plus productifs bien avec l'APL qu'avec des langages de programmation plus conventionnels, et que travailler le logiciel peut être mis en application dans loin moins de temps et avec loin moins de programmeurs qu'en utilisant l'autre technologie. L'APL laisse un individu résoudre des problèmes plus durs plus rapidement. En outre, étant compact et laconique, l'APL se prête bien au développement de logiciel à grande échelle pendant que la complexité résultant d'un grand nombre de lignes de code peut être nettement réduite. Beaucoup d'avocats et praticiens d'APL regardent la programmation dans des langages de programmation standard, comme COBOL et Java, comme comparativement pénible. L'APL est souvent trouvé où le temps-à-marché est important, comme avec les systèmes marchands.

Iverson plus tard a conçu Langage de programmation de J ce qui emploie ASCII avec digraphes au lieu des symboles spéciaux.

Exemples

Un exemple très simple qui immobile exigerait plusieurs lignes de code dans le la plupart non-rangent des langages de programmation est un générateur de nombre aléatoire de loterie de la sélection 6 (de 1-40), accomplit ne garantir aucun nombre répété, et assortir les résultats dans l'ordre croissant :

↑6 ? 40

L'expression suivante sortes une liste de mot stockée dans la matrice X selon la longueur de mot :

X [⍋X+.≠ ';]

La fonction suivante la « vie », écrite dans Dyalog APL, prend une matrice booléenne et calcule la nouvelle génération selon Le jeu de Conway de la vie:

Dans l'exemple suivant, aussi Dyalog, la première ligne assigne un certain code de HTML à un « txt » variable et puis emploie une expression d'APL pour enlever toutes étiquettes de HTML, renvoyant le texte seulement suivant les indications de la dernière ligne.

L'expression suivante trouve tous nombres principaux de 1 à R (présumant une origine d'index de 1). Dans le temps et l'espace, le calcul est O (² de R).

(∼R∈R°.×R) /R←1↓ιR

De droite à gauche, ceci signifie :

  1. le ιR crée contenir de vecteur nombres entiers de 1 à R (si R = 6 au début du programme, ιR est 1 2 3 4 5 6)
  2. Laissez tomber le premier élément de ce vecteur (fonction de ↓), c.-à-d. 1. Ainsi 1↓ιR est 2 3 4 5 6
  3. Placez R au vecteur (←, primitif de tâche)
  4. Produisez-vous produit externe de R multiplié par R, c.-à-d. une matrice qui est table de multiplication de R par R (fonction de °.×)
  5. Établissez un vecteur la même longueur que R avec 1 dans chaque endroit où le nombre correspondant dans R est dans la matrice externe de produit (le ∈, a placé la fonction d'inclusion), c.-à-d. 0 0 1 0 1
  6. Niez logiquement les valeurs dans le vecteur (zéros de changement à ceux et à ceux à zéros) (∼, fonction de négation), c.-à-d. 1 1 0 1 0
  7. Choisissez les articles dans R pour lequel l'élément correspondant est 1 (/fonction), c.-à-d. 2 3 5

Calcul

L'APL était unique dans la vitesse avec laquelle il pourrait effectuer des opérations complexes de matrice. Par exemple, une multiplication très grande de matrice prendrait seulement quelques secondes sur une machine qui était beaucoup moins puissante que ceux aujourd'hui. Il y avait des raisons techniques et économiques de cet avantage :

  • Les interprètes commerciaux ont fourni des routines linéaires haut-accordées de bibliothèque d'algèbre.
  • Très bas des frais généraux interprétatifs ont été encourus par-rangent-non le par-élément.
  • Le temps de réponse d'APL a comparé favorablement aux temps d'exécution des compilateurs de linéarisation tôt.
  • IBM fourni microcode aide pour l'APL sur un certain nombre d'unités centrales IBM/370.

Un papier largement cité « une machine d'APL » (écrite par Phil Abrams) a perpétué le mythe lequel l'APL a utilisé dominant évaluation paresseuse là où des calculs ne seraient pas exécutés réellement jusqu'à ce que les résultats aient été nécessaires et puis seulement ces calculs strictement n'ont pas été exigés. À mettre en application) une évaluation paresseuse évidente (et facile est J-vecteur : quand un univalent iota est produit dans le code, IS-IS gardé comme a représentation au lieu de l'calcul immédiatement, de ce fait sauvant une certaine heure aussi bien que la mémoire.

Bien que cette technique n'ait pas été généralisée, elle incarne le meilleur mécanisme de la survie de la langue : indication de l'ordre des opérations scalaires. Même pendant que par la suite normalisé par X3J10, l'APL est tellement fortement donnée-parallèle, il donne à des implementors de langue l'immense liberté aux opérations de programme aussi efficacement comme possible. Comme innovations d'ordinateur comme antémémoire, et SIMD l'exécution est devenue disponible dans le commerce, des programmes d'APL mis en communication avec peu de détails de bas niveau de re-linéarisation dépensés par effort supplémentaire.

Interprètes

Aujourd'hui, la plupart d'activité de langue d'APL a lieu sous le logiciel d'exploitation de Microsoft Windows, avec une certaine activité dessous Linux, Unix, et OS d'imper. Comparativement peu d'activité d'APL a lieu aujourd'hui sur des ordinateurs centraux.

APLNow (autrefois APL2000) offre un interprète avançé d'APL qui opère sous Linux, Unix, et Windows. Il soutient l'automation de Windows, les appuis appelle au logiciel d'exploitation et au DLLs défini pour l'utilisateur, a un système de fichiers avançé d'APL, et représente le niveau courant du développement de langue d'APL. Le produit d'APL2000 est une suite avançée de STSC'produit réussi et APL*Plus/386 de s APL*Plus/PC.

Dyalog APL est un interprète avançé d'APL qui opère sous Linux, Unix, et Windows. Dyalog a les prolongements agressifs à la langue d'APL qui incluent nouveau orienté objectivement dispositifs, nombreux perfectionnements de langue, plus un conformé namespace modèle utilisé pour des les deux son interface d'automation de Microsoft, aussi bien que les namespaces indigènes. Pour la plateforme de Windows, Dyalog APL offre l'intégration serrée avec Microsoft. Filet, plus l'intégration limitée avec la plateforme visuelle de développement de studio de Microsoft.

IBM offre une version d'IBM APL2 pour des systèmes d'IBM AIX, de Linux, de soleil Solaris et de Windows. Ce produit est une suite d'APL2 offert pour des unités centrales d'IBM. IBM APL2 était discutablement le système d'APL le plus influent, qui a fourni une norme pleine d'exécution pour le prochain ensemble de prolongements à la langue, se concentrant sur des rangées nichées.

Offres limitées par MicroAPL APLX, un interprète complet de 64 bits pour Linux, Windows, et Apple OS d'imper systèmes.

Soliton associe des offres l'interprète de SAX (APL pointu pour l'Unix) pour des systèmes d'Unix et de Linux, qui est un développement ultérieur d'I. P. Produit pointu de l'APL des associés de dièse. À la différence de la plupart des autres interprètes d'APL, Kenneth E. Iverson a eu une certaine influence des rangées nichées par manière ont été mis en application dans l'APL pointu et le SAX. Presque toutes autres réalisations d'APL ont suivi le cours réglé par IBM avec APL2, ainsi quelques détails importants dans l'APL pointu diffèrent d'autres réalisations.

Compilation

Les programmes d'APL sont normalement interprété et moins souvent compilé. En réalité, la plupart des compilateurs d'APL traduit source APL à une langue plus basse comme C, laissant les détails propres à une machine au compilateur plus bas. La compilation des programmes d'APL était une matière fréquemment discutée dans les conférences. Bien que certains des perfectionnements plus nouveaux à la langue d'APL telle que des rangées nichées aient rendu la langue de plus en plus difficile à compiler, l'idée de la compilation d'APL est toujours en cours de développement aujourd'hui.

Dans le passé, la compilation d'APL a été considérée comme des moyens de réaliser la vitesse d'exécution comparable à d'autres langues traditionnelles, particulièrement sur des ordinateurs centraux. Plusieurs compilateurs d'APL ont réalisé quelques niveaux de succès, cependant comparativement peu de l'effort de développement dépensé sur l'APL au cours des années sont allés à perfectionner la compilation dans le code machine.

De même que le cas en déplaçant des programmes d'APL d'un interprète de l'APL du fournisseur à l'autre, programmes d'APL invariablement exigera des changements à leur contenu. Selon le compilateur, les déclarations variables pourraient être nécessaires, certains dispositifs de langue devraient être enlevés ou évités, ou les programmes d'APL devraient être nettoyés d'une manière quelconque. Quelques dispositifs de la langue, tels que la fonction d'exécution (un expert d'expression) et le divers réflexion et introspection les fonctions de l'APL, tel que la capacité de renvoyer le texte d'une fonction ou de matérialiser une nouvelle fonction de texte, ne sont simplement pas pratiques pour mettre en application en compilation de code machine.

Un compilateur commercial a été mis sur le marché près STSC au milieu des années 80 comme adjonction au produit de programme du VSAPL d'IBM. À la différence des compilateurs plus modernes d'APL, ce produit a produit le code machine qui s'exécuterait seulement dans l'environnement d'interprète, il n'était pas possible pour éliminer le composant d'interprète. Le compilateur pourrait compiler beaucoup de scalaires et dirige des opérations au code machine, mais il se fonderait sur les services de l'interprète d'APL pour exécuter encore plus de fonctions évoluées, plutôt qu'essaye de les compiler. Cependant, les speedups dramatiques se sont produits, particulièrement pour le code fortement itératif d'APL.

Autour du même temps, le livre Un compilateur d'APL par Timothy Budd apparu dans la copie. Ce livre a détaillé la construction d'un traducteur d'APL, écrite dedans C, telles que lequel a exécuté certaines optimisations fusion de boucle détail aux besoins d'une langue de rangée. La langue source était APL-comme du fait quelques règles de la langue d'APL ont été changées ou ont détendu pour permettre une compilation plus efficace. Le traducteur émettrait le code de C qui alors soit compilé et l'extérieur bon de course de la zone de travail d'APL.

Aujourd'hui, la vitesse d'exécution est moins critique et beaucoup de langues populaires sont employer mis en application machines virtuelles - instructions qui sont interprétées au temps d'exécution. Burroughs/Unisys APLB l'interprète (1982) était le premier pour employer la compilation par accroissement dynamique pour produire le code pour une machine virtuelle APL-spécifique. Il recompiled en marche pendant que les marques changeaient leurs significations fonctionnelles. En plus de l'enlèvement analyse et la vérification des erreurs du chemin principal d'exécution, une telle compilation améliore également l'entrée et la sortie répétées des opérandes fonctionnels définis pour l'utilisateur. Ceci évite l'installation de pile et les manipulations pour des appels de fonction faits par les opérateurs intégrés de l'APL comme réduisent et chacun.

APEX, un compilateur des recherches APL, est fourni par l'île Research Inc. de serpent L'APEX compile APL plat (un sous-ensemble d'OIN N8485) dans SAC, une langue fonctionnelle de rangée avec la sémantique parallèle, et fonctionne actuellement dessous Linux. utilisations Apex-produites de code fusion de boucle et contraction de rangée, algorithmes de spécial-cas pas généralement disponibles aux interprètes (par exemple, mise à niveau de vecteur de permutation), pour réaliser un niveau d'exécution comparable à celui de Fortran.

L'APLNext VisualAPL le système est un départ à un système conventionnel d'APL du fait VisualAPL est un vrai. Langue nette qui est entièrement inter-fonctionnelle avec autre . Microsoft. Filet langues comme VB.Net et C#. VisualAPL est en soi orienté objectivement et Unicode-basé. Tandis que VisualAPL incorpore la plupart des dispositifs des réalisations du legs APL, la langue de VisualAPL prolonge le legs APL pour être. Filet-conforme. VisualAPL est accueilli dans le studio visuel standard ide de Microsoft et comme tel, appelle la compilation en quelque sorte identique à celle d'autre. Langues nettes. Par la production. Le code d'exécution net de langage commun (CLR), il utilise le compilateur "juste à temps" de Microsoft (JIT) pour soutenir le matériel de 32 bits ou 64-bit. L'exécution substantielle vitesse-lève le legs fini APL ont été rapportées, particulièrement quand la dactylographie forte (facultative) des arguments de fonction est employée.

Un APL à C# le traducteur est fourni par les systèmes graphiques de chaussée. Ce produit a été conçu pour permettre le code d'APL, traduit à C# équivalent, pour courir complètement en dehors de de l'environnement d'APL. Le compilateur de chaussée exige une bibliothèque d'exécution des fonctions de rangée. Un certain speedup, parfois dramatique, est évident, mais se produit à cause des optimisations inhérentes à Microsoft . Filet cadre.

Terminologie

L'APL fait une distinction claire entre fonctions et opérateurs. Les fonctions prennent des valeurs (des variables ou des constantes ou des expressions) comme arguments, et renvoient des valeurs comme résultat. Opérateurs (aka fonctions évoluées) la prise fonctionne comme arguments, et retour relié, fonctions dérivées comme résultat. Par exemple la fonction de « somme » est dérivée en appliquant l'opérateur de « réduction » à la fonction de « addition ». En appliquant le même opérateur de réduction au « plafond » fonctionnez (qui renvoie le plus grand de deux valeurs) crée une fonction « maximum » dérivée, qui renvoie le plus grand d'un groupe (vecteur) de valeurs. Dans la langue de J, Iverson a substitué les termes « verbe » et « adverbe » à la « fonction » et au « opérateur ».

L'APL identifie également ces dispositifs établis dans la langue, et représentés par un symbole, ou une combinaison fixe des symboles, As primitifs. La plupart des primitifs sont des fonctions ou des opérateurs. Le codage APL est en grande partie un processus d'écrire des fonctions non-primitives et (dans quelques versions d'APL) des opérateurs. Cependant quelques primitifs ne sont considérés comme ni des fonctions ni des opérateurs, le plus sensiblement tâche.

Jeu de caractères

L'APL a été toujours critiqué pour son choix d'un jeu de caractères unique et non standard. L'observation que certains qui l'apprennent vont bien habituellement à des adhérents ardents prouve qu'il y a un certain poids derrière Iversonla 'idée de s que la notation a employée fait une différence. Dans le commencement, il y avait peu de dispositifs terminaux qui pourraient reproduire le caractère d'APL - ensemble - le plus populaire utilisation IBM Selectric mécanisme imprimant avec un type spécial élément d'APL. Avec le temps, avec l'utilisation universelle des dispositifs de haute qualité d'affichage graphique et impression, on a en grande partie éliminé le problème de police de caractères d'APL ; cependant, le problème d'écrire des caractères d'APL exige l'utilisation de rédacteurs de méthode d'entrée ou les tracés spéciaux de clavier, qui peuvent frustrer des débutants se sont accoutumés à d'autres langues. Avec la vulgarisation du Unicode la norme, qui contient le jeu de caractères d'APL, le problème d'obtenir les polices exigées semble portée en équilibre pour partir.

Du point de vue d'un utilisateur, les caractères spéciaux peuvent donner à APL une élégance et une concision spéciales non possibles dans d'autres langues, en utilisant la mnémonique de symboles visuellement des fonctions qu'ils représentent. Ou il peut mener à un degré ridicule de complexité et d'unreadability, typiquement quand les symboles ne sont ficelés ensemble dans une masse simple sans aucun commentaire. Ou il peut être déraisonnablement difficile et long pour entrer alors éditez plus tard ces rapports d'APL.

Symboles d'APL et disposition de clavier

Notez la mnémonique associant un caractère d'APL à une lettre : point d'interrogation sur Q, puissance sur P, rho sur R, valeur basse sur B, codez sur N, module sur M et ainsi de suite. Ceci le facilite pour qu'un haut-parleur de langue anglaise dactylographie l'APL sur un clavier non-APL fournissant un a la rétroaction visuelle sur l'écran à un. En outre, des décalques ont été produits pour l'attachement aux claviers standard, sur l'avant des clefs ou sur le dessus de elles.

Un diagramme plus à jour de clavier, des applicables pour APL2 et d'autres réalisations modernes, est disponible : Disposition des syndicats pour des fenêtres.

Tous les symboles d'APL sont présents dedans Unicode (bien que quelques produits d'APL peuvent encore ne pas comporter ceci) :

' ( ) + , - . /  :  ; < = >  ? [ ]
\ _ ¨ ¯ × ÷

Les caractères spéciaux d'APL étaient disponibles près overstriking un caractère au-dessus des autres. Par exemple, notation le symbole a été constitué par overstriking le décalageP avec le décalageO. Ceci a compliqué corriger des erreurs et éditer des lignes de programme. Ceci a pu avoir finalement été la raison pour que les programmes tôt d'APL aient un certain modèle dense - il était difficile les éditer.

Beaucoup d'overstrikes montrés dans la table ci-dessus, bien qu'en appelant, ne sont pas employés réellement. De nouveaux overstrikes ont été présentés par des fournisseurs pendant qu'ils produisaient des versions d'APL conçues en fonction le matériel spécifique, caractéristiques du système, système de fichiers, et ainsi de suite. De plus, imprimant des bornes et l'APL tôt des bornes à rayon cathodique étaient capables de montrer les overstrikes arbitraires, mais comme PC ont rapidement remplacé des bornes comme dispositif data-entry, caractère d'APL que l'appui a été maintenant fourni en tant que ROM de générateur de caractère d'APL ou un jeu de caractères mou rendu par le dispositif d'affichage. Avec l'arrivée de Windows, des caractères d'APL ont été définis comme juste une autre police complète, ainsi distinction entre les caractères d'overstruck et les caractères standard ayant été éliminés.

Bornes postérieures d'IBM, notamment IBM 3270 les claviers-écrans, ont eu un arrangement de clavier alternatif qui sert de base à certaines des dispositions de clavier modernes d'APL en service aujourd'hui. De meilleures bornes, à savoir dispositifs d'affichage au lieu des imprimeurs, ont encouragé le développement de meilleurs rédacteurs de plein écran, qui ont eu une amélioration mesurable dans la lisibilité de productivité et de programme.

Utilisation

L'APL a longtemps eu une petite et ardante base d'utilisateur. Il était et est toujours populaire dans des applications financières et d'assurance, dans les simulations, et dans des applications mathématiques, souvent où une solution change fréquemment ou où dans une langue standard rapporte la complexité excessive. L'APL a été employé dans une grande variété de contextes et pour beaucoup et des buts changés. Un bulletin intitulé « Citer-Quadruple » consacré à l'APL a été édité depuis les années 70 par la section de SIGAPL de l'association pour le matériel de calcul (le Citer-Quadruple est le nom du caractère d'APL utilisé pour la saisie et le rendement des textes).

La plupart du temps en raison du son notation d'infixe et son emphase sur l'interaction avec l'ordinateur, APL peut être un environnement idéal pour le déploiement rapide d'interactif Langues de détail de domaine. En dépit de la présence des caractères non standard dans le jeu de caractères d'APL, il est possible à un utilisateur d'une langue domaine-spécifique mise en application dans l'APL pour écrire des programmes simples (ou des manuscrits) consistant seulement en mots, nombres, et ponctuation familière. Jusqu'aussi à tard que le milieu des années 80, APL partage du temps les fournisseurs ont offert des applications fournies sous forme de langues de détail de domaine. Sur I. P. Pointu système en temps partagé, une zone de travail appelée MAGIE 39 accès offert aux données financières et de ligne aérienne plus (pendant le temps) le graphique sophistiqué et le reportage, sous forme de langue de détail de domaine. Un autre exemple est la zone de travail de GRAPHPAK fournie avec l'APL2 d'IBM ; une version de démonstration d'APL2 et de GRAPHPAK peut être téléchargée pour Windows.

L'APL a été également employé dans nombreux metaprogramming applications. Des données externes données qui ont changé de temps en temps, programmes d'APL ont été employées pour composer des parties ou pour accomplir des sections de code écrites en d'autres langues telles que le Fortran, le COBOL, ou le Java. Une application a employé l'APL pour produire du code de Fortran d'un modèle de programmation linéaire substantiel. En tant que tels, le code de Fortran a été pensé pour être trop grand pour être confortablement compris par un seul ou petit groupe d'individus. Cependant, avec cette approche, l'entretien courant n'a posé aucune barrière. Des approches semblables ont été employées où les tables de consolidation ont maintenu l'extérieur de l'APL pourraient être immédiatement transformées en programmes COBOL Considérables qui ont exécuté les calculs nécessaires de consolidation. On a pratiquement éliminé une étape pénible qui a précédemment exigé plusieurs journées-homme, à savoir modifications à un long programme COBOL. On a fait des choses semblables qui à la fin ont émis le code de Java.

L'intérêt dans l'APL a solidement diminué depuis les années 80. C'était partiellement dû au manque d'un chemin de migration des réalisations performant d'unité centrale des solutions de rechange peu coûteuses tôt de PC et de la disponibilité des outils de calcul d'utilisateur de haut-productivité comme Microsoft Excel et Microsoft Access. Ce sont les plateformes appropriées pour ce qui peut avoir été des applications de l'unité centrale APL dans les années 70 et les années 80. Quelques utilisateurs d'APL ont émigré au Langage de programmation de J, qui offre des dispositifs plus avançés. Pour finir, le déclin était également dû en partie à la croissance de MATLAB, Octave de GNU, et Scilab. Ces plateformes ranger-orientées de calcul scientifiques fournissent une expérience de calcul interactive semblable à l'APL, mais ressemblent davantage à des langages de programmation conventionnels tels que le Fortran, et emploient l'ASCII standard.

Malgré ce déclin, les trouvailles d'APL ont continué l'utilisation dans certains domaines, tels que la recherche de comptabilité (Conditions de PhD de comptabilité de Stanford)

Étalonnage

L'APL a été normalisé par Norme ANSI groupe de travail X3J10 et OIN/LE CEI Groupe de travail technique commun du sous-comité 22 du Comité 1 3. La langue du noyau APL est indiquée à OIN 8485:1989, et la langue prolongée d'APL est indiquée dans ISO/IEC 13751:2001.

Citations

  • « APL, dans lequel vous pouvez écrire un programme pour simuler brouiller une plate-forme des cartes et s'occuper alors les dehors à plusieurs joueurs en quatre caractères, aucun dont apparaissez sur un clavier standard. » David donné
  • Le « APL est une erreur, exécutée à la perfection. C'est la langue du futur pour les techniques de programmation du passé : il crée une nouvelle génération des clochards de codage. «  Edsger Dijkstra, 1968
Rho, rho, rho de X
Égale toujours 1.
Le Rho est dimension ; rho de rho, grade.
L'APL est amusement !
  • « Cette manière de faire des affaires était si productive qu'elle ait écarté comme le feu de forêt. Avant que les personnes pratiques aient découvert ce qui s'était produit ; L'APL était si important une partie de la façon dont IBM a couru ses affaires qu'elles ne pourraient pas probablement être déracinées. Les chercheurs sauvage-observés avaient produit un amasseur d'argent. « Michael S. Montalbano 1982 (voyez Une histoire personnelle d'APL)
  • La rime amusante suivante a été distribuée en tant qu'élément du fortune programmez dans de nombreuses installations d'Unix.
'Tis le rêve de chaque programmeur
Avant que sa vie soit faite,
Pour écrire trois lignes d'APL
Et faites la fichue course de chose.

Voyez également

Références

  1. ^ Race de Larry (l'août 2006). "Comment nous avons obtenu à APL \ 1130". Vecteur (association britannique d'APL) 22 (3). ISSN 0955-1433. 
  2. ^ Le Dickey, Lee, liste d'A de la transcription d'APL complote, 1993
  • Iverson, Kenneth E. - Un langage de programmation, Wiley 1962.
  • Une description formelle de SYSTEM/360, Journal 3:3, New York de systèmes d'IBM : 1964
  • Pakin, Sandra - Manuel APL \ 360 de référence, la Science Research Associates, Inc. 1968. ISBN 0-574-16135-X,
  • Histoire des langages de programmation, chapitre 14
  • Gerald Jean Francis Banon - Base le da Computacao Grafica, RIO DE JANEIRO : CAMPUS, 1989. 141 P.

Voyez également

Liens externes

Les terrains communaux de Wikimedia a des médias liés à :
The original article is from Wikipedia. To view the original article please click here.
Creative Commons Licence