Автокод

редактировать
Ранние языки компьютерного программирования

Автокод - это название семейства «упрощенных систем кодирования», позже названного языки программирования, разработанные в 1950-х и 1960-х годах для серии цифровых компьютеров в университетах Манчестера, Кембриджа и Лондона. Автокод был общим термином; автокоды для разных машин не обязательно были тесно связаны, как, например, разные версии единого языка Fortran.

Сегодня этот термин используется для обозначения семейства ранних языков, происходящих от Манчестерского Системы автокодирования Mark 1, которые в целом были похожи. В 1960-х термин автокодировщик использовался в более общем смысле для обозначения любого языка программирования высокого уровня, использующего компилятор. Примеры языков, называемых автокодами: COBOL и Fortran.

Содержание
  • 1 Автокод Гленни
  • 2 Марк 1 Автокод
  • 3 Более поздние автокоды
  • 4 Ссылки
  • 5 Источники
  • 6 Дополнительная литература
Автокод Гленни

Первый автокод и его компилятор были разработаны Аликом Гленни в 1952 году для компьютера Mark 1 в Манчестерском университете и Некоторые считают, что это первый скомпилированный язык программирования. Его основная цель заключалась в повышении понятности программирования машин Mark 1, которые были известны своим особенно сложным машинным кодом. Хотя полученный язык был намного яснее, чем машинный код, он все еще сильно зависел от машины.

Ниже приведен пример функции автокода Гленни, которая вычисляет формулу: f (t) = | т | + 5 t 3 {\ displaystyle f (t) = {\ sqrt {| t |}} + 5t ^ {3}}f (t) = {\ sqrt {| t |}} + 5t ^ {3} . В примере отсутствует необходимая инструкция масштабирования, необходимая для помещения целых чисел в переменные, и предполагается, что результаты умножения помещаются в нижний аккумулятор.

c @ VA t @ IC x @ ½C y @ RC z @ NC INTEGERS +5 → c # Поместите 5 в c → t # Загрузить аргумент из младшего аккумулятора # в переменную t + t TESTA Z # Положить | т | в нижний аккумулятор -t ENTRY Z SUBROUTINE 6 → z # Выполнить подпрограмму извлечения квадратного корня на # нижнем значении аккумулятора # и поместить результат в z + tt → y → x # Вычислить t ^ 3 и поместить его в x + tx → y → x + z + cx CLOSE WRITE 1 # Поместите z + (c * x) в # нижний аккумулятор # и верните

В руководстве пользователя Glennie's Autocode Compiler упоминается, что «потеря эффективности составляет не более 10%».

Влияние автокода Гленни на привычки программирования других пользователей Манчестера было незначительным. Об этом даже не упоминалось в статье Брукера 1958 года под названием «Программы автокода, разработанные для компьютеров Манчестерского университета».

Автокод Mark 1

Второй автокод для Mark 1 был запланирован в 1954 году и разработан R. А. Брукером в 1955 году и назывался «Автокод Марк 1». В отличие от первого, язык был почти машинно-независимым и имел арифметику с плавающей запятой. С другой стороны, он разрешал только одну операцию на строку, предлагал несколько мнемонических имен и не имел возможности определять пользовательские подпрограммы.

Пример кода, который загружает массив чисел с плавающей запятой размером 11 из ввода, будет выглядеть как это

n1 = 1 1 vn1 = I считывает ввод в v [n [1]] n1 = n1 + 1 j1,11 ≥ n1 переходит в 1, если n [1] ≤ 11

Автокод Брукера устранил две основные трудности программиста Mark 1: масштабирование и управление двухуровневым хранилищем. В отличие от своего предшественника, он широко использовался.

Более поздние автокоды

Брукер также разработал автокод для Ferranti Mercury в 1950-х годах совместно с Манчестерским университетом. Mercury Autocode имел ограниченный набор переменных a-z и a'-z 'и в некоторых отношениях напоминал ранние версии более позднего языка Dartmouth BASIC. Он предшествовал АЛГОЛу, не имел концепции стеков и, следовательно, не имел рекурсии или динамически распределенных массивов. Чтобы преодолеть относительно небольшой размер магазина, доступного на Mercury, большие программы были написаны как отдельные «главы», каждая из которых составляла оверлей. Требовались определенные навыки, чтобы свести к минимуму длительную передачу управления между главами. Эта концепция наложения из барабана под управлением пользователя стала обычным явлением до тех пор, пока виртуальная память не стала доступна на более поздних машинах. Несколько другие диалекты автокода Меркурия были реализованы для Ferranti Atlas (в отличие от более позднего Atlas Autocode ) и ICT 1300 и 1900 спектр.

Версия для EDSAC 2 была разработана Дэвидом Хартли из математической лаборатории Кембриджского университета в 1961 году. Известная как EDSAC 2 Autocode, это была прямая разработка Mercury Autocode, адаптированная к местным условиям, и отличавшаяся оптимизацией объектного кода и диагностикой исходного языка, которые были продвинутыми для того времени. Версия была разработана для преемника Titan (прототип компьютера Atlas 2) в качестве временной остановки, в то время как разрабатывался более существенно продвинутый язык, известный как CPL. CPL так и не был завершен, но породил BCPL (разработанный М. Ричардсом), который, в свою очередь, привел к B и, в конечном итоге, C. Atlas Autocode, современный, но отдельный поток разработки, был разработан для машины Atlas 1 Манчестерского университета .

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