Институт

Рар А.Ф. История ЭПСИЛОН

Как из СИГМЫ вылупился ЭПСИЛОН

Я пришёл в команду Ершова в начале 1965 года, в момент, когда команда эта переживала состояние глубокого удовлетворения после завершения (в основном) первой титанической работы — создания АЛЬФА-транслятора и представления его на состоявшейся в Академгородке конференции по трансляторам. Одним из следующих направлений работы отдела была намечена "разработка языков и трансляторов для задач символьной обработки". А.П.Ершов поручил мне и Л.Л.Змиевской разобраться в том, какие из существовавших к тому времени языков могли оказаться полезными для этой цели. (Результатом этой деятельности стал отчёт [1].) Но в то время, когда я разбирался с чужими языками, мне стало известно, что И.В.Поттосин, М.М.Бежанова, Б.А.Загацкий и В.Л.Катков разрабатывают уже некий новый язык СИГМА для символьной обработки. В январе 1966 г. я присоединился к этой группе.

Заявленной целью разработчиков языка было предоставить удобный рабочий инструмент системным программистам (тот инструмент, которого так не хватало авторам АЛЬФА-транслятора). Мы стремились достичь разумного компромисса между такими требованиями, как простота и удобство языковых средств, простота трансляции и возможность получения эффективной программы. Работа над языком шла в обстановке оживлённых дискуссий (в них нередко участвовал также Г.И.Кожухин), мы принимали решения, отвергали их, вновь возвращались к отвергнутым. В марте мы представили на рассмотрение А.П.Ершова очередной, достаточно продвинутый вариант языка.

Выслушав нас, Андрей Петрович стал размышлять вслух о том, как выношенный нами плод можно было бы дальше усовершенствовать. Идеи стали рождаться на ходу; открытые процедуры, которые были в нашем проекте, превратились в макросы, а от исходного языка почти ничего не осталось. Зато оказалось, что новый вариант СИГМЫ есть не что иное, как СИмвольный Генератор и МАкроассемблер, что неожиданным образом оправдало название языка. Нам было поручено разрабатывать СИГМУ в духе новых идей.

Как раз в это время "Новый мир" опубликовал "Театральный роман" Булгакова, и я невольно припомнил ту сцену, в которой режиссёр Иван Васильевич (шаржированный Станиславский) говорит автору: "Ваша пьеса тоже хорошая, теперь только стоит её сочинить, и всё будет готово." Эту злободневную цитату я привёл, выходя от шефа, Бену Загацкому. Мы посмеялись, но что нам было делать? Решили, что журавля в небе (новую "сигму" - сумму всех прекрасных идей) мы когда ещё поймаем, а скромные, маленькие (как "эпсилон" из теории пределов) средства для работы системных программистов нужны уже сейчас. Поэтому, с одной стороны, я вместе с Кожухиным стал разрабатывать ершовские СИГМА-идеи, а с другой стороны, прежняя группа продолжала работать над первоначальным языком, переименованным нами в ЭПСИЛОН-язык. (Впрочем, для этого названия была придумана и "расшифровка": "Элементарный Преобразователь СИмвоЛьнОй иНформации".) Спустя некоторое время Ершов узнал от меня, что прежнюю работу мы не бросаем, и недовольно произнёс: "Как мне не нравятся эти подпольные занятия." Я постарался об ЭПСИЛОН в его присутствии больше не вспоминать, но не всегда это удавалось. Однако спустя некоторое время он сам сказал: "Я обдумал и вижу, что ЭПСИЛОН — вещь тоже полезная." После этого убедительно рассказал, в чём её польза.

К этому времени приводили язык к окончательному виду (особенно с учётом начавшегося уже написания транслятора для М-20) только мы с В.Л.Катковым. Иногда, размышляя над принятием того или иного решения, мы не могли сразу сообразить, как оно стыкуется с решениями, уже ранее принятыми, и должны были перечитывать свои записи. В один из таких моментов я сказал Каткову: "Вот так же и Маркс, наверно, говорил Энгельсу, когда они разрабатывали марксистскую теорию: "А посмотри-ка, Фриц, что мы по этому поводу написали в Манифесте?" Но пора рассказать вкратце, как выглядел ЭПСИЛОН.

Как выглядел ЭПСИЛОН

