Спидкодирование
Парадигма | структурированный , общий |
---|---|
Разработано | Джон Бэкус |
Разработчик | Джон Бэкус и IBM |
Впервые появился | 1953 год |
Дисциплина набора текста | сильный , статичный , явный |
Под влиянием | |
Язык ассемблера , машинный код | |
Под влиянием | |
Фортран , АЛГОЛ 58 , БЕЙСИК , C , PL/I , ПАКТ I , Свинка , Ratfor |
Speedcoding , Speedcode или SpeedCo был первым языком программирования высокого уровня. [а] созданный для компьютера IBM . [1] Язык был разработан Джоном Бэкусом в 1953 году для IBM 701 для поддержки вычислений с числами с плавающей запятой . [2]
Идея возникла из-за сложности программирования машины IBM SSEC , когда Бэкуса наняли для расчета астрономических положений в начале 1950 года. [3] Система скоростного кодирования представляла собой интерпретатор и была ориентирована на простоту использования за счет системных ресурсов. Он предоставлял псевдоинструкции для распространенных математических функций: логарифмов, возведения в степень и тригонометрических операций. Резидентное программное обеспечение анализировало псевдоинструкции одну за другой и вызывало соответствующую подпрограмму. Speedcoding также был первой реализацией десятичных операций ввода-вывода. Хотя это существенно сокращало затраты на написание многих заданий, время работы программы, написанной с помощью Speedcoding, обычно в десять-двадцать раз превышало время выполнения машинного кода. [4] Переводчик использовал 310 слов памяти, около 30% памяти, доступной на 701. [1]
История и развитие
[ редактировать ]В августе 1952 года несколько десятков инженеров IBM и заказчиков IBM 701 встретились в Покипси, штат Нью-Йорк, чтобы обменяться идеями и передовым опытом программирования новых машин при сборке. Некоторые участники выразили разочарование медленным характером программирования и отладки на ассемблере и поставили под сомнение полезность 701 в приложениях, где решения проблем требовались быстро или когда ценность решения оправдывала затраты времени вычислений, но не стоимость программирования. и отладка. Участники также жаловались на проблемы с «масштабированием» или на необходимость неукоснительно отслеживать десятичную точку в арифметических операциях. [5]
Джон В. Шелдон, руководитель Бюро технических вычислений IBM, присутствовавший на встрече, и другие считали, что «интерпретирующая» система программирования, использующая операции с плавающей запятой, была лучшим решением этой проблемы. Шелдон попросил Джона Бэкуса, который ранее работал над транслятором кода CPC в SSEC , руководить созданием нового интерпретируемого языка программирования с плавающей запятой для использования внутри IBM. Сам Бэкус ранее выражал заинтересованность в совершенствовании методов программирования и отмечал, что вычислительные затраты примерно поровну делятся между стоимостью вычислений и стоимостью программного персонала, и что дополнительные расходы на тестирование делают рабочую силу значительно более крупной. Начиная с 1953 года Бэкус и пять его коллег разработали этот новый язык и назвали его «Speedcoding», и вскоре его использование распространилось за пределы IBM на установки системы 701 у клиентов. [5]
Синтаксис и семантика
[ редактировать ]Программы Speedcoding организованы как серия инструкций, каждая из которых хранится в памяти как одно 72-битное слово данных. Инструкция обычно состоит из двух операций (OP 1 и OP 2 ) и 4 адресов памяти. Первая операция (OP 1 ) представляет собой математическую операцию или операцию ввода/вывода, которая имеет 3 связанных адреса памяти, один или несколько из которых могут быть изменены в зависимости от характера операции. Математические операции включают базовые арифметические операции, извлечение квадратного корня и тригонометрические функции. К логическим операциям относятся функциональные возможности чтения, записи, пропуска и перемотки магнитной ленты , а также операции по взаимодействию с данными, хранящимися в памяти барабана . Вторая операция (OP 2 ) — это логическая операция, имеющая оставшийся 1 связанный адрес памяти. Логические операции позволяют выполнять инструкции в порядке, отличном от их написания, что позволяет реализовать переходы, условные выражения, циклы и другое расширенное поведение. [6]
Зарезервированные арифметические действия и ключевые слова операций ввода/вывода [6]
- ДОБАВЛЯТЬ
- СУБ
- АДДАБ
- АБАДД
- СУБАБ
- АБСУБ
- MPY
- НГМПИ
- ДИВ
- НГДИВ
- КОРЕНЬ
- ЕГО
- РОСТ
- Опыт
- ЛН
- ДВИГАТЬСЯ
- ВРТПЖ
- ВРТПК
- ВРТПЛ
- ВРТПМ
- RFTPJ
- РФТПЛ
- РФТПМ
- РБТПЖ
- РБТПК
- РБТПЛ
- РБТПМ
- СФТПЖ
- СФТПК
- СФТПЛ
- СФТПМ
- СБТПЖ
- СБТПК
- СБТПЛ
- СБТПМ
- РВТПЖ
- РВТПК
- РВТПЛ
- RWTPM
- ЭФТПЖ
- ЕФТПК
- ЕФТПЛ
- ЕФТПМ
- WRDRP
- WRDRQ
- РФДРП
- RFDRQ
- ПЕЧАТЬ
- ИЗВЛЕЧИТЬ
- НЕА
Зарезервированные логические ключевые слова [6]
- ТР
- ТРПЛ
- ТРМН
- ТРЗ
- СНТРП
- СНТРК
- ЛЮБОВЬ
- ТАКОЙ ЖЕ
- ТИЦ
- TIBC
- ВОТ И ВСЕ
- ТИАБК
- ТДА
- ВМТ
- ТДАБ
- ТДБК
- ТДАК
- ТДАБК
- Набор
- СЭТРБ
- СЕТРК
- ИСКРА
- УХОД
- СКРК
- ГОЛОС
- РАДДБ
- РАДДК
- РАДДД
- АДДА
- АДДБ
- ADDC
- ДОБАВИТЬ
- НИЖЕ
- СУББ
- СУБК
- СУБД
- СТА
- И Т. Д
- СТЦ
- СТД
- ПРОПУСКАТЬ
- ПРЧ
- СТЧ
- ДЕЙСТВИТЕЛЬНО
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Значение символическое и направлено на выразительность естественного языка, в отличие от кодирования, ориентированного на машинные или аппаратные инструкции.
Ссылки
[ редактировать ]- ^ Jump up to: а б Аллен, Фрэнсис «Фрэн» Элизабет (сентябрь 1981 г.). «История технологии языковых процессоров в IBM». Журнал исследований и разработок IBM . 25 (5): 535–548. дои : 10.1147/rd.255.0535 .
- ^ Шаша, Деннис Эллиот ; Лазер, Кэти (1998). Сошли с ума: жизнь и открытия 15 великих ученых-компьютерщиков . Нью-Йорк, США: Copernicus , Springer-Verlag New York, Inc. ISBN 0-387-98269-8 . LCCN 98-16911 . СПИН 10693423.
- ^ Бэкус, Джон В. (5 сентября 2006 г.). Буч, Грейди (ред.). «Устная история Джона Бэкуса» (PDF) . Номер ссылки: X3715.2007 (Интервью). Эшленд, Орегон, США: Музей истории компьютеров . Архивировано (PDF) из оригинала 8 апреля 2022 г. Проверено 23 апреля 2011 г. (42 страницы)
- ^ Пью, Эмерсон В.; Джонсон, Лайл Р.; Палмер, Джон Х. (1991). Системы IBM 360 и ранние версии 370 . МТИ Пресс . п. 38. ISBN 0-262-16123-0 .
- ^ Jump up to: а б Баше, Чарльз; Джонсон, Лайл; Палмер, Джон; Пью, Эмерсон (17 марта 1986 г.). Первые компьютеры IBM . МТИ Пресс. стр. 332–338. ISBN 9780262523936 . Проверено 25 августа 2023 г.
- ^ Jump up to: а б с Система скоростного кодирования IBM для машин электронной обработки данных типа 701 (PDF) . Нью-Йорк, США: Международная корпорация Business Machines . 1954 [10 сентября 1953]. Форма 24-6059-0 (5-54:2М-Ж). Архивировано (PDF) из оригинала 4 июля 2022 г. Проверено 4 июля 2022 г.
Дальнейшее чтение
[ редактировать ]- Система скоростного кодирования IBM для машин электронной обработки данных типа 701 (PDF) . Нью-Йорк, США: Международная корпорация Business Machines . 1954 [10 сентября 1953]. Форма 24-6059-0 (5-54:2М-Ж). Архивировано (PDF) из оригинала 4 июля 2022 г. Проверено 4 июля 2022 г. (48 страниц)
- Бэкус, Джон В. (январь 1954 г.). «Система скоростного кодирования IBM 701» (PDF) . Журнал АКМ . 1 (1): 4–6. Архивировано (PDF) из оригинала 16 мая 2022 г. Проверено 4 июля 2022 г.
- Бэкус, Джон В .; Харлан, Херрик (13–14 мая 1954 г.). «IBM 701 Speedcoding и другие системы автоматического программирования» . Материалы симпозиума по автоматическому программированию для цифровой вычислительной машины . Вашингтон, округ Колумбия, США: Управление военно-морских исследований . стр. 106–113 . Проверено 4 июля 2022 г.
- Саммет, Жан Э. (1969). Языки программирования: история и основы . Прентис-Холл .