Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

ДЖОРДЖ (Генератор общего порядка) - это язык программирования, изобретенный Чарльзом Леонардом Хамблином в 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) поместить на верх стека аккумулятора; Функция Multiply ( ×) вызвала удаление двух верхних значений, а именно, xи x, которые были удалены (извлечены) и умножены, возвращая произведение на вершину стека аккумулятора. Затем вторая функция multiply ( ×) вызвала извлечение и умножение двух верхних значений в стеке (а именно, aи x**2), а также помещение product ( a×x**2) в верхнюю часть стека аккумулятора. И так по остальным компонентам выражения. Заключительная операция, а именно (y), вернул значение выражения в хранилище без изменения состояния стека аккумулятора.

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

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

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

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

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

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

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

0 а> 5 ↑ 

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

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

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

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

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

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

Ссылки [ править ]

  1. ^ Хамблин, Чарльз Леонард (май 1957). Схема безадресного кодирования, основанная на математической нотации (машинописный текст). Технологический университет Нового Южного Уэльса .
  2. ^ Хэмблин, Чарльз Леонард (июнь 1957 г.). «Схема безадресного кодирования, основанная на математической нотации». Труды Первой австралийской конференции по вычислениям и обработке данных . Солсбери, Южная Австралия: Центр исследования оружия .
  3. ^ Хэмблин, Чарльз Леонард (1957). «Компьютерные языки». Австралийский научный журнал (20?): 135–139; Хэмблин, Чарльз Леонард (ноябрь 1985). «Компьютерные языки». Австралийский компьютерный журнал (переиздание). 17 (4): 195–198.
  4. ^ Хэмблин, Чарльз Леонард (1958). GEORGE IA и II: Схема полупереводного программирования для DEUCE: Руководство по программированию и эксплуатации (PDF) . Школа гуманитарных наук, Университет Нового Южного Уэльса, Кенсингтон, Новый Южный Уэльс. Архивировано (PDF) из оригинала 2020-04-04 . Проверено 27 июля 2020 .
  5. ^ Борода, Боб (осень 1997) [1996-10-01]. «Компьютер KDF9 - 30 лет спустя» (PDF) . Воскресение - Бюллетень Общества Сохранения Компьютеров . № 18. Общество сохранения компьютеров (CCS). С. 7–15. ISSN 0958-7403 . Архивировано (PDF) из оригинала 27.07.2020 . Проверено 27 июля 2020 . […] KDF9 примечателен тем, что считается первым компьютером с форматом команд с нулевым адресом, о котором было объявлено (в 1960 году). Впервые он был доставлен примерно в то же время (в начале 1963 года), что и другой знаменитый компьютер с нулевым адресом, Burroughs B5000.   в Америке. Как и многие современные карманные калькуляторы, машина с нулевым адресом позволяет использовать обратную польскую арифметику; это дает определенные преимущества разработчикам компиляторов. Считается, что внимание команды English Electric было впервые привлечено к концепции нулевого адреса благодаря контакту с Джорджем (Генератором общего порядка), системой программирования автокода, написанной для компьютера Deuce Сиднейским университетом , Австралия, в последнем. половина 1950-х гг. Джордж использовал Reversed Polish , и команда KDF9 была привлечена к этому соглашению по прагматической причине, желая повысить производительность за счет минимизации доступа к основному магазину. Это можно противопоставить более "теоретической" линии, взятой независимо Берроузом.. Помимо аппаратного вложения хранилища или стека - основного механизма компьютера с нулевым адресом - KDF9 имел другие группы центральных регистров для повышения производительности, что придавало ему интересную внутреннюю структуру. […] [1] (NB. Это отредактированная версия выступления Северо-Западной группы общества в Музее науки и промышленности, Манчестер, Великобритания, 01.10.1996.)
  6. ^ Курс программирования . Школа электротехники Университета Нового Южного Уэльса . ндп 24.