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 повторений (к) Р +](П)
Манипуляции с векторами и матрицами требуют использования индексов. В GEORGE индекс(ы) предшествовали имени вектора или матрицы. Таким образом, A(j) было записано j | A
. Следующая программа считывает вектор a из 10 значений, затем возводит эти значения в квадрат и, наконец, выводит эти значения.
1, 10 Р1 (а)1, 10 повторений (к) j | дубликат * j | (a) ;]1, 10 П1 (а)
Приведенная выше таблица кодирования 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 букв алфавита, десятичную точку, знак плюс, знак минус и косую черту.
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка )[…]
KDF9
примечателен тем, что считается первым компьютером с форматом инструкций с нулевым адресом, который был анонсирован (в 1960 году). Он был впервые поставлен примерно в то же время (в начале 1963 года), что и другой известный компьютер с нулевым адресом,
Burroughs B5000
в Америке. Как и многие современные карманные калькуляторы, машина с нулевым адресом позволяет использовать арифметику Reverse Polish; это дает определенные преимущества авторам компиляторов. Считается, что внимание команды English Electric было впервые привлечено к концепции нулевого адреса через контакт с George (General Order Generator), системой программирования автокода, написанной для
компьютера
Deuce
Сиднейским университетом
, Австралия, во второй половине 1950-х годов. George использовал
Reverse Polish
, и команда KDF9 была привлечена к этому соглашению по прагматическим причинам желания повысить производительность за счет минимизации обращений к основной памяти. Это можно противопоставить более «теоретической» линии, принятой независимо
Burroughs
. Помимо аппаратного
вложенного хранилища
или стека — основного механизма компьютера с нулевым адресом — KDF9 имел другие группы центральных регистров для повышения производительности, что придавало ему интересную внутреннюю структуру. […][1] (Примечание. Это отредактированная версия выступления перед Северо-Западной группой Общества в Музее науки и промышленности, Манчестер, Великобритания, 1 октября 1996 г.)