Atlas Autokod - Atlas Autocode

Atlas Autokod
Paradygmaty Proceduralna , imperatywna , ustrukturyzowana
Rodzina ALGOL
Zaprojektowany przez Tony Brooker , Derrick Morris
Deweloper Uniwersytet w Manchesterze
Po raz pierwszy pojawiły się 1965 ; 56 lat temu ( 1965 )
Dyscyplina pisania Statyczny , mocny
Zakres Leksykalny
Język implementacji ALGOL 60
Platforma Atlas
Angielski Elektryczny KDF9
OS Kierownik
Główne wdrożenia
Edynburg IMP
Wpływem
ALGOL 60

Atlas Autocode ( AA ) to język programowania opracowany około 1965 roku na Uniwersytecie w Manchesterze . Wariant języka ALGOL , opracowany przez Tony'ego Brookera i Derricka Morrisa dla komputera Atlas .

Słowo Autokod było w zasadzie wczesnym określeniem języka programowania . Różne kody automatyczne mogą się znacznie różnić.

funkcje

AA zawierało jawnie wpisane zmienne , podprogramy i funkcje. Pominął niektóre funkcje ALGOL, takie jak przekazywanie parametrów po nazwie , co w ALGOL 60 oznacza przekazywanie adresu pamięci krótkiego podprogramu w celu przeliczenia parametru za każdym razem, gdy jest on wymieniony.

Kompilator AA generował sprawdzanie zakresów dostępu do tablicy i pozwalał, aby tablica miała wymiary, które zostały określone w czasie wykonywania , tj. tablica mogła być zadeklarowana jako , gdzie i były wartościami obliczonymi. integer array Thing (i:j)ij

Procedury wysokiego poziomu AA mogą zawierać kod maszynowy , aby uczynić wewnętrzną pętlę bardziej wydajną lub wykonać pewne operacje, które inaczej nie mogłyby być łatwo wykonane.

AA zawiera complextyp danych do reprezentowania liczb zespolonych , częściowo ze względu na naciski wydziału elektrotechniki , ponieważ liczby zespolone są używane do reprezentowania zachowania prądu przemiennego . Urojona pierwiastek kwadratowy z -1 został przedstawiony i, który traktowano jako stałą złożoną stałą = I .

Typ complexdanych został porzucony, gdy Atlas Autocode później ewoluował w język Edinburgh IMP . IMP był rozszerzeniem AA i został użyty do napisania systemu operacyjnego Edinburgh Multiple Access System (EMAS) .

Drugim największym roszczeniem AA do sławy (po byciu protoplastą IMP i EMAS) było posiadanie wielu cech oryginalnego kompilatora kompilatora . Wariant kompilatora AA zawierał obsługę w czasie wykonywania odgórnego rekurencyjnego parsera zejścia . Styl parsera używany w kompilatorze kompilatora był używany nieprzerwanie w Edynburgu od lat 60-tych do prawie 2000 roku.

Inne Autokody zostały opracowane dla komputera Titan , prototypu Atlas 2 w Cambridge i Ferranti Mercury.

Składnia

Składnia Atlas Autocode była w dużej mierze podobna do ALGOL, chociaż wpłynęło na nią urządzenie wyjściowe, które autor miał do dyspozycji, Friden Flexowriter . W ten sposób dopuszczał symbole takie jak ½for .5i indeks górny 2 for do potęgi 2 . Flexowriter wspierał przekreślanie, a zatem AA również: do trzech znaków można było przekreślić jako pojedynczy symbol. Na przykład zestaw znaków nie miał symbolu, więc potęgowanie było przekreśleniem |i *. Wspomniane podkreślenie słów zastrzeżonych (słów kluczowych) można również wykonać za pomocą przesłonowania. Język jest szczegółowo opisany w podręczniku Atlas Autocode Reference Manual.

Inne znaki Flexowriter które zostały znalezione zastosowanie w AA były: αw liczbach zmiennoprzecinkowych, np , 3.56α-7na nowoczesny 3.56e-7 ; βoznaczać drugą połowę 48-bitowego słowa pamięci Atlasa ; πdla stałej matematycznej pi .

Kiedy AA został przeniesiony na komputer English Electric KDF9 , zestaw znaków został zmieniony na Międzynarodową Organizację Normalizacyjną (ISO), a kompilator został odzyskany ze starej papierowej taśmy przez Edinburgh Computer History Project i jest dostępny online, ponieważ jest to wysoki -jakość skanu oryginalnej wersji podręcznika Atlas Autocode z Edynburga.

Słowa kluczowe w AA można było odróżnić od innych tekstów poprzez podkreślenie, które zostało zaimplementowane przez przekreślenie w Flexowriter (porównaj z pogrubieniem w ALGOL). Były też dwa reżimy stropowe . Po pierwsze, istniał tryb „uppercasedelimiters”, w którym wszystkie wielkie litery (poza ciągami) były traktowane jako podkreślone małe litery. Po drugie, w niektórych wersjach (ale nie w oryginalnej wersji Atlas) można było usunąć słowa kluczowe, umieszczając %przed nimi znak " ", na przykład słowo kluczowe endofprogrammemożna było wpisać jako %end %of %programmelub %endofprogramme. To znacznie ograniczyło pisanie, ponieważ wymaga tylko jednego znaku, zamiast przesłonić całe słowo kluczowe. Podobnie jak w ALGOL, w języku nie było słów zastrzeżonych, ponieważ słowa kluczowe identyfikowano przez podkreślenie (lub skrócenie), a nie przez rozpoznanie zarezerwowanych sekwencji znaków. W instrukcji znajduje się zarówno słowo kluczowe jak i zmienna o nazwie . if token=if then result = tokenifif

Podobnie jak w ALGOL, AA zezwala na spacje w nazwach zmiennych, takich jak integer previous value. Spacje nie były znaczące i zostały usunięte przed parsowaniem w trywialnym etapie preleksowania zwanym „ rekonstrukcją linii ”. To, co kompilator zobaczy w powyższym przykładzie, to „ ”. Spacje były możliwe częściowo dzięki rozróżnianiu słów kluczowych w inny sposób, a częściowo dlatego, że źródło zostało przetworzone przez parsowanie bez skanera , bez oddzielnej fazy leksykalnej, co pozwoliło na uwzględnienie kontekstu składni leksykalnej. iftoken=ifthenresult=token

Składnia wyrażeń pozwalała na pominięcie operatora mnożenia, np. 3abyła traktowana jako 3*a, i a(i+j)była traktowana tak, a*(i+j)jakby anie była tablicą. W niejednoznacznych zastosowań, najdłuższy możliwy nazwa została podjęta ( maksymalny Munch ), na przykład abnie był traktowany jako a*b, czy nie ai bzostała zadeklarowana.

W oryginalnym Atlas Autocode dla komputera Atlas instrukcje kodu maszynowego Atlas mogły być interpolowane między instrukcjami AA.

Bibliografia