Jump to content

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

ДЖОРДЖ (генератор общего порядка) — язык программирования, изобретенный Чарльзом Леонардом Хэмблином в 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 rep (j)
   R +
]
(P)
Первая строка инициализирует сумму, помещая нулевое значение на вершину стека аккумуляторов.
Вторая строка представляет собой цикл, произносится как «повторение от 1 до 8 для j» и заканчивается квадратной скобкой.
В третьей строке R заставляет одно число считываться и помещаться на вершину стека аккумуляторов, а знак плюс (+) вызывает добавление этого значения к (частичной) сумме, оставляя только частичную сумму в верхняя часть аккумуляторного стека.
После завершения цикла (P) окончательная сумма записывается на карту.

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

1, 10 R1 (a)
1, 10 rep (j)
   j | a dup * j | (a) ;
]
1, 10 P1 (a)
В программе первая строка представляет собой векторное чтение, которое считывает десять значений в значения от a(1) до a(10).
Вторая строка представляет цикл для прохождения десяти значений j.
Третья строка извлекает a(j), дублирует его, умножает эти два значения, давая квадрат, а затем сохраняет его в a(j). Обратите внимание на точку с запятой (;), которая очищает (или отменяет) верхнюю запись в стеке аккумуляторов. Если бы этого не было сделано, аккумулятор постепенно заполнялся бы квадратами значений.
Последняя строка представляет собой векторную печать (т. е. печать) для записи десяти квадратов.
Таблица кодировок GEORGE [6]
1 2 3 4 5 6 7 8 15
0 / 0 16 а д (а) (к) бревно Р
1 , // 1 17 б р (б) (р) опыт (П)
2 ; ~ 2 18 с с (с) (с) бах
3 * & 3 19 д т (г) (т) рем
4 4 20 и в (и) (в) кврт
5 + ] 5 21 ж v (е) (v) грех
6 - 6 22 г В (г) (В) потому что
7 × 7 23 час х (час) (х)
8 ÷ представитель 8 24 я и (я) (и) Р1
9 нег я 9 25 дж С (к) (С) П1
10 против 10 26 к а (к) (а) Р11
11 Макс 11 27 л б (л) (б) P11
12 обман 12 28 м с (м) (с)
13 оборот 13 29 н л (н) (л)
14 = 14 30 че м (Я) (м)
15 > 15 31 п ой (п) (ой)

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

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

0 a > 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 г.). «Компьютерные языки». Австралийский компьютерный журнал (перепечатка). 17 (4): 195–198.
  4. ^ Хэмблин, Чарльз Леонард (1958). ДЖОРДЖ IA и II: Полупереводная схема программирования для DEUCE: Руководство по программированию и эксплуатации (PDF) . Школа гуманитарных наук Университета Нового Южного Уэльса, Кенсингтон, Новый Южный Уэльс. Архивировано (PDF) из оригинала 4 апреля 2020 г. Проверено 27 июля 2020 г.
  5. ^ Борода, Боб (осень 1997 г.) [1996-10-01]. «Компьютер KDF9 — 30 лет спустя» (PDF) . Воскресение — Бюллетень Общества охраны компьютеров . № 18. Общество охраны компьютеров (CCS). стр. 7–15. ISSN   0958-7403 . Архивировано (PDF) из оригинала 27 июля 2020 г. Проверено 27 июля 2020 г. […] KDF9 примечателен тем, что считается первым анонсированным компьютером с форматом инструкций с нулевым адресом (в 1960 году). Впервые он был поставлен примерно в то же время (начало 1963 года), что и другой знаменитый компьютер с нулевым адресом, Burroughs B5000 , в Америке. Как и многие современные карманные калькуляторы, машина с нулевым адресом позволяет использовать обратную польскую арифметику; это дает определенные преимущества авторам компиляторов. Считается, что внимание команды English Electric было впервые привлечено к концепции нулевого адреса благодаря контакту с George (General Order Generator), системой программирования автокода, написанной для Deuce компьютера Сиднейским университетом , Австралия, в последнем половина 1950-х годов. Джордж использовал Reversed Polish и команда KDF9 были привлечены к этому соглашению по прагматической причине: желание повысить производительность за счет минимизации доступа к основному хранилищу. Это можно противопоставить более «теоретической» линии, независимо выдвинутой Берроузом . Помимо аппаратного хранилища или стека - основного механизма компьютера с нулевым адресом - KDF9 имел другие группы центральных регистров для повышения производительности, что придавало ему интересную внутреннюю структуру. […] [1] (Примечание. Это отредактированная версия выступления, прочитанного перед Северо-Западной группой Общества в Музее науки и промышленности, Манчестер, Великобритания, 1 октября 1996 г.)
  6. ^ Курс программирования . Школа электротехники Университета Нового Южного Уэльса . НДП 24.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b10a1281f513a642b28bddd697980d39__1681485900
URL1:https://arc.ask3.ru/arc/aa/b1/39/b10a1281f513a642b28bddd697980d39.html
Заголовок, (Title) документа по адресу, URL1:
GEORGE (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)