Это был исключительно простой язык. Переменные в нём не имели типа и не описывались, идентификатор переменной просто обозначал содержимое ячейки, отведённой для этой переменной. Константы в языке могли быть либо натуральными числами, либо восьмеричными числами, либо — просто и откровенно — наборами двоичных цифр. Выражения были только двуместные; арифметические выражения обращались со значениями операндов, как с представлениями натуральных чисел; были ещё поразрядные операции, операции сдвига и — что существенно — операция извлечения адреса данного объекта (позволяющая программисту управлять до некоторой степени распределением памяти). Не столь тривиальными объектами языка были так называемые "списки" (на самом деле вовсе не списки, а упакованные массивы) и "слова" (умещающиеся в одном машинном слове последовательности элементов разной длины). Непосредственно с символами и текстами язык дела не имел. Программист мог задать двоичную кодировку для символа или множество двоичных кодировок для класса символов. Существовали переходы на метку, условные и безусловные, а также процедуры, замкнутые и открытые. Законным оператором языка была машинная команда, представленная в восьмеричном виде. Именно в таком виде должны были осуществляться операции ввода-вывода. Используемые программой таблицы хранились как помеченные последовательности машинных команд; совместив в памяти такую последовательность с некоторым описанным списком, программист мог использовать для выбора элемента таблицы механизм выборки элемента списка.

Если говорить о недостатках языка, то главный из них проистёк из нашей чрезмерной скромности. Мы почему-то решили, что современные, передовые идеи программистской теории не для нашей "эпсилон-окрестности", и поэтому не только не прислушались к уже известным идеям Дейкстры о вреде меток и пользе структур, но не вняли даже советам Г.И.Кожухина о желательности явных циклов.

Рождение транслятора для М-220

В начале 1967 года началась работа над транслятором для машины М-20. Алгоритм трансляции был написан на самом языке ЭПСИЛОН, а затем, имея этот текст как своего рода эталон, мы вручную преобразовали его (со всей возможной экономией имевшихся в нашем распоряжении 4096 ячеек) в программу на машинном языке. Я программировал фрагменты транслятора, связанные со списками и словами; ввод исходного и вывод результирующего текста запрограммировал В.Л.Катков; всю остальную работу сделал И.В.Поттосин. Стоит вспомнить, как проходило при этом наше взаимодействие с машиной. Она была на ВЦ в единственном экземпляре, часто зависала, время для работы на ней распределялось квотами по 5-10 минут; из-за нехватки времени мы иногда приходили к машине в надежде, что очередной пользователь недоиспользует свою квоту и можно будет урвать пару минуток. В общем, весело было, но из-за всего этого порой приходилось приходить на работу ранним утром, а возвращаться домой поздним вечером. И вот однажды моя дочь, тогда второклассница, встретила меня запомнившимися мне словами: "ДАЖЕ ПРИ ЦАРИЗМЕ КАПИТАЛИСТЫ заставляли рабочих работать только 12 часов!".

К осени 1967 года система была закончена и началась её опытная эксплуатация. В то же время мы стали пропагандировать систему разными средствами; в частности, в ноябре 1968 года на I Всесоюзной конференции по программированию в Киеве я выступил с сообщением о языке и системе [2]; написал я также коротенькую статью о языке для "Энциклопедии кибернетики" [3].

Расширение ЭПСИЛОНа и его распространение по стране

В том же 1968 году Г.А.Плотникова и аспирантка Ершова из Владивостока Т.К.Панкевич начали работу по усовершенствованию системы для машин М-220 и М-222 (включение механизмов отладки, контроля исходного текста, библиотечных процедур). Тогда же существенную роль в дальнейшей судьбе системы ЭПСИЛОН для машин типа М-220 сыграло появление системы "Катунь". Эта система, разработанная В.Л.Катковым при помощи А.Я.Куртукова, содержала набор стандартных процедур для распечатки различных деловых документов, а также препроцессор, включающий в программу на языке ЭПСИЛОН тексты востребуемых ею стандартных процедур. Как раз в это время наша экономика возлагала большие надежды на "автоматические системы управления производством" АСУ и АСУП, и поэтому ЭПСИЛОН в соединении с Катунью "попал в струю", оказался нужным для многих предприятий. Взаимную адаптацию и тестирование ЭПСИЛОНА и "Катуни" я проводил на новосибирском Сибсельмаше и барнаульском Тракторном заводе, а затем наступил период внедрения ЭПСИЛОНА-Катуни в различных регионах страны.

Здесь я хотел бы воздать хвалу эпохе кустарного производства, противопоставив её временам разделения труда, отделения производства от торговли и прочих прогрессивных черт развитого капитализма. Ведь как хорошо было! Какой-нибудь гончар сделает свои горшки и ездит по ярмаркам и по сёлам, людей видит и себя показывает. А сейчас! Один делает, другой занимается маркетингом, третий транспортирует, четвёртый продаёт... Скучно. А у нас и того пуще. Создал человек программный продукт, послал его заказчику через e-mail, вот и вся радость. А тридцать лет тому назад я с чемоданом, набитым перфокартами, приезжал на то или иное предприятие, нуждающееся в нашем продукте (а нуждались, в частности, в Алма-Ате, Одессе, Уфе, Арзамасе), ставил систему, читал лекции о языке и его использовании, а заодно зарабатывал деньги. Не для себя (оправдывал только расходы на поездку), а для института. Дело в том, что институт заключал с каждым таким предприятием договор не просто на поставку, а как бы на создание с нуля данного программного продукта с соответствующей, разумеется, полной оплатой.

ЭПСИЛОН для других машин, публикации, раскрутка

Вернусь к моменту запуска первой версии ЭПСИЛОН-системы. Читал я как-то лекцию об этом новом языке. Подходит ко мне после лекции один из слушателей и говорит: "Я хотел бы написать транслятор с этого языка для машины БЭСМ-6." Этот человек был Анатолий Евгеньевич Хопёрсков, долгое время работавший после этого в нашем институте, так много сделавший и так безвременно умерший. Транслятор свой Анатолий Евгеньевич завершил в 1970 году. Примерно в то же время в Московском экономико-статистическом институте В.П.Морозов и Л.Я.Семёнова написали ЭПСИЛОН-транслятор для машины Минск-22.

Сразу же встал вопрос о выпуске книг по языку и системам ЭПСИЛОН. Таких книжек должно было быть две. Первая [4] была написана мной и Катковым как учебник для пользователя. Вторая [5, первоначальный авторский коллектив — Поттосин, Катков, я и Хопёрсков] должна была содержать строгое описание языка (в стиле Сообщения об Алголе-60) и описание особенностей его реализаций для машин типа М-220 и для БЭСМ-6. "Изюминкой" книжки явился алгоритм основного блока ЭПСИЛОН-транслятора (для М-220), написанный на самом языке ЭПСИЛОН. То есть это был тот самый исходный текст, имея который мы писали транслятор, но — разумеется — тщательно отлаженный. Отладка эта состояла в классической раскрутке (bootstrapping): ЭПСИЛОН-текст транслятора я пропускал через написанный вручную ЭПСИЛОН-транслятор, а получившийся новый транслятор проверял на нормальных ЭПСИЛОН-программах. Раскрутка эта дала заодно ответ на занимавший нас с самого начала вопрос: "Насколько программы, полученные путём ЭПСИЛОН-трансляции, проигрывают по сравнению с программами, написанными вручную?" Оказалось, к нашей гордости, что не так сильно. Например, память, занимаемая рассматриваемым основным блоком транслятора, увеличилась при переходе от ручного его варианта к варианту, полученному в результате трансляции, всего в 1,35 раза. К моменту окончания этой работы Морозов и Семёнова завершили "минскую" версию системы. Мы решили включить описание этой версии в нашу книгу, а разработчиков её — в список авторов. Но для последнего требовалось согласие издательства (так как договор уже был подписан). Мы объяснили директору издательства: "Так мол и так, надо увеличить список авторов на двух человек." Директор мгновенно ответил: "Наоборот." Прежде чем я успел оценить это ошеломительное заявление, он уточнил: "Список авторов поместим на оборот титульного листа." Но когда книжка вышла из печати, мы не увидели списка ни на обложке, ни на титульном листе, ни на обороте его, а лишь в конце книги среди выходных данных. Так получилось, что книга эта всюду числится безавторной.

Одним из последних действий, связанных с языком ЭПСИЛОН, было представление в 1974 году нашего с И.В.Поттосиным доклада на конференцию в Тронхейме (Норвегия). С докладом должен был выступить я, но — не всякая поездка тогда удавалась. Доклад был опубликован в трудах конференции [6]. Во второй половине 70-х годов победное шествие "машин, совместимых с IBM", как мы называли их иностранцам, нанесло смертельный удар нашим отечественным машинам, и этим завершается история языка и систем ЭПСИЛОН.

Литература

  1. Л.Л.Змиевская, А.Ф.Рар. Языки для обработки символьной информации (критический обзор) / Отчет ВЦ СО АН СССР. — Новосибирск, 1966
  2. И.В.Поттосин, А.Ф.Рар, В.Л.Катков. ЭПСИЛОН - система автоматизации программирования для задач символьной обработки // Первая Всесоюзная конференция по программированию; Секция Ж: Теория и общие вопросы программирования. — Киев, 1968. — С. 88-108
  3. ЕПСИЛОН // Енциклопедiя кiбернетики. — Киiв, 1973. — Т. 1. — C. 336 (на русском языке: 1974. — Т. 2. — С. 586-587)
  4. В.Л.Катков, А.Ф.Рар. Программирование на языке ЭПСИЛОН / Отв. ред. А.П. Ершов; Сиб. отд. АН СССР. — Новосибирск: "Наука", 1972
  5. ЭПСИЛОН - система автоматизации программирования задач символьной обработки / В.Л. Катков, И.В. Поттосин, А.Ф. Рар и др.; Отв. ред. А.П. Ершов; Сиб. отд. АН СССР. — Новосибирск: "Наука", 1972. — 130 с.
  6. I.V.Pottosin, A.F.Rar. Application of machine-oriented language EPSILON to software development / In: Machine Oriented Higher Level Languages. — N.-H. Publ. Co., 1974. — P. 417-434