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

ИСТОРИЯ СИГМЫ

часть вторая

Создание языка

История Сигмы [1] начинается в 1965 году, когда А. П. Ершов инициировал разработку нового языка программирования для работы с символьной информацией.

История создания языка подробно описана А. Ф. Раром в очерке «История Эпсилон». Там же отмечается что название языка — Сигма — неожиданно очень удачно стало соответствовать сути разработанного языка, которую можно описать как «Символьный Генератор и Макроассемблер».

Я подключился к работе над проектом Сигма в декабре 1966 года, будучи студентом 4-го курса математического факультета Новосибирского государственного университета. Одновременно со мной в проект пришел и мой однокурсник Б. Ф. Синенкин. И мы под руководством Л. Ф. Рара и при участии Р. Д . Мишкович приступили к реализации языка Сигма на ЭВМ М-20.

Три реализации

Всего в истории языка Ситма было три его реализации: на М-20, на БЭСМ-б и на самом языке Сигма. Первая, конечно самая памятная, т.к. это была мол первая работа в области системного программирования (да и вообще первая работа). Вторая была выполнена на лучшей, по моему мнению, отечественной машине БЭСМ-6. Третья опиралась на вторую, была раскручена сама через себя и могла генерировать программы как для БЭСМ-6, так и для СМ-4 и ЕС ЭВМ.

Генерация программ для различных ЭВМ

Последняя возможность (способность генерировать программы для различных ЭВМ) потенциально присутствовала во всех реализациях языка Сигма, т. к. выходной язык системы СИГМЛ никогда не закреплялся жестко, а описывался на специальном языке [2]. Именно методы, способы и средства описания выходного языка системы Сигма и являлись темой моей дипломной работы в университете, руководителем которой был Л. П. Ершов.

Реализация на М-20 

Реализация языка Сигма на М-20 представляла собой двухпросмотровый транслятор и административную систему, обеспечивающую во время работы оттранслированной программы выполнение действий над такими объектами языка СИГМА, как массивы и списки. Программирование административной системы осуществлял Л. Ф. Рар. Я выполнял реализацию первого просмотра, включавшего в себя лексический, синтаксический и семантический разборы программы пользователя. Этот же просмотр осуществлял открытую подстановку специально помеченных пользователем процедур. Второй просмотр, осуществлявший генерацию выходной программы по описанию выходного языка, реализовывал Б. Ф. Синенкин.

«Ностальгия» по М-20 

Думаю, для современного читателя очень любопытным будет описание условий работы на ЭВМ М-20. Оперативная память машины составляла 4096 45-разрядных слов, поэтому большую часть информации приходилось держать на магнитных барабанах (существовали в то время такие), закачивая ее в память по частям по мере надобности. Такого естественного понятия, как виртуальная память, на М-20 не было, поэтому всю работу по подкачке информации и сбросе ее на барабан приходилось планировать и отрабатывать программно. Сам транслятор и административная система находились «разумеется» на перфокартах.

Программировали непосредственно в кодах команд М-20, собственноручно распределяя память под переменные, константы и другие объекты программы. Хотя писали все-таки на некотором подобии автокода, используя мнемонические имена переменных и кодов команд, которые вручную заменяли на числовые значения перед перфорацией. Но самым забавным представляется мне информация, которую машина выдавала программисту, и по которой он должен был отлаживать свою программу. Это была так называемая «узкая цифровая печать». Каждая строчка на длинной узкой полоске бумаги (которую скручивали в рулоны наподобие туалетной бумаги) состояла из 15-ти восьмеричных цифр, определяющих содержимое одного слова памяти машины. Пользователь мог только в определенном порядке выдать на эту ленту значения интересующих его диапазонов ячеек оперативной памяти, а потом заняться их расшифровкой.

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

Тем не менее работа по реализации шла довольно успешно. Первый тест прошел 30 октября 1967 года, а к июню 1968, т.е. к концу нашего с Б. Ф. Синенкиным обучения в университете, мы пропускали уже вполне приличные программы. Ну а после окончания университета меня забрали в армию, поэтому работа по реализации языка Сигма на М-20 для меня закончилась.

Реализация на БЭСМ-6 

После армии я поступил на работу в Вычислительный центр Сибирского отделения Академии наук СССР. К этому времени сменилось поколение машин, все большее распространение стала получать БЭСМ-6. Поэтому мы приступили ко второй реализации языка Сигма [3, 4]. Общая структура проекта была примерно такой же, а вот условия разработки существенно изменились. Память на БЭСМ-6 была побольше, магнитные барабаны сменились магнитными дисками, для выдачи уже использовались алфавитно-цифровые устройства (АЦПУ). И хотя для ввода по-прежнему использовались перфокарты, программировали мы уже не в кодах команд, а на автокоде БЕМШ. Данная реализация была доведена до работающего состояния, позволившего начать третью реализацию языка Сигма уже на самом языке Сигма [5]

Сигма на Сигма

Последняя реализация выполнялась уже только мной. Основной машиной была по-прежнему БЭСМ-6, а в качестве выходных машин, кроме БЭСМ-6, описывались СМ-4 и ЕС ЭВМ. Со временем на БЭСМ-6 появились терминалы (чаще всего применялись черно-зеленые мониторы марки «Videoton «), перфокарты отошли в прошлое (а так удобно было иметь в кармане несколько штук для различных записей).

Сам язык Сигма [6,7] несколько расширился, в основном за счет добавления новых служебных и стандартных макросов, но его основные концепции остались неизменными.

Широкого распространения система Сигма [8] не получила, но тем не менее с ее помощью был разработан ряд прикладных программ, среди которых, в первую очередь, следует упомянуть программу управления некоторой справочной базой данных, содержавшей адресно-телефонные данные более чем 1500 отечественных программистов. Распечатка данной базы сохранилась, и ею пользуются и сейчас, хотя большинство данных в ней, конечно же, устарело. В конце 80-х годов закончилась эра машины БЭСМ-6, а с ней ушел в историю и язык Сигма.

Литература

  1. Ershov  A. P., Rar  A. F. SYGMA — a Symbolic Generator and Macroassembler // IFIP Working Conference. — Pisa, 1966. — 39 p. 
  2. Степанов Г.Г. Методика описания вычислительных машин для настраиваемых макроассемблеров // Тр. Всесоюзного семинара по вопросам макрогенерации. — Тбилиси, 1975. — 19 с. 
  3. Stepanov G. G. SYGMA — a mashine-oriented higher-level languages // Mashine Oriented Higher Level Languages. — N. -H Publ.Co Amsterdam , 1976. — 10 p. 
  4. Степанов Г. Г. Реализация системы СИГМА // Теория и практика программного обеспечения (Тр. советско-французского симпозиума). ВЦ СО АН СССР. — Новосибирск, 1981. — 10 с.
  5. Степанов Г. Г. Опыт использования языка СИГМА // Языки и системы программирования. ВЦСО АН СССР. — Новосибирск, 1981. — 8 с. 
  6. Ершов А. П., Степанов  Г. Г. Машинно-ориентированный алгоритмический язык СИГМА для написания переносимых программ (общее описание). — Новосибирск, 1981. — 30 с. (Препр. / ВЦ СО АН СССР; № 304)
  7. Степанов Г. Г. Система программирования СИГМА. — Новосибирск, 1982. — 29 с. — (Препр. / ВЦ СО АН СССР; № 391)
  8. Степанов Г.Г. Пути обеспечения переносимости программ и опыт использования системы СИГМА // Трансляция и преобразование программ. — ВЦ СО АН СССР. — Новосибирск, 1984. — 9 с. 

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

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