Speedcoding , Speedcode или SpeedCo был первым языком программирования высокого уровня [a], созданным для компьютера IBM . [1] Язык был разработан Джоном У. Бэкусом в 1953 году для IBM 701 для поддержки вычислений с числами с плавающей точкой . [2]
Идея возникла из-за сложности программирования машины IBM SSEC , когда Бэкуса наняли для расчета астрономических положений в начале 1950 года. [3] Система speedcoding была интерпретатором и фокусировалась на простоте использования за счет системных ресурсов. Она предоставляла псевдоинструкции для общих математических функций: логарифмов, возведения в степень и тригонометрических операций. Резидентное программное обеспечение анализировало псевдоинструкции одну за другой и вызывало соответствующую подпрограмму. 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 связанный адрес памяти. Логические операции позволяют выполнять инструкции в порядке, отличном от того, в котором они записаны, что позволяет реализовывать goto, условные операторы, циклы и другое расширенное поведение. [6]
Зарезервированные ключевые слова арифметики и операций ввода/вывода [6]
Зарезервированные логические ключевые слова [6]