Jump to content

Автокод

(Перенаправлено с Mercury Autocode )

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

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

Автокод Гленни

[ редактировать ]

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

Ниже приведен пример функции автокода Гленни, которая вычисляет формулу: . В примере опущена необходимая инструкция масштабирования, необходимая для помещения целых чисел в переменные, и предполагается, что результаты умножения помещаются в младший аккумулятор.

c@VA t@IC x@½C y@RC z@NC
INTEGERS +5 →c           # Put 5 into c
      →t                 # Load argument from lower accumulator
                         # to variable t
   +t     TESTA Z        # Put |t| into lower accumulator
   -t
          ENTRY Z
SUBROUTINE 6 →z          # Run square root subroutine on
                         # lower accumulator value
                         # and put the result into z
  +tt →y →x              # Calculate t^3 and put it into x 
  +tx →y →x
+z+cx   CLOSE WRITE 1    # Put z + (c * x) into
                         # lower accumulator
                         # and return

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

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

Марк 1 Автокод

[ редактировать ]

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

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

      n1 = 1         
1    vn1 = I         reads input into v[n[1]]
      n1 = n1 + 1
   j1,11 ≥ n1        jumps to 1 if n[1] ≤ 11

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

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

[ редактировать ]

Брукер также разработал автокод для Ferranti Mercury в 1950-х годах совместно с Манчестерским университетом. Mercury Autocode имел ограниченный набор переменных az и a'-z' и в некотором смысле напоминал ранние версии более позднего языка Dartmouth BASIC . Он предшествовал ALGOL , не имел понятия стеков и, следовательно, не имел рекурсии или динамически выделяемых массивов . Чтобы преодолеть относительно небольшой размер хранилища, доступного на Mercury, большие программы были написаны как отдельные «главы», каждая из которых представляла собой наложение . Требовались определенные навыки, чтобы свести к минимуму трудоемкую передачу контроля между отделениями. Эта концепция наложения барабана под контролем пользователя стала распространенной, пока виртуальная память не стала доступна в более поздних машинах. Немного другие диалекты Mercury Autocode были реализованы для 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 Манчестерского университета .

  1. ^ Лондон, Кейт (1968). «4. Программирование». Введение в компьютеры (1-е изд.). Лондон: Фабер и Фабер Лимитед. п. 184. СБН  571085938 . Языки программирования «высокого» уровня часто называют автокодами, а процессорную программу — компилятором.
  2. ^ Лондон, Кейт (1968). «4. Программирование». Введение в компьютеры (1-е изд.). Лондон: Фабер и Фабер Лимитед. п. 186. СБН  571085938 . Два языка программирования высокого уровня, которые можно использовать здесь в качестве примеров для иллюстрации структуры и назначения автокодов, — это COBOL (общий бизнес-ориентированный язык) и FORTRAN (формальный перевод).
  3. ^ Кнут, с. 42-43
  4. ^ Кнут, с. 48
  5. ^ Кнут, с. 63-64
  6. ^ Кнут, с. 65

Источники

[ редактировать ]
  • Кэмпбелл-Келли, Мартин (1980). «Программирование Mark 1: раннее программирование в Манчестерском университете». Анналы истории вычислительной техники . 2 (2). ИИЭР: 130–167. дои : 10.1109/MAHC.1980.10018 . S2CID   10845153 .
  • Гарсиа Камареро, Эрнесто (1961). AUTOCODE — упрощенная система кодирования для компьютера MERCURY (на испанском языке). Университет Буэнос-Айреса. п. 70.
  • Лондон, Кейт (1968). Введение в компьютеры . п. 261.
  • Кнут, Дональд Э.; Пардо, Луис Трабб (1976). «Раннее развитие языков программирования». Стэнфордский университет, факультет компьютерных наук.

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2ec8003d3b819eee8870e999436c280c__1700201280
URL1:https://arc.ask3.ru/arc/aa/2e/0c/2ec8003d3b819eee8870e999436c280c.html
Заголовок, (Title) документа по адресу, URL1:
Autocode - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)