stringtranslate.com

Автокод Атласа

Atlas Autocode ( AA ) [1] [2]язык программирования , разработанный около 1963 года в Манчестерском университете . Вариант языка ALGOL , разработанный Тони Брукером и Дерриком Моррисом для компьютера Atlas . Первоначальные компиляторы AA и AB были написаны Джеффом Ролом и Тони Брукером с использованием компилятора Brooker-Morris Compiler , с более поздней реализацией non-CC (ABC), написанной вручную Джеффом Ролом. [3]

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

Функции

AA был структурированным блочным языком, который включал явно типизированные переменные , подпрограммы и функции. Он опускал некоторые возможности ALGOL, такие как передача параметров по имени , что в ALGOL 60 означает передачу адреса памяти короткой подпрограммы ( thunk ) для пересчета параметра каждый раз, когда он упоминается.

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

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

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

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

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

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

Синтаксис

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

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

Когда AA был портирован на компьютер English Electric KDF9 , набор символов был изменен на International Organization for Standardization (ISO). Этот компилятор был восстановлен со старой бумажной ленты Эдинбургским проектом компьютерной истории и доступен онлайн, как и высококачественное сканирование оригинальной Эдинбургской версии руководства Atlas Autocode. [2]

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

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

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

Ссылки

  1. ^ abcd Брукер, RA; Рол, JS (1965). "Справочное руководство по Atlas Autocode" (PDF) . Факультет компьютерных наук Манчестерского университета.(Оригинальные сканы заархивированы 16.01.2019 на Wayback Machine )
  2. ^ ab Schofoeld, PD; Osbourne, MR (1965). "Программирование в Atlas Autocode, Computer Unit Report No. 1" (PDF) . Эдинбургский университет. Архивировано из оригинала (PDF) 2020-05-15 . Получено 2006-04-12 .(Оригинальные сканы, архив 21.07.2011 на Wayback Machine )
  3. ^ "Тони Брукер и компилятор Atlas Compiler" (PDF) . Февраль 2014 г. Получено 16 февраля 2024 г.

Внешние ссылки