Парадигмы | Процедурные, императивные, структурированные |
---|---|
Семейство | АЛГОЛ |
Разработано | Тони Брукером, Деррик Моррис |
Разработчик | Манчестерский университет |
Впервые появилось | 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
были объявлены.
В исходном автокоде Атласа для компьютера Атлас инструкции машинного кода Атласа могли быть интерполированы между операторами АА.