Найти пути решения этой задачи взялись Сергей Алексеевич Лебедев и Алексей Андреевич Ляпунов. (АИ) Собравшись в начале 1959 года, они обсудили варианты и сошлись на том, что задачу управления манипулятором, а также, в будущем, управление различными робототехническими комплексами, надо решать при помощи электронной системы, способной если не самообучаться, то хотя бы легко объединять предварительно описанные элементарные действия в наборы более сложных действий, и обращаться к ним в виде простых, легко читаемых инструкций, максимально приближенных к обычному человеческому языку.
— Смотрите, Сергей Алексеич, вот, скажем, надо взять заготовку с лотка. Пусть даже лоток у нас наклонный и вибрирующий, и манипулятор берёт заготовку каждый раз с одного и того же места, — взялся объяснить свою идею Ляпунов. — То есть, манипулятору надо повернуться в определённое положение, опустить захват до нужной высоты, и схватить заготовку. Потом снова повернуться, вытянуть «руку» к станку, повернуть захват с заготовкой на заданный угол. То есть, нам нужен язык программирования, в котором, примерно как в АЛГОЛе, можно описать элементарные действия в виде подпрограмм, вызывая которые с параметрами значений углов поворота, можно составить основную управляющую программу. Желательно, чтобы она легко читалась человеком, то есть выглядела примерно так:
СНЯТЬ С ТОКАРНОГО СТАНКА ДЕТАЛЬ
ПОСТАВИТЬ ДЕТАЛЬ НА ФРЕЗЕРНЫЙ СТАНОК
ВЗЯТЬ ЗАГОТОВКУ
ПОСТАВИТЬ ЗАГОТОВКУ НА ТОКАРНЫЙ СТАНОК.
— И так далее. Понимаете? Чтобы такую программу понимал и мог составить каждый технолог, не имеющий понятия о всех этих чёртовых машинных кодах!
— Конечно, — согласился Лебедев. — Но на АЛГОЛе такую программу реализовать будет сложно.
— Тут нужен особый язык, которого ещё нет. Его ещё предстоит разработать.
Лебедев задумался, вспоминая. Что-то крутилось в памяти, он чувствовал, что решение есть, оно было прислано из 2012 года в составе полученного массива информации.
— Алексей Андреевич, а вот у вас толковый аспирант был, Ершов. Он перед аспирантурой у нас работал. Он сейчас где? — спросил академик.
— Ершов? Он сейчас заведует отделом автоматизации программирования в Вычислительном центре АН СССР.
— Дайте мне его телефончик, пожалуйста, — попросил Лебедев. — Я думаю, это тот человек, который нам нужен.
Сергей Алексеевич нашёл то, что искал. Александр Веденеев прислал вполне приличную подборку литературы по нескольким перспективным языкам, а также часть репозитория, содержащую не только бинарные пакеты, но и исходные коды. По ним в ИТМиВТ под руководством Лебедева уже переписали в машинных кодах ядро операционной системы (АИ, см. гл. 03-15). Сейчас перед учёными стояла похожая задача.
Андрей Петрович Ершов приехал к Лебедеву в ИТМиВТ через пару дней. Академик коротко пересказал ему свою недавнюю беседу с Ляпуновым.
— Вы ведь сейчас занимаетесь разработкой расширения АЛГОЛа? — спросил Лебедев.
— Не то что бы занимаемся... Пока это только предварительные намётки, — признался Ершов. — Идеи такие есть, но они, если честно, ещё не оформились во что-то конкретное.
— Сейчас правительство поставило перед нами задачу автоматизации производств, разработки программного обеспечения для робототехники. Есть одна зарубежная разработка, судя по всему, из числа закрытых, — сказал Лебедев. — Никакой открытой информации по ней нет, но чекисты постарались. Вот смотрите.
Он слегка повернул к Ершову стоящий у него на столе монитор терминала, и залогинился в БЭСМ-1М. Ершов с интересом смотрел на зелёные буквы и цифры, светящиеся на экране — ему обычно приходилось работать с машиной через телетайп, читая её ответы на бумажной ленте.
— Предположим, у нас есть язык, основные команды которого реализованы в виде коротких программ в машинных кодах, загружаемых, или даже непосредственно прошитых в постоянную память ЭВМ.
— Ого! То есть, программа не транслируется, а выполняется в режиме интерпретации, но со скоростью транслируемой программы? — тут же уточнил Ершов.
— Может и транслироваться, но задача трансляции в этом случае тоже упрощается, — ответил академик. — Ещё более важное свойство языка — можно комбинировать несколько операторов — «слов», в более сложное «слово», и сразу же обращаться к нему в программе. Вновь определённое слово заносится на вершину словаря языка. Смотрите.
Лебедев напечатал:
15 SPACES
На мониторе отобразилось Ok, перед которым было напечатано 15 пробелов.
— Теперь я выведу звёздочку, у неё код 42, — академик набрал на клавиатуре
42 EMIT
Нажал ввод и на экране появилась звёздочка «*»
— Чтобы каждый раз не писать, язык позволяет определить новые слова, — Лебедев набрал строчки:
: ЗВЕЗДА 42 EMIT ;
: ПОЛЕ 15 SPACES ;
: ЗВЕЗДЫ 0 DO ЗВЕЗДА LOOP ;
— Определение нового слова начинается с двоеточия и заканчивается точкой с запятой. Теперь, если ввести команду:
ПОЛЕ 3 ЗВЕЗДЫ
— Мы получим три звёздочки, отодвинутые от края экрана на 15 пробелов, — улыбнулся Лебедев. — Поняли принцип, Андрей Петрович?