Atlas Autocode

редактировать
1960-е язык компьютерного программирования
Atlas Autocode
Парадигмы Процедурные, императивные, структурированные
СемействоАЛГОЛ
Разработано Тони Брукером, Деррик Моррис
Разработчик Манчестерский университет
Впервые появилось1965; 55 лет назад (1965)
Дисциплина набора текста Статический, сильный
Объем Лексический
Язык реализацииАЛГОЛ 60
Платформа Атлас. English Electric KDF9
OS Supervisor
Основные реализации
Edinburgh IMP
Под влиянием
ALGOL 60

Atlas Autocode (AA) - это язык программирования разработан примерно в 1965 году в Манчестерском университете. Вариант языка АЛГОЛ, он был разработан Тони Брукером и Дерриком Моррисом для компьютера Atlas.

Слово Autocode было ранним термином для языка программирования. Различные автокоды могут сильно отличаться.

Возможности

AA содержал явно типизированные переменные, подпрограммы и функции. В нем пропущены некоторые функции АЛГОЛА, такие как передача параметров по имени, что в АЛГОЛ 60 означает передачу адреса памяти короткой подпрограммы для пересчета параметра каждый раз, когда он упомянуто.

Компилятор AA сгенерировал проверку диапазона для массивов доступов и разрешил массиву иметь размеры, которые были определены во время времени выполнения, т. Е. массив может быть объявлен как целое array Thing (i: j), где iи jбыли расчетные значения.

Подпрограммы высокого уровня AA могут включать в себя машинный код либо для повышения эффективности внутреннего цикла, либо для выполнения некоторых операций, которые иначе не могут быть выполнены легко.

AA включает тип данных complexдля представления комплексных чисел, отчасти из-за давления со стороны отдела электротехники, поскольку комплексные числа используются для представления поведения переменного тока. Мнимая единица квадратный корень из -1 был представлен как i, который рассматривался как фиксированная комплексная константа = i.

Тип данных complexбыл удален, когда Atlas Autocode позже превратился в язык Edinburgh IMP. IMP был расширением AA и использовался для написания Edinburgh Multiple Access System (EMAS) операционной системы.

, второй по величине претензии AA к славе (после того, как он был прародителем IMP и EMAS) состоял в том, что он имел многие функции исходного Compiler Compiler. Вариант компилятора AA включал во время выполнения поддержку нисходящего синтаксического анализатора с рекурсивным спуском. Стиль синтаксического анализатора, используемый в компиляторе Compiler, постоянно использовался в Эдинбурге с 60-х годов почти до 2000 года.

Другие автокоды были разработаны для Компьютер Titan, прототип Atlas 2 в Кембридже, и Ferranti Mercury.

Синтаксис

Синтаксис Atlas Autocode во многом был похож на ALGOL, хотя на него повлияло устройство вывода, которое было доступно у автора, Friden Flexowriter. Таким образом, он допускал символы типа ½для .5и верхний индекс для степени 2. Flexowriter поддерживал избыточное выделение, и, таким образом, AA также: до трех символов могли быть перекрыты как единый символ. Например, в наборе символов не было символа , поэтому возведение в степень было превышением |и *. Вышеупомянутое подчеркивание зарезервированных слов (ключевых слов) также может быть выполнено с использованием переопределения. Язык подробно описан в Справочном руководстве по автокоду Atlas.

Другие символы Flexowriter, которые использовались в AA, были: αв числах с плавающей запятой, например, 3.56 α-7для современного 3.56e-7; βозначает вторую половину 48-битного слова памяти Атласа ; πдля математической константы pi.

Когда AA был перенесен на компьютер English Electric KDF9, набор символов был изменен на Международная организация по стандартизации (ISO), и этот компилятор был восстановлен со старой бумажной ленты с помощью Edinburgh Computer History Project и доступен в Интернете, как и высококачественная отсканированная копия оригинальной эдинбургской версии руководства по автокоду Атласа.

Ключевые слова в AA были отличимы от другого текста по подчеркиванию, который был реализован с помощью overstrike в Flexowriter (сравните с жирным шрифтом в ALGOL). Также было два режима доработки. Во-первых, был режим «ограничителей верхнего регистра», в котором все прописные буквы (за пределами строк) обрабатывались как подчеркнутые строчные. Во-вторых, в некоторых версиях (но не в исходной версии Атласа) можно было ограничить ключевые слова, поместив перед ними знак «%», например ключевое слово endofprogrammeможно ввести как % end% of% programили % endofprogramme. Это значительно сократило набор текста из-за того, что требуется только один символ, вместо того, чтобы перебивать все ключевое слово. Как и в ALGOL, в языке не было зарезервированных слов, поскольку ключевые слова определялись подчеркиванием (или зачеркиванием), а не распознаванием зарезервированных последовательностей символов. В операторе iftoken = if, затемresult = token, есть ключевое слово ifи переменная с именем if.

. Как и в ALGOL, разрешено AA пробелы в именах переменных, например целое число предыдущее значение. Пробелы не были значительными и были удалены перед синтаксическим анализом на тривиальной стадии предварительной лексики, называемой «реконструкция строки ». В приведенном выше примере компилятор увидит «iftoken = if thenresult = token». Пробелы были возможны частично из-за того, что ключевые слова выделялись другими способами, а частично из-за того, что источник был обработан с помощью бессанерного синтаксического анализа, без отдельной фазы лексирования, что позволило лексическому синтаксису быть контекстно-зависимым.

В синтаксисе выражений оператор умножения может быть опущен, например, 3aобрабатывался как 3 * a, а a (i + j)рассматривался как a * (i + j), если aне был массивом. При неоднозначном использовании было взято максимально длинное имя (максимальное количество еды ), например, abне обрабатывался как a * b, независимо от того, aи bбыли объявлены.

В исходном автокоде Атласа для компьютера Атлас инструкции машинного кода Атласа могли быть интерполированы между операторами АА.

Ссылки

Последняя правка сделана 2021-06-12 16:16:09
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте