Атлас Автокод
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2009 г. ) |
Парадигмы | Процедурный , императивный , структурированный. |
---|---|
Семья | АЛГОЛ |
Разработано | Тони Брукер , Деррик Моррис |
Разработчик | Манчестерский университет |
Впервые появился | 1963 год |
Дисциплина набора текста | Статический , сильный |
Объем | Лексический |
Язык реализации | АЛГОЛ 60 |
Платформа | Атлас Английский электрический KDF9 |
ТЫ | супервайзер |
Основные реализации | |
Эдинбургский ИМП | |
Под влиянием | |
АЛГОЛ 60 |
Атлас Автокод ( AA ) [1] [2] — язык программирования , разработанный примерно в 1963 году в Манчестерском университете . Вариант языка АЛГОЛ , разработанный Тони Брукером и Дерриком Моррисом для компьютера Atlas . Первоначальные компиляторы AA и AB были написаны Джеффом Ролом и Тони Брукером с использованием компилятора Brooker-Morris Compiler , с более поздней реализацией без CC, написанной вручную Джеффом Ролом. [3]
Слово «автокод» было, по сути, ранним термином для обозначения языка программирования . Различные автокоды могут сильно различаться.
Особенности [ править ]
AA был языком с блочной структурой , в котором были явно типизированные переменные , подпрограммы и функции. В нем опущены некоторые функции АЛГОЛа, такие как передача параметров по имени , что в АЛГОЛ 60 означает передачу адреса памяти короткой подпрограммы ( thunk ) для пересчета параметра каждый раз, когда он упоминается.
AA Компилятор мог генерировать проверку диапазона для доступа к массиву и позволял массиву иметь размеры, которые были определены во время выполнения , т. е. массив мог быть объявлен как integer array Thing (i:j)
, где i
и j
были расчетные значения.
Подпрограммы высокого уровня AA могут включать машинный код либо для того, чтобы сделать внутренний цикл более эффективным, либо для выполнения какой-либо операции, которую в противном случае невозможно было бы легко выполнить. [1]
АА включало complex
тип данных [1] для представления комплексных чисел , отчасти из-за давления со стороны отдела электротехники , поскольку комплексные числа используются для представления поведения переменного тока . Мнимый квадратный корень из -1 был представлен выражением i
, который рассматривался как фиксированная комплексная константа = i .
The complex
Тип данных был исключен, когда Atlas Autocode позже превратился в язык Edinburgh IMP . IMP был расширением AA и использовался для написания Edinburgh Multiple Access System (EMAS) операционной системы .
Вторым по величине заявлением AA о славе (после того, как он был прародителем IMP и EMAS) было то, что он обладал многими функциями оригинального компилятора Compiler . Вариант компилятора AA включал поддержку во время выполнения анализатора рекурсивного спуска сверху вниз . Стиль парсера , использованный в компиляторе Compiler, постоянно использовался в Эдинбурге с 60-х годов почти до 2000 года.
Другие автокоды были разработаны для компьютера Titan , прототипа Atlas 2 в Кембридже и Ferranti Mercury.
Синтаксис [ править ]
Atlas Autocode Синтаксис во многом был похож на ALGOL, хотя на него повлияло имеющееся у автора устройство вывода — Friden Flexowriter . Таким образом, это позволило использовать такие символы, как ½
для .5
и верхний индекс 2
ибо в степени 2 . Flexowriter поддерживал перечеркивание, и, следовательно, AA тоже это делало: до трех символов можно было перечеркнуть как один символ. Например, набор символов не имел ↑
символ, поэтому возведение в степень было перечеркиванием |
и *
. Вышеупомянутое подчеркивание зарезервированных слов (ключевых слов) также можно выполнить с помощью перечеркивания. Язык подробно описан в Справочном руководстве по автокоду Atlas. [1]
Другими символами Flexowriter, которые нашли применение в AA, были: α
в числах с плавающей запятой, например , 3.56α-7
для современного 3.56e-7
; β
означает вторую половину 48-битного памяти Atlas слова ; π
для математической константы пи .
Когда AA был портирован на компьютер English Electric KDF9 , набор символов был изменен на Международная организация по стандартизации (ISO). Этот компилятор был восстановлен со старой бумажной ленты Эдинбургским проектом компьютерной истории и доступен в Интернете, как и высококачественная отсканированная версия оригинальной эдинбургской версии руководства Atlas Autocode. [2]
Ключевые слова в AA отличались от другого текста тем, что были подчеркнуты, что было реализовано посредством перечеркивания во Flexowriter (сравните с жирным шрифтом в ALGOL). Существовали также два режима строппинга . Во-первых, существовал режим «разделителей в верхнем регистре», в котором все прописные буквы (внешние строки) рассматривались как подчеркнутые строчные. Во-вторых, в некоторых версиях (но не в исходной версии Атласа) можно было ограничить ключевые слова, поместив « %
" подпишите перед ними, например ключевое слово endofprogramme
может быть напечатано как %end %of %programme
или %endofprogramme
. Это значительно сократило набор текста, поскольку требовался только один символ, а не зачеркивание всего ключевого слова. Как и в АЛГОЛе, в языке не было зарезервированных слов , поскольку ключевые слова идентифицировались путем подчеркивания (или удаления), а не путем распознавания последовательностей зарезервированных символов. В заявлении if token=if then result = token
, есть оба ключевых слова if
и переменная с именем if
.
Как и в АЛГОЛе, AA допускал пробелы в именах переменных, например integer previous value
. Пробелы не имели значения и удалялись перед синтаксическим анализом на тривиальном этапе предварительного лексического анализа, называемом « реконструкцией строки ». В приведенном выше примере компилятор увидит следующее: « iftoken=ifthenresult=token
Пробелы были возможны отчасти из-за того, что ключевые слова различались другими способами, а отчасти потому, что источник обрабатывался методом бессканерного анализа , без отдельной фазы лексического анализа, что позволяло лексическому синтаксису быть контекстно-зависимым.
Синтаксис выражений позволяет опускать оператор умножения, например: 3a
рассматривался как 3*a
, и a(i+j)
рассматривался как a*(i+j)
если a
не был массивом. В неоднозначных случаях бралось максимально длинное имя ( maximum munch ), например ab
не рассматривалась как a*b
, независимо от того, или нет a
и b
было объявлено.
Ссылки [ править ]
- ^ Перейти обратно: а б с д Брукер, РА; Рол, Дж. С. (1965). «Справочное руководство по автокоду Atlas» (PDF) . Факультет компьютерных наук Манчестерского университета. ( Оригинальные сканы заархивированы 16 января 2019 г. на Wayback Machine )
- ^ Перейти обратно: а б Шофилд, PD; Осборн, MR (1965). «Программирование в Atlas Autocode, Отчет компьютерного блока № 1» (PDF) . Эдинбургский университет. Архивировано из оригинала (PDF) 15 мая 2020 г. Проверено 12 апреля 2006 г. ( Оригинальные сканы заархивированы 21 июля 2011 г. в Wayback Machine )
- ^ «Тони Брукер и компилятор Atlas Compiler» (PDF) . Февраль 2014 года . Проверено 16 февраля 2024 г.
Внешние ссылки [ править ]
- Основные возможности Atlas Autocode , Р. А. Брукер, Дж. С. Рол и С. Р. Кларк.
- Мини-руководство по автокодированию Atlas, написанное У. Ф. Ланноном, Дж. Райдингом (июль 1965 г.)
- Справочное руководство по автокоду Atlas, автор: Р.А. Брукер, JSRohl (март 1965 г.)
- Автокод Меркурия, Автокод Атласа и некоторые связанные с этим вопросы. Вик Форрингтон (январь 2014 г.)
- Блок-схемы компилятора Atlas Autocode на KDF9.