Atlas Autocode - Atlas Autocode

Code automatique de l'Atlas
Paradigmes Procédural , impératif , structuré
Famille ALGOL
Conçu par Tony Brooker , Derrick Morris
Développeur Université de Manchester
Première apparition 1965 ; il y a 56 ans ( 1965 )
Discipline de frappe Statique , fort
Portée Lexical
Langage d'implémentation ALGOL 60
Plate-forme Atlas
anglais électrique KDF9
Système d'exploitation Superviseur
Les principales mises en œuvre
Édimbourg IMP
Influencé par
ALGOL 60

Atlas Autocode ( AA ) est un langage de programmation développé vers 1965 à l' Université de Manchester . Variante du langage ALGOL , il a été développé par Tony Brooker et Derrick Morris pour l' ordinateur Atlas .

Le mot Autocode était fondamentalement un premier terme pour le langage de programmation . Différents codes automatiques peuvent varier considérablement.

Caractéristiques

AA comportait des variables , des sous - routines et des fonctions explicitement typées . Il a omis certaines fonctionnalités ALGOL telles que le passage de paramètres par nom , ce qui dans ALGOL 60 signifie passer l' adresse mémoire d'un sous-programme court pour recalculer un paramètre à chaque fois qu'il est mentionné.

Le compilateur AA générait une vérification de plage pour les accès aux tableaux et permettait à un tableau d'avoir des dimensions déterminées au moment de l' exécution , c'est-à-dire qu'un tableau pouvait être déclaré comme , où et étaient des valeurs calculées. integer array Thing (i:j)ij

Les routines de haut niveau AA peuvent inclure du code machine , soit pour rendre une boucle interne plus efficace, soit pour effectuer une opération qui, autrement, ne peut pas être effectuée facilement.

AA inclut un complextype de données pour représenter des nombres complexes , en partie à cause de la pression du département d' ingénierie électrique , car les nombres complexes sont utilisés pour représenter le comportement du courant alternatif . La racine carrée unitaire imaginaire de -1 était représentée par i, qui était traitée comme une constante complexe fixe = i .

Le complextype de données a été abandonné lorsque Atlas Autocode est devenu plus tard le langage Edinburgh IMP . IMP était une extension de AA et a été utilisé pour écrire le système d'exploitation Edinburgh Multiple Access System (EMAS) .

Le deuxième plus grand titre de gloire d'AA (après avoir été l'ancêtre d'IMP et d'EMAS) était qu'il possédait de nombreuses caractéristiques du compilateur compilateur d'origine . Une variante du compilateur AA incluait la prise en charge à l'exécution d'un analyseur de descente récursif descendant . Le style d' analyseur utilisé dans le compilateur a été utilisé en continu à Edimbourg des années 60 jusqu'à presque l'an 2000.

D'autres codes automatiques ont été développés pour l' ordinateur Titan , un prototype Atlas 2 à Cambridge et le Ferranti Mercury.

Syntaxe

La syntaxe d' Atlas Autocode était en grande partie similaire à celle d'ALGOL, bien qu'elle ait été influencée par le périphérique de sortie dont l'auteur disposait, un Friden Flexowriter . Ainsi, il autorisait des symboles comme ½pour .5et l'exposant 2 pour à la puissance 2 . Le Flexowriter prenait en charge la surfrappe et donc, AA l'a fait aussi : jusqu'à trois caractères pouvaient être surfrappés comme un seul symbole. Par exemple, le jeu de caractères n'avait pas de symbole, donc l'exponentiation était une frappe excessive de |et *. Le soulignement susmentionné des mots réservés ( mots -clés) pourrait également être effectué en utilisant la surimpression. La langue est décrite en détail dans le manuel de référence Atlas Autocode.

D'autres caractères Flexowriter qui ont été trouvés utiles dans AA étaient : αdans les nombres à virgule flottante, par exemple , 3.56α-7pour modern 3.56e-7 ; βsignifier la seconde moitié d'un mot mémoire Atlas de 48 bits ; πpour la constante mathématique pi .

Lorsque AA a été porté sur l' ordinateur English Electric KDF9 , le jeu de caractères a été remplacé par l'Organisation internationale de normalisation (ISO) et ce compilateur a été récupéré à partir d'une vieille bande de papier par le Edinburgh Computer History Project et est disponible en ligne, tout comme une haute -scan de qualité de la version originale d'Édimbourg du manuel Atlas Autocode.

Les mots-clés dans AA se distinguaient des autres textes par le fait qu'ils étaient soulignés, ce qui a été implémenté via la surimpression dans le Flexowriter (comparer au gras dans ALGOL). Il y avait aussi deux régimes d' abattage . Premièrement, il y avait un mode "délimiteurs majuscules" où toutes les lettres majuscules (en dehors des chaînes) étaient traitées comme des minuscules soulignées. Deuxièmement, dans certaines versions (mais pas dans la version originale d'Atlas), il était possible de supprimer des mots-clés en plaçant un %signe " " devant eux, par exemple le mot-clé endofprogrammepouvait être tapé comme %end %of %programmeou %endofprogramme. Cela réduisait considérablement la saisie, car un seul caractère était nécessaire, plutôt que de surcharger le mot-clé entier. Comme dans ALGOL, il n'y avait pas de mots réservés dans la langue car les mots-clés étaient identifiés en soulignant (ou en stropping), et non en reconnaissant les séquences de caractères réservées. Dans l'instruction , il y a à la fois un mot - clé et une variable nommées . if token=if then result = tokenifif

Comme dans ALGOL, AA autorisait les espaces dans les noms de variables, tels que integer previous value. Les espaces n'étaient pas significatifs et ont été supprimés avant l'analyse dans une étape triviale de pré-lexing appelée " reconstruction de ligne ". Ce que le compilateur verrait dans l'exemple ci-dessus serait " ". Les espaces étaient possibles en partie parce que les mots-clés étaient distingués d'autres manières, et en partie parce que la source était traitée par analyse syntaxique sans scanner , sans phase de lexage séparée, ce qui permettait à la syntaxe lexicale d'être contextuelle. iftoken=ifthenresult=token

La syntaxe des expressions permet d'omettre l'opérateur de multiplication, par exemple, a 3aété traité comme 3*a, et a a(i+j)été traité comme a*(i+j)s'il ane s'agissait pas d'un tableau. Dans les utilisations ambiguës, le nom le plus long possible était pris ( maximal munch ), par exemple abn'était pas traité comme a*b, qu'il soit ou non aet bavait été déclaré.

Dans l'Autocode Atlas original pour l'ordinateur Atlas, les instructions du code machine Atlas pouvaient être interpolées entre les instructions AA.

Les références