Atlas Autocode - Atlas Autocode
Paradigmes | Procédural , impératif , structuré |
---|---|
Famille | ALGOL |
Conçu par | Tony Brooker , Derrick Morris |
Développeur | Université de Manchester |
Première apparition | 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)
i
j
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 complex
type 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 complex
type 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 .5
et 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α-7
pour 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é endofprogramme
pouvait être tapé comme %end %of %programme
ou %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 = token
if
if
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 a
ne s'agissait pas d'un tableau. Dans les utilisations ambiguës, le nom le plus long possible était pris ( maximal munch ), par exemple ab
n'était pas traité comme a*b
, qu'il soit ou non a
et b
avait é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.