ДЖОРДЖ (язык программирования) - GEORGE (programming language)
ДЖОРДЖ (Генератор общего порядка) - это язык программирования изобретен Чарльз Леонард Хэмблин в 1957 г.[1][2][3][4]
Он был разработан на основе раскрывающегося всплывающего окна для арифметических операций и использовался обратная польская запись.[5]
Включенный язык петли, подпрограммы, условные, векторов, и матрицы.
Алгебраические выражения записывались в обратной польской записи; таким образом, было написано а б +
, и то же самое для других арифметических операций вычитания, умножения и деления.
Алгебраическое выражение было написано а х дуп × × б х × + с +
, куда 'обман
'означало' дублировать значение '.
После обратной польской формы оператор присваивания для оценки формулы был написан как а х дуп × × б х × + с + (у)
.
Компьютер вычислил выражение следующим образом: значения а
, тогда Икс
, были помещены в верхнюю часть аккумуляторная батарея; 'обман
'вызвал копию самого верхнего значения (Икс
) для установки на верх аккумуляторной батареи; Умножить (×
) вызвало два верхних значения, а именно: Икс
и Икс
, который нужно удалить (вытащить) и умножить, возвращая произведение на верх стека аккумулятора. Второе умножение (×
) затем вызвали два верхних значения в стеке (а именно, а
и х ** 2
), которое нужно увеличивать и умножать, а произведение (а × х ** 2
), который должен быть помещен в верхнюю часть аккумуляторной батареи. И так по остальным составляющим выражения. Заключительная операция, а именно (у
), вернул значение выражения в хранилище, не меняя состояния стека аккумулятора.
Если предположить, что значение в верхней части стека аккумулятора не требуется немедленно, оно будет удалено (очищено) с помощью оператора (;
).
Следующая программа считывает восемь значений и формирует их сумму:
0,1, 8 повторений (j) R +] (P)
- Первая строка инициализирует сумму, помещая нулевое значение в верхнюю часть стека аккумулятора.
- Вторая строка вводит цикл, обозначается как «от 1 до 8 повторений для j» и заканчивается квадратной скобкой.
- В третьей строке R заставляет одно число считываться и помещаться в верхнюю часть стека аккумулятора, а знак плюс (+) заставляет это значение добавляться к (частичной) сумме, оставляя только частичную сумму на верх аккумуляторной батареи.
- После того, как цикл завершается, (P) указывает окончательную сумму, которая будет нанесена на карту.
Манипулирование векторами и матрицами требует записи в нижнем индексе. В GEORGE нижний индекс (и) предшествует имени вектора или матрицы. Таким образом, A (j) был записан j | А
. Следующая программа читает в векторе а из 10 значений, затем формирует квадраты этих значений и, наконец, распечатывает эти значения.
1, 10 R1 (a) 1, 10 rep (j) j | дубль * j | (a);] 1, 10 P1 (a)
- В программе первая строка - это вектор, который считывает десять значений от (1) до (10).
- Вторая строка вводит цикл для перебора десяти значений j.
- Третья строка выбирает a (j), дублирует его, умножает эти два значения, давая квадрат, а затем сохраняет его в a (j). Обратите внимание на точку с запятой (;), которая очищает (или отменяет) верхнюю запись в стеке аккумулятора. Если бы этого не было сделано, аккумулятор постепенно заполнялся бы квадратами значений.
- Последняя строка - это векторный штамп (т.е. печать) для записи десяти квадратов.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | ||
---|---|---|---|---|---|---|---|---|---|---|
0 | / | 0 | 16 | а | q | (а) | (q) | бревно | р | |
1 | , | // | 1 | 17 | б | р | (б) | (р) | exp | (П) |
2 | ; | ~ | 2 | 18 | c | s | (c) | (s) | пау | |
3 | * | & | 3 | 19 | d | т | (г) | (т) | rem | |
4 | ∨ | 4 | 20 | е | ты | (е) | (u) | sqrt | ||
5 | + | ] | 5 | 21 | ж | v | (е) | (v) | грех | |
6 | - | ↓ | 6 | 22 | грамм | ш | (грамм) | (ш) | потому что | |
7 | × | ↑ | 7 | 23 | час | Икс | (час) | (Икс) | ||
8 | ÷ | представитель | 8 | 24 | я | у | (я) | (у) | R1 | |
9 | негр | я | 9 | 25 | j | z | (j) | (z) | P1 | |
10 | мод | 10 | 26 | k | α | (k) | (α) | R11 | ||
11 | Максимум | 11 | 27 | л | β | (l) | (β) | P11 | ||
12 | обман | 12 | 28 | м | γ | (м) | (γ) | |||
13 | rev | 13 | 29 | п | λ | (п) | (λ) | |||
14 | = | 14 | 30 | Θ | μ | (Θ) | (μ) | |||
15 | > | 15 | 31 | п | ω | (п) | (ω) |
Приведенная выше таблица кодирования 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 букв алфавита, десятичную точку, знак плюс, минус и косую черту.
Рекомендации
- ^ Хэмблин, Чарльз Леонард (Май 1957 г.). Схема безадресного кодирования на основе математической записи (Машинопись). Технологический университет Нового Южного Уэльса.
- ^ Хэмблин, Чарльз Леонард (Июнь 1957 г.). «Схема безадресного кодирования на основе математической записи». Труды Первой Австралийской конференции по вычислениям и обработке данных. Солсбери, Южная Австралия: Центр исследования оружия.
- ^ Хэмблин, Чарльз Леонард (1957). «Компьютерные языки». Австралийский научный журнал (20?): 135–139; Хэмблин, Чарльз Леонард (Ноябрь 1985 г.). «Компьютерные языки». Австралийский компьютерный журнал (Перепечатка). 17 (4): 195–198.
- ^ Хэмблин, Чарльз Леонард (1958). GEORGE IA и II: Схема полупереводного программирования для DEUCE: Руководство по программированию и эксплуатации (PDF). Школа гуманитарных наук, Университет Нового Южного Уэльса, Кенсингтон, Новый Южный Уэльс. В архиве (PDF) из оригинала 2020-04-04. Получено 2020-07-27.
- ^ Борода, Боб (осень 1997 г.) [1996-10-01]. «Компьютер KDF9 - 30 лет спустя» (PDF). Воскрешение - Бюллетень Общества сохранения компьютеров. № 18. Общество сохранения компьютеров (CCS). С. 7–15. ISSN 0958-7403. В архиве (PDF) из оригинала 27.07.2020. Получено 2020-07-27.
[…] KDF9 примечателен тем, что считается первым анонсированным компьютером формата команд с нулевым адресом (в 1960 г.). Впервые он был доставлен примерно в то же время (в начале 1963 года), что и другой знаменитый компьютер с нулевым адресом, Берроуз B5000 в Америке. Как и многие современные карманные калькуляторы, машина с нулевым адресом позволяет использовать обратную польскую арифметику; это дает определенные преимущества разработчикам компиляторов. Считается, что внимание команды English Electric было впервые привлечено к концепции нулевого адреса благодаря контакту с Джорджем (Генератором общего порядка), системой программирования автокода, написанной для Двойка компьютер от Сиднейский университет, Австралия, во второй половине 1950-х гг. Джордж использовал Перевернутый польский, и команда KDF9 была привлечена к этому соглашению по прагматической причине, желая повысить производительность за счет минимизации доступа к основному магазину. Это можно противопоставить более "теоретической" линии, взятой независимо от Берроуз. Помимо оборудования гнездовой магазин или стек - основной механизм компьютера с нулевым адресом - у KDF9 были другие группы центральных регистров для повышения производительности, которые придавали ему интересную внутреннюю структуру. […]
[1] (NB. Это отредактированная версия доклада, сделанного Северо-Западной Группой Общества в Музее науки и промышленности, Манчестер, Великобритания, 01.10.1996.) - ^ Курс программирования. Школа Электротехники, Университет Нового Южного Уэльса. нет данных п. 24.