stringtranslate.com

ДЖОРДЖ (язык программирования)

GEORGE (General Order Generator) — язык программирования , изобретенный Чарльзом Леонардом Хэмблином в 1957 году. [1] [2] [3] [4] Он был разработан на основе стека с выдвижными ячейками для арифметических операций и использовал обратную польскую запись . [5] Язык включал циклы , подпрограммы , условные операторы , векторы и матрицы .

Описание

Алгебраические выражения записывались в обратной польской нотации; таким образом, записывалось , и аналогично для других арифметических операций вычитания, умножения и деления.a b +

Алгебраическое выражение было записано , где « » означало «дублировать значение».a x dup × × b x × + c +dup

Следуя обратной польской форме, оператор присваивания для вычисления формулы был записан как .a x dup × × b x × + c + (y)

Компьютер оценил выражение следующим образом: значения a, затем x, были помещены на вершину стека накопителя ; ' dup' вызвала помещение копии самого верхнего значения ( x) на вершину стека накопителя; Умножение ( ×) привело к удалению (выталкиванию) и умножению двух верхних значений, а именно xи x, с возвратом произведения на вершину стека накопителя. Второе умножение ( ×) затем вызвало извлечение и умножение двух верхних значений в стеке (а именно aи x**2), а также помещение произведения ( a×x**2) на вершину стека накопителя. И так далее для оставшихся компонентов выражения. Последняя операция, а именно ( y), вернула значение выражения в хранилище, не изменяя состояние стека накопителя.

Если предположить, что значение наверху стека аккумулятора не требуется немедленно, оно будет удалено (очищено) с помощью оператора ( ;).

Следующая программа считывает восемь значений и формирует их сумму:

0,1, 8 повторений (к) Р +](П)
Первая строка инициализирует сумму, помещая нулевое значение в верхнюю часть стека аккумулятора.
Вторая строка вводит цикл, произносится как «от 1 до 8 повторить для j» и заканчивается квадратной скобкой.
В третьей строке R заставляет одно число считываться и помещаться наверх стека аккумулятора, а знак плюс (+) заставляет это значение добавляться к (частичной) сумме, оставляя наверху стека аккумулятора только частичную сумму.
После завершения цикла (P) приводит к тому, что окончательная сумма пробивается на карту.

Манипуляции с векторами и матрицами требуют использования индексов. В GEORGE индекс(ы) предшествовали имени вектора или матрицы. Таким образом, A(j) было записано j | A. Следующая программа считывает вектор a из 10 значений, затем возводит эти значения в квадрат и, наконец, выводит эти значения.

1, 10 Р1 (а)1, 10 повторений (к) j | дубликат * j | (a) ;]1, 10 П1 (а)
В программе первая строка представляет собой векторное чтение, которое считывает десять значений в a(1) — a(10).
Вторая строка вводит цикл для перебора десяти значений j.
Третья строка извлекает a(j), дублирует его, умножает эти два значения, получая квадрат, а затем сохраняет его в a(j). Обратите внимание на точку с запятой (;), которая очищает (или отменяет) верхнюю запись в стеке аккумулятора. Если бы этого не было сделано, аккумулятор постепенно заполнялся бы квадратами значений.
Последняя строка — это векторный перфоратор (т.е. печать) для выписывания десяти квадратов.

Приведенная выше таблица кодирования GEORGE помогла переписать программу на перфокарты.

Условные операции были записаны как переходы, следующим образом: если a > 0, то переход к 5 (что приводит к метке 5, если a больше нуля) будет записано

0 а > 5 ↑

Метка 5 была указана включением *5 в другом месте программы. Безусловные переводы были записаны 5↑

Вызовы подпрограмм осуществлялись с помощью стрелки вниз, например, для вызова подпрограммы с меткой 17 напишите 17↓, где метка 17 была закодирована с использованием столбца 3 приведенной выше таблицы.

Историческая справка

В первой версии, запущенной в мае 1957 года на компьютере English Electric DEUCE , все значения хранились в двоичной форме с фиксированной точкой в ​​32-битном слове с 16 двоичными разрядами.

Во второй версии, представленной в 1958 году, значения хранились в формате чисел с плавающей точкой, по одному значению на слово: 22 бита для мантиссы и 10 бит для экспоненты.

Требовалась некая форма кодовой таблицы, поскольку печатное оборудование того времени имело только 26 букв алфавита, десятичную точку, знак плюс, знак минус и косую черту.

Ссылки

  1. ^ Хамблин, Чарльз Леонард (май 1957). Схема безадресного кодирования на основе математической нотации (машинопись). Технологический университет Нового Южного Уэльса .{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  2. ^ Хамблин, Чарльз Леонард (июнь 1957 г.). «Схема безадресного кодирования на основе математической нотации». Труды Первой австралийской конференции по вычислениям и обработке данных . Солсбери, Южная Австралия: Исследовательский центр по вооружениям .
  3. ^ Хамблин, Чарльз Леонард (1957). «Компьютерные языки». Австралийский научный журнал (20?): 135–139; Хамблин, Чарльз Леонард (ноябрь 1985 г.). «Компьютерные языки». The Australian Computer Journal (переиздание). 17 (4): 195–198.
  4. ^ Хамблин, Чарльз Леонард (1958). GEORGE IA и II: Схема полутрансляции программирования для DEUCE: Руководство по программированию и эксплуатации (PDF) . Школа гуманитарных наук, Университет Нового Южного Уэльса, Кенсингтон, Новый Южный Уэльс. Архивировано (PDF) из оригинала 2020-04-04 . Получено 2020-07-27 .
  5. ^ Beard, Bob (осень 1997) [1996-10-01]. "Компьютер KDF9 — 30 лет спустя" (PDF) . Resurrection - The Bulletin of the Computer Conservation Society . № 18. Computer Conservation Society (CCS). стр. 7–15. ISSN  0958-7403. Архивировано (PDF) из оригинала 2020-07-27 . Получено 2020-07-27 . […] KDF9 примечателен тем, что считается первым компьютером с форматом инструкций с нулевым адресом, который был анонсирован (в 1960 году). Он был впервые поставлен примерно в то же время (в начале 1963 года), что и другой известный компьютер с нулевым адресом, Burroughs B5000 в Америке. Как и многие современные карманные калькуляторы, машина с нулевым адресом позволяет использовать арифметику Reverse Polish; это дает определенные преимущества авторам компиляторов. Считается, что внимание команды English Electric было впервые привлечено к концепции нулевого адреса через контакт с George (General Order Generator), системой программирования автокода, написанной для компьютера Deuce Сиднейским университетом , Австралия, во второй половине 1950-х годов. George использовал Reverse Polish , и команда KDF9 была привлечена к этому соглашению по прагматическим причинам желания повысить производительность за счет минимизации обращений к основной памяти. Это можно противопоставить более «теоретической» линии, принятой независимо Burroughs . Помимо аппаратного вложенного хранилища или стека — основного механизма компьютера с нулевым адресом — KDF9 имел другие группы центральных регистров для повышения производительности, что придавало ему интересную внутреннюю структуру. […][1] (Примечание. Это отредактированная версия выступления перед Северо-Западной группой Общества в Музее науки и промышленности, Манчестер, Великобритания, 1 октября 1996 г.)
  6. ^ Курс программирования . Факультет электротехники, Университет Нового Южного Уэльса . ndp 24.