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