Short Code
Общие сведения
Short Code (в переводе с английского — «короткий код», также исторически упоминается в русскоязычной литературе как «укороченный код») — это один из первых языков программирования высокого уровня, разработанный в США. Исторически он классифицируется как примитивный автокод — ранняя система программирования, позволившая записывать алгоритмы в виде читаемых математических выражений, а не в виде наборов чистых машинных команд. Фундаментальной особенностью Short Code являлось то, что он функционировал в режиме интерпретации, а не предварительной компиляции, что оказывало решающее влияние на методологию его использования и производительность.
История создания
В конце 1940-х годов эксплуатация первых электронных вычислительных машин (таких как ENIAC, активно работавший с 1947 года) требовала составления программ исключительно в машинных кодах или путем физического переключения тумблеров и кабелей. Процесс разработки был крайне трудоемким и медленным, что породило необходимость создания более абстрактных инструментов взаимодействия с ЭВМ.
Разработка новой системы кодирования началась в 1949 году под руководством выдающегося американского ученого и инженера Джона Мокли. Изначально проект получил название Brief Code. В 1949 году была предпринята попытка адаптации первой версии этого языка для компьютера BINAC, однако, согласно историческим свидетельствам, эта реализация так и не была доведена до стадии практического тестирования и использования.
Официальным годом рождения языка считается 1950 год, когда была создана полноценная рабочая версия транслятора для компьютера UNIVAC. Именно тогда система была переименована в Short Code. В 1952 году инструмент получил дальнейшее развитие: была выпущена обновленная спецификация языка, специально адаптированная для архитектуры следующего поколения компьютеров — UNIVAC II.
Классификация и сравнение с современниками
Несмотря на статус первого языка программирования в Соединенных Штатах, архитектурно и концептуально Short Code значительно уступал европейским разработкам того времени. Американская система отставала от идей немецкого инженера Конрада Цузе (создателя языка Планкалькюль) приблизительно на десять лет.
Если Планкалькюль уже в 1940-х годах обладал глубокой теоретической базой, поддерживал массивы, сложные структуры записей и полноценные циклы, то возможности Short Code были крайне ограничены. Язык Джона Мокли не поддерживал ни циклы, ни массивы, предлагая программистам лишь минимально необходимый набор инструментов: Базовые арифметические вычисления. Возможность организации подпрограмм. Операторы условного перехода (ветвления), которые являлись критически важным элементом для построения любой логически нелинейной программы.
Синтаксис и методология программирования
Синтаксис Short Code строился на попытке формализации математических уравнений. Переменные в языке обозначались буквами латинского алфавита с присвоенными им числовыми индексами.
Процесс программирования не был полностью автоматизированным. Написание программы сводилось к тому, что разработчик сначала составлял математическое выражение в человекочитаемом виде, после чего осуществлял так называемую ручную конвертацию — подстановку специфических системных кодов (двузначных чисел) вместо переменных и математических операторов. Эти коды затем загружались в вычислительную машину.
Концептуальный пример записи логики в нотации языка:
A = B + C / B X C
На верхнем уровне абстракции фиксировалась сама математическая формула. Под ней программист формировал последовательность интерпретируемых операторов, которые физически представляли это выражение в памяти машины.
Производительность и критика
Главной и наиболее фатальной слабостью языка Short Code была его крайне низкая вычислительная эффективность. Из-за того, что система являлась интерпретатором (машина разбирала и исполняла подставленные коды непосредственно во время работы программы), скорость выполнения алгоритмов была приблизительно в 50 раз ниже по сравнению с аналогичным алгоритмом, написанным напрямую в машинных кодах.
Учитывая изначально низкую тактовую частоту ламповых вычислительных машин 1950-х годов, подобное замедление (в 50 раз) делало использование языка невозможным для решения масштабных вычислительных задач. Удобство записи формул не компенсировало колоссальные потери драгоценного машинного времени.
Именно из-за этих проблем производительности первые языки высокого уровня и автокоды внедрялись в индустрию с большим трудом. Профессиональные программисты относились к интерпретаторам с недоверием. Вплоть до 1960-х годов среди инженеров считалось золотым стандартом писать критически важное программное обеспечение исключительно в машинных кодах или на языке ассемблера, жертвуя удобством разработки ради достижения максимальной скорости работы компьютера.