ИСТОРИЯ ЭПСИЛОН
Становление Новосибирской школы программирования. Мозаика воспоминаний.

ИСТОРИЯ ЭПСИЛОН

Как из Сигмы вылупился Эпсилон

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

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

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

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

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

Как выглядел Эпсилон

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

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

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

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

К осени 1967 года система была закончена и началась её опытная эксплуатация. В то же время мы стали пропагандировать систему разными средствами; в частности, в ноябре 1968 года на 1 Всесоюзной конференции по программированию в Киеве я выступил с сообщением о языке и системе [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. — С. 336.
  4. ЭПСИЛОН // Энциклопедия кибернетики. — Киев, 1974. — Т. 2. — С. 586-587 
  5. Катков В. Л., Рар  А. Ф. Программирование на языке ЭПСИЛОН / Отв. ред. А. П. Ершов; Сиб. отд. АН СССР. — Новосибирск: Наука. 1972.
  6. ЭПСИЛОН — система автоматизации программирования задач символьной обработки / В.Л. Катков, И. В. Поттосин, А. Ф. Рар и др.; Отв. ред. А. П. Ершов; Сиб. отд. АН СССР. — Новосибирск: Наука. 1972. — 130 с. 
  7. Pottosin I. V., Rar  A. F. Application of machine-oriented language EPSILON to software development. // In. Machine Oriented Higher Level Languages — N. H. Publ. Со ., 1974. — Р . 417-434.

Следующая статья сборника

Из сборника ”Становление Новосибирской школы программирования. Мозаика воспоминаний». Новосибирск, 2001 г.
Перепечатываются с разрешения редакции.