СОДЕРЖАНИЕ

1. Цифровые вычислительные машины
2. Аналоговые вычислительные машины
3. Машины российских изобретателей
4. Информатика и информационные технологии
5. ЭВМ МЭСМ, М-1, БЭСМ, БЭСМ-2, СТРЕЛА, М-20, УРАЛ-1, М-40
6. МЦВМ «Сетунь»
Троичная цифровая техника
Программа в польской инверсной записи (ПОЛИЗ)
7. От программирующих программ к системам программирования
(российский опыт)
7.1 ПРОГРАММИРУЮЩИЕ ПРОГРАММЫ

7.2 библиотеки стандартных программ.
7.3 ТРАНСЛЯТОРЫ С АЛГОЛА

Транслятор ТА-1М
Транслятор ТА-2М
7.4

ИСТОРИЯ АЛЬФА-ПРОЕКТА

Альфа-язык
Разработка Альфа-транслятора
Состав Альфа-транслятора
7.5 ЯЗЫКИ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ

8. Разработки операционных систем
для ЭВМ БЭСМ-6
"Диспетчер-68"
Операционная система ИПМ
Мониторная система "Дубна"
-------------Си и UNIX: немного истории

Цифровые вычислительные машины
Леонардо да Винчи (автопортрет)

1

В дневниках гениального итальянца Леонардо да Винчи (1452-1519) обнаружен ряд рисунков,
которые оказались эскизным наброском суммирующей вычислительной машины на
зубчатых колесах, способной складывать
13-разрядные десятичные числа.
Немецкий ученый Вильгельм Шиккард (1592-1636) разработал счетную машину для
суммирования и умножения шестиразрядных десятичных чисел (после знакомства с
польским астрономом И. Кеплером).
1642 г. Блез Паскаль (Франция) – создание суммирующей машины («Паскалина»)
1673 г. Готфрид Лейбниц (Германия) - арифмометр
1820 г. Чарльз Бэббидж (Англия) – разностная машина
1834 г. Чарльз Бэббидж (Англия) – «аналитическая
машина»
1941 г. Конрад Цузе (Германия) – электромеханическая
(релейная) машина Z-3
1944 г. Говард Эйкен (США) – электромеханическая
машина Mark-1
Специализированная ЭВМ COLOSSUS – Алан Тьюринг

Аналоговые вычислительные машины
1614 г. Джон Непер (Шотландия) – изобретение логарифмической линейки.
1930 г. Ванневар Буш (МТИ, США) – построил «дифференциальный анализатор»
Оператор машины – Клод Шеннон – будущий автор теории информации
1942—44 гг. США — ОПЕРАЦИОННЫЙ УСИЛИТЕЛЬ ПОСТОЯННОГО ТОКА
(возможность конструировать аналоговые компьютеры без движущихся частей, на
постоянном токе).
1945—46 гг. Л. И. ГУТЕНМАХЕР - первые в СССР аналоговые машины электроинтеграторы.
В.С. Лукьянов - гидроинтегратор
НАЛОГОВАЯ ВЫЧИСЛИТЕЛЬНАЯ МАШИНА (АВМ) - вычислительное устройство для
воспроизведения (моделирования) соотношений между непрерывно изменяющимися
физическими величинами (машинными переменными) - аналогами соответствующих
исходных переменных решаемой задачи. Наиболее распространены АВМ, в которых
машинными переменными служат электрические напряжения и токи, а искомые
соотношения моделируются физическими процессами, протекающими в электрических
цепях.
Машины российских изобретателей
«Машина для сравнения идей»
2

Семена Корсакова (1787-1853)
Семен Николаевич Корсаков
На современном языке машину можно было бы охарактеризовать как «систему для
информационного поиска» или даже «средство для создания баз данных». Основным
«носителем информации» стали перфокарты, хранившиеся в специальных картотеках и
автоматически (механически) сортировавшиеся и сравнивавшиеся по определенным
признакам.
«Мыслительная машина» профессора А. Н. Щукарева
В 1914 году профессор Харьковского технологического института Александр Николаевич
Щукарев по просьбе Московского Политехнического музея приехал в Москву и прочитал
лекцию «Познание и мышление». Лекция сопровождалась демонстрацией созданной
А. Н. Щукаревым «машины логического мышления», способной механически осуществлять
простые логические выводы на основе исходных смысловых посылок.
КАНУН КОМПЬЮТЕРНОЙ ЭРЫ
Первоначально электронные вычислительные машины (ЭВМ) создавали для решения
"ядерных" и "ракетных" задач, не имевших аналогов ни по наукоёмкости, ни по масштабам
реализованной новизны. Компьютеростроение зарождалось под эгидой могущественных
опекунов, отвечавших за равновесие военных потенциалов.
В ходе решения очень сложных, но сравнительно узких по профилю вычислительных
задач военной тематики компьютерные архитектуры быстро прогрессировали, становясь все
более совершенными и доступными для более широкого применения. Благодаря отчетливо
проявившейся универсальности и первым признакам комфортности сфера использования
компьютеров стала быстро расширяться, возросла доля гражданских применений
компьютерной техники, при этом стали складываться доселе неведомые стимулы ее
развития. Их корни находятся в глубинах человеческого общества, наделенного уникальной
способностью в ходе своей жизнедеятельности создавать, обрабатывать, накапливать и
потреблять информацию.
Осознание истинных масштабов участия наших соотечественников в мировой
компьютерной истории (факты и события выявляют наличие глубоких корней и традиций
отечественного компьютеростроения, имевшиеся у нас достижения мирового уровня в этой
области) должно способствовать переосмыслению приоритетов, преодолению опасного
синдрома национального компьютерного нигилизма, который, к сожалению, доминирует в
сознании не только молодежи, но и политических и государственных деятелей.
СТАРТОВЫЙ КАПИТАЛ
В конце 40-х годов к созданию ЭВМ оказались готовы только три страны: США,
Англия, СССР.
Для создания, развития и применения средств вычислительной техники (ВТ)
необходимы следующие условия:
- наличие масштабных актуальных задач, не поддающихся решению без применения
средств ВТ;
- наличие технической инфраструктуры и передовых технологий для разработки и
применения ВТ;
- наличие вузов с профессорско-преподавательским составом, способным вести
подготовку кадров в данной области.
До появления первых цифровых ЭВМ научные организации Москвы уже имели
солидные заделы в области теории и практики автоматизации вычислений. Известные
3

математики и механики - М.А.Лаврентьев, А.А.Дородницын, М.В.Келдыш, А.Н.Тихонов,
А.А.Самарский, Г.И.Марчук и другие не только развивали теорию численных методов, но и
доводили новые результаты до важнейших практических применений.
Объединение систем, процессов, связанных с понятиями «информация», «управление»
привело к появлению нового предмета «кибернетика» (наука об управлении в живых
организмах и автоматах) - 40-ые годы 20-го века.
Кибернетика - важна предпосылка появления и развития информатики.
БЫТЬ ИЛИ НЕ БЫТЬ?
Всякое новое социально-значимое явление в жизни человеческих обществ подвергается
со стороны власть предержащих самой тщательной проверке и экспертизе. Так велит закон
самосохранения власти. Колоссальная роль вычислительной техники для будущего - не
только как новой области науки и техники, но и как принципиально нового фактора
социального влияния - стала предметом пристального внимания политиков и идеологов с
обеих сторон железного занавеса.
В начале 50-х годов в США по инициативе правительства (о чем у нас почти совсем
неизвестно) была развернута общественная дискуссия на тему "Несут ли компьютеры угрозу
американскому образу жизни?". Правящие круги испытывали серьёзные опасения из-за
возможного нарушения баланса на рынке труда. К экспертизе социальных последствий были
подключены активно работавшие в области кибернетики ученые с мировыми именами: Дж.
фон Нейман, Н. Винер, К. Шеннон и др. Вердикт всесторонней и независимой экспертизы
поражает своей дальновидностью: при грамотном использовании компьютер усилит позиции
общества, основанного на свободной конкуренции. Только после этого власти США дали
зеленый свет свободному рыночному развитию вычислительной техники.
Этот шаг, на первый взгляд, локального (для одной страны) значения воспринимается
сегодня как открытие, масштабы которого только начинают осознаваться социологами.
Широкое и свободное развитие вычислительной техники с неизбежностью приводит к
созидательной информационной трансформации общественного сознания в целом.
Так искали и находили ответы на вопрос "быть или не быть" власти на Западе. В
нашей стране блюстители идейной чистоты, к сожалению,
поспешили определить
кибернетику, а вместе с ней и вычислительную технику, как "буржуазную лженауку".
Изданная в 1948 году книга американского математика Норберта Винера «Кибернетика или
управление и связь в живом и машине» лопала на полки с секретными изданиями по причине
того, что ее автор высказал идеи, не согласующиеся с официальными доктринами,
пропагандируемыми в советском обществе.
Чтобы лечить "болезни" с таким диагнозом, надо было иметь гражданское мужество. В
защиту вычислительной техники активно выступили академики А.И.Берг, А.А.Дородницын,
С.А.Лебедев. В результате в эшелонах власти вычислительная техника получила зеленую
улицу, но только для решения задач достижения военного паритета. Ревнители идей
обобществления вслепую отвергли для широкого общества то огромное богатство
обобществленной собственности, которое сейчас лавинообразно реализуется в среде мировых
информационных ресурсов. Таковы парадоксы истории.
Достаточно долго и успешно вычислительная техника развивалась у нас в русле
проблемы достижения и удержания стратегических оборонных паритетов.
С.П.Королев,
И.В.Курчатов, М.В.Келдыш (великий союз “трех К”) понимали, что для космоса и атомной
техники нужны мощные ЭВМ и вопреки трудностям идеологического характера выступили
инициаторами выпуска промышленностью серийных ЭВМ.

4

Все фундаментальные исследования и инженерные разработки, которые могли
использоваться в военной сфере, в СССР были скрыты от широкой общественности завесой
секретности. Поэтому первая научная монография
[РЕШЕНИЕ МАТЕМАТИЧЕСКИХ ЗАДАЧ НА АВТОМАТИЧЕСКИХ ЦИФРОВЫХ
МАШИНАХ. ПРОГРАММИРОВАНИЕ ДЛЯ БЫСТРОДЕЙСТВУЮЩИХ ЭЛЕКТРОННЫХ
СЧЕТНЫХ МАШИН ]
по теории ЭВМ и программированию имела гриф и выдавалась лишь по предъявлении
документа о допуске к государственным секретам.
В этом состоит главная причина того, что у истоков развития кибернетики
(информатики) в СССР стояли сотрудники различных закрытых ведомств и предприятий, в
большинстве своем носившие военную форму. Забегая вперед, отметим, что все первые книги
в области кибернетики, вычислительных машин и программирования, выпушенные уже во
второй половине 50-х годов без грифа секретности, были написаны военными. Этот
нетривиальный для истории науки факт имел для отечественной информатики
немаловажное значение. Если бы не активная наступательная позиция военных,
поддержанная членами АН СССР, то идеологические концепции, охраняемые
представителями консервативной философской элиты, задержали бы на много десятилетий
развитие информатики, как это случилось с генетикой и другими неугодными придворной
философии науками.

ИНФОРМАТИКА
Информа́тика (ср. НЕМ. Informatik, ФР. Informatique, АНГЛ. computer science — компьютерная
наука — в США, АНГЛ. computing science — вычислительная наука — в Великобритании) —
НАУКА о способах получения, накоплении, хранении, преобразовании, передаче и
использовании ИНФОРМАЦИИ. Она включает дисциплины, так или иначе относящиеся к
обработке информации в ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ и вычислительных сетях
Информационные технологии (ИТ, от АНГЛ. information technology, IT) — широкий класс
дисциплин и областей деятельности, относящихся к ТЕХНОЛОГИЯМ управления и
ОБРАБОТКИ ДАННЫХ, в том числе, с применением вычислительной техники.
ИТ имеют дело с использованием КОМПЬЮТЕРОВ и ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ для
хранения, преобразования, защиты, обработки, передачи и получения информации.
Специалистов по компьютерной технике и программированию часто называют ИТспециалистами.
Определение ЮНЕСКО: ИТ — это комплекс взаимосвязанных научных, технологических,
инженерных дисциплин, изучающих методы эффективной организации труда людей, занятых
обработкой и хранением информации; вычислительную технику и методы организации и
взаимодействия с людьми и производственным оборудованием, их практические приложения,
а также связанные со всем этим социальные, экономические и культурные проблемы.
Структура информатики (Д.А. Поспелов)
теория алгоритмов (формальные модели алгоритмов, проблемы вычислимости, сложность
вычислений и т. п.);

базы данных (структуры данных, поиск ответов на запросы, логический вывод в базах
данных, активные базы и т. п.);

искусственный интеллект (представление знаний, вывод на знаниях, обучение, экспертные
системы и т. п.);

бионика (математические модели в биологии, модели поведения, генетические системы и
алгоритмы и т. п.);

распознавание образов и обработка зрительных сцен (статистические методы
распознавания, использование призначных пространств, теория распознающих алгоритмов,
трехмерные сцены и т. п.);

5

инженерия математического обеспечения (языки программирования, технологии создания
программных систем, инструментальные системы и т. п.);

теория компьютеров и вычислительных сетей (архитектурные решения, многоагентные
системы, новые принципы переработки информации и т. п.);

компьютерная лингвистика (модели языка, анализ и синтез текстов, машинный перевод и
т. п.);

числовые и символьные вычисления (компьютерноориентированные методы вычислений,
модели переработки информации в различных прикладных областях, работа с естественноязыковыми текстами и т. п.);

системы человеко-машинного взаимодействия (модели дискурса, распределение работ в
смешанных системах, организация коллективных процедур, деятельность в телекоммуникационных
системах и т. п.);

нейроматематика и нейросистемы (теория формальных нейронных сетей, использование
нейронных сетей для обучения, нейрокомпьютеры и т.

МЭСМ (Малая электронная счетная машина)
Разработчик ЭВМ «МЭСМ» Сергей Алексеевич Лебедев
“МЭСМ”, малая электронная счетная машина - была первой отечественной универсальной
ламповой ЭВМ в СССР. Начало работ по созданию - 1948 г, 1950 г. - завершение работ, 1950 официальный ввод в эксплуатацию. В 1952-1953 гг. МЭСМ была самой быстродействующей и
практически единственной регулярно эксплуатируемой ЭВМ в Европе. МЭСМ разработана в
Институте электроники Академии наук Украины под руководством академика Сергея Алексеевича
Лебедева.
Основные параметры машины таковы: быстродействие - 50 операций в секунду; емкость
оперативного ЗУ - 31 число и 63 команды; представление чисел - 16 двоичных разрядов с
фиксированной перед старшим разрядом запятой; команды трехадресные, длиной 20 двоичных
разрядов (из них 4 разряда - код операции); рабочая частота - 5 килогерц; машина имела также
постоянное (штеккерное) ЗУ на 31 число и 63 команды; была предусмотрена также возможность
подключения дополнительного ЗУ на магнитном барабане, емкостью в 5000 слов. ОЗУ было
построено на триггерных регистрах, АУ - параллельного действия, чем в основном, и объясняются
сравнительно большие аппаратурные затраты (только в ОЗУ было использовано 2500 триодов и
1500 диодов). Потребляемая мощность составляла 15 кВт, МЭСМ размещалась на площади 60 кв.
метров — целое крыло старого здания в Феофании.

ЭВМ М-1
Исаак Семенович Брук
Характеристика ЭВМ М-1

М-1 была разработана в 1950-1951 гг. в Лаборатории электросистем Энергетиче-ского института АН СССР
под руководством члена-корреспондента АН СССР И. С. Брука. В группу входили пять инженеров —
выпускников и дипломников радиотехнического факультета МЭИ и три техника: Н. Я. Матюхин, Т. М.
Александриди, В. В. Белынский, А. Б. Залкинд, М. А. Карцев, Ю. В. Рогачев, Р. П. Шидловский, Л. М. Журкин.
Отчет с описанием машины М-1 был утвержден директором Энергетического инсти-тута академиком Г. М.
Кржижановским в декабре 1951 г. Эксплуатация М-1 началась вес-ной 1952 г., примерно в то же время, что и
машины МЭСМ, разработанной в Киеве под руководством академика С. А. Лебедева.
Первые задачи на М-1 решались академиком С. Л. Соболевым (в то время замести-теля по научной работе у
академика И. В. Курчатова), для исследований в области ядерной физики. Это были задачи типа обращения
матриц большой размерности и другие задачи вычислительной математики.
М-1 была одной из первых цифровых вычислительных машин с хранимой програм-мой. М-1 имела
двухадресную систему команд. Оперативная память М-1 емкостью 512 25-разрядных чисел была
реализована в виде быстродействующего электростатического за-поминающего устройства (256 чисел) и
запоминающего устройства на магнитном барабане (также 256 чисел). Для представления чисел с
фиксированной точкой использовалась двоичная система счисления (24 разряда — модуль числа и 1 разряд
— знак числа).

6

Производительность М-1 составляла 20 операций/с (операций сложения двух чисел).
Конструктивно М-1 выполнена в виде трех стоек, расположенных по бокам прямоугольной вентиляционной
колонны. В стойках располагались: главный программный датчик (устройство управления машиной),
арифметический узел и запоминающие устройства. Устройства ввода и вывода информации — телетайп и
фототрасмиттер ввода с перфоленты — располагались на отдельном столе и при помощи разъемных
кабелей соединялись со стойками. Монтаж всех электронных схем машины осуществлялся на стандартных
панелях двух типов (десяти- и двадцати двухламповые панели). Общее количество электронных ламп в М-1
— 730 шт. Число ламп уменьшено по сравнению с другими машинами благодаря использованию
полупроводниковых диодов в логических схемах.
Питание М-1 осуществлялось от 4-х машинного агрегата постоянного тока. Блоки электростатического
запоминающего устройства и некоторые узлы памяти на магнитном барабане имели питание от электронных
стабилизаторов напряжения.
Площадь, занимаемая машиной, составляла 9 м2.
Основные особенности М-1
М-1 — одна из первых цифровых вычислительных машин с программой, хранимой в оперативной памяти.
Полное название М-1 — "автоматическая цифровая вычислительная машина", в отличие от названия
"электронная счетная машина", принятого С. А. Лебедевым, точно определяло сущность ЭВМ с хранимой
программой, хотя отчет Принстонского университета, в котором были сформулированы архитектурные
принципы Дж. Фон Неймана, в то время не был известен разработчикам М-1.
М-1 — первая отечественная малогабаритная ЭВМ с использованием полупроводниковых диодов в
логических схемах и памяти на обычных осциллографических электронных трубках.
М-1 имела двухадресную систему команд в отличие от общепринятой в то время и считавшейся наиболее
естественной трехадресной. Это решение было подсказано разработчикам М-1 математиком Ю. А.
Шрейдером, который, осваивая вместе с ними программирование на М-1, обратил внимание на то, что во
многих формулах приближенных вычислений результат операции становится для следующего шага одним из
операндов.

Машина электронная вычислительная общего
назначения БЭСМ-1
Являлась самой быстродействующей машиной в Европе и одной из самых быстродействующих
ЭВМ в мире.
1.
Главный конструктор: академик АН СССР С. А. Лебедев; основные разработчики: К. С.
Неслуховский, П. П. Головистиков, В. А. Мельников, В. С. Бурцев, В. Н. Лаут, А. И. Зимарев, А. Г.
Лаут, А. А. Соколов, М. В. Тяпкин, В. Я. Алексеев, В. П. Смирягин, И. Д. Визун, А. С. Федоров, О. К.
Щербаков и др.
2.
Организация-разработчик: Институт точной механики и вычислительной техники АН
СССР (ИТМ и ВТ).
3.
Завод-изготовитель: Московский завод счетно-аналитических машин (САМ).
4.
Год окончания разработки: 1953.
5.
Год начала выпуска: 1953.
6.
Число выпущенных машин: 1.
7.
Область применения: крупные научные и производственные задачи.

Описание ЭВМ
Структура ЭВМ


Система представления чисел — двоичная с плавающей запятой, число разрядов для
кодов чисел — 39.

Цифровая часть числа — 32 разряда; знак числа — 1 разряд; порядок числа — 5
разрядов; знак порядка — 1.

Диапазон представляемых чисел: 10 в -9 степени — 10 в 10 степени.
Система команд — трехадресная. Число разрядов для кодов команд — 39. Код операции — 6
разрядов; коды адресов — 3 адреса по 11 разрядов каждый. В систему операций машины
входят: арифметические операции, операции передач кодов, логические операции и операции

7

управления. Операции могут производиться как с нормализованными, так и с
ненормализованными числами.
БЭСМ-1 имела оперативную память (ОЗУ) на ферритовых сердечниках емкостью 1024 числа
(до этого была опробована оперативная память на ртутных трубках и потенциалоскопах),
долговременное запоминающее устройство на полупроводниковых диодах (ДЗУ) емкостью до
1024 чисел. В ДЗУ постоянно хранились некоторые наиболее часто встречающиеся константы и
подпрограммы. Содержимое ДЗУ не изменялось во время работы машины. Кроме того, машина
имела внешний накопитель на магнитных лентах (НМЛ) — четыре блока по 30 тысяч чисел в
каждом, а также промежуточный накопитель на магнитном барабане (НМБ) емкостью 5120
чисел со скоростью выборки до 800 чисел в секунду.
Ввод информации в машину с фотосчитывающего устройства на перфоленте. Вывод
результатов на электромеханическое печатающее устройство.

Элементная база
Двух- и четырехламповые ячейки, в которых смонтированы различные схемы (триггеры,
вентили, усилители и т. д.). ЭВМ БЭСМ-1 имела около 5 тыс. электронных ламп.

Программное обеспечение
Системное ПО отсутствовало.

Технико-эксплуатационные характеристики



Средняя производительность — 8000—10000 операций в секунду.
Время полезной работы составляло — 72% в среднем.
Потребляемая мощность — около 30 кВт (без системы охлаждения).
Занимаемая площадь — до 100 м2.

ЭВМ «Стрела»
ЭВМ «Стрела»

1.
Электронная вычислительная машина «Стрела».
2.
Главный конструктор: Базилевский Юрий Яковлевич, зам. главного конструктора
Рамеев Б.И., Прокудаев Г.М., Литвинов А.М., Жучков Д.А., Шилейко А.В., основные исполнители:
Цыганкин А.П., Трубников Н.В., Мельников Б.Ф., Монахов Г.Д., Лыгин И.Ф., Ларионова Л.А.,
Ларионов А.М. и др.
3.
Организация-разработчик: СКБ245 (с 1958 г. — Научно-исследовательский институт
электронного машиностроения (НИЭМ), с 1986 г. — НИИ «Аргон», Москва.
4.
Завод-изготовитель: Московский завод САМ. Ведомство: Министерство приборостроения
и средств автоматизации СССР.
5.
Год окончания разработки: 1953 г.
6.
Год начало выпуска: 1953 г.
7.
Год прекращения выпуска: 1956 г.
8.
Область применения: научные расчеты в ВЦ АН СССР, ИПМ АН СССР
МГУ им. М.В. Ломоносова и в вычислительных центрах некоторых министерств.
9.
Число выпущенных машин: 7 образцов.
10.
Элементная база: элементная база первого поколения (6200 ламп и 60 000
полупроводниковых диодов).
11.
Конструкция: двухрядные стойки с монтажом внутрь межстоечного коридора. Сменные
ячейки вставляются с внешней стороны каждого ряда стоек.
12.
Технология: применены технологические процессы, существующие на московском заводе
САМ, имевшем приборостроительный профиль.

Описание машины
8

ЭВМ «Стрела» имела быстродействие 2000 трехадресных команд в секунду.

Основной такт — 500 мкс.

Операции с плавающей точкой над 43 разрядными числами (35 — мантисса и 6 —
порядок; 1 знак). Адреса команд — 12разрядные.

Оперативная память на электронно-лучевых трубках с циклом обращения 20 мкс. ЭВМ
имела ПЗУ на полупроводниковых диодах емкостью 15 стандартных подпрограмм по 16 команд
и 256 операндов.

В качестве внешнего ЗУ использовались два накопителя на магнитной ленте емкостью
1,5 млн. слов.
Ввод информации производился с устройства ввода перфокарт или с магнитной ленты. Вывод
информации осуществлялся на магнитную ленту, перфоратор карт или на широкоформатное
печатающее устройство.

Технико-эксплуатационные характеристики

Потребляемая мощность 150 кВт (процессор — 75 кВт);
занимаемая площадь 300 кв. м (из них процессор — 150 кв. м).

Машина электронная вычислительная общего
назначения БЭСМ-2.
1.
Главный конструктор: академик АН СССР С. А. Лебедев.; основные разработчики: К. С.
Неслуховский, А. Н. Зимарев, В. А. Мельников, А. А. Павликов, А. В. Аваев и др.
2.
Организации-разработчики: ИТМ и ВТ и Завод им. Володарского, Ульяновск.
3.
Завод-изготовитель: Завод им. Володарского, Ульяновск.
4.
Год окончания разработки: 1957.
5.
Год начала выпуска: 1958.
6.
Год окончания производства: 1962.
7.
Число выпущенных машин: несколько десятков.
8.
Область применения: в вычислительных центрах и научно-исследовательских
организациях для численного решения широкого круга математических задач

Машина электронная вычислительная общего
назначения М-20.
1.
Главный конструктор: академик АН СССР С. А. Лебедев; зам. главного конструктора —
к. т. н. М. К. Сулим и д. ф.-м. н. М. Р. Шура-Бура; основные разработчики: к. т. н. П.
П. Головистиков, В. Я. Алексеев, к. т. н. В. В. Бардиж, к. т .н. В. Н. Лаут, А. А. Соколов,
М. В. Тяпкин, А. С. Федоров.
2.
Организация разработчик: Институт точной механики и вычислительной техники (ИТМ и
ВТ) и Специальное конструкторское бюро (СКБ-245).
3.
Завод-изготовитель: Завод вычислительных машин (Казань), Московский завод САМ.
4.
Год окончания разработки: 1958.
5.
Год начала выпуска: 1958.
6.
Год прекращения производства: 1964.
7.
Число выпущенных машин: 20.
8.
Область применения: решение задач из многих областей науки и техники.

Описание ЭВМ
Структура ЭВМ
Однопроцессорная, в процессоре реализован ряд структурных решений: совмещение
выполнения частей операций, ускорение выполнения операций сложения и умножения за счет

9

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

Элементная база

Съемные блоки с двумя электронными лампами. Использовался импульсный принцип
(динамические триггеры) для построения схем устройств параллельного действия, что привело
к уменьшению числа электронных ламп в машине до 1600. Логические схемы были выполнены
на полупроводниковых диодах, что в сочетании с ненагруженным режимом их работы,
являющимся также следствием применения импульсного принципа построения схем,
обеспечило повышенную надежность работы машины.

Конструкция и технология

Машина собрана в семи шкафах. В каждом шкафу по шесть плат. Использовались 30контактные ножевые разъемы.

Программное обеспечение
Библиотека стандартных подпрограмм ИС-2.

Технико-эксплуатационные характеристики


Средняя производительность – 20 тыс. операций в секунду
Занимаемая площадь – 170–200 кв. м
Потребляемая мощность от сети 220 В/50 Гц – 50 кВт (без системы охлаждения)

Особенности машины
ЭВМ М-20 явилась одной из самых быстродействующих и надежных машин первого поколения
в мире.
Общее повышение эффективности работы машины помимо структурных решений и
импульсного принципа построения схем достигалось также введениeм:

индексной арифметики, позволяющей во многих случаях избавиться от переменных
команд;

новых логических операций в процессоре;

системы команд с автоматической модификацией адреса;

совмещения работы АУ с выборкой команд из памяти;

совмещения вывода информации на печать с работой процессора.

Электронная цифровая вычислительная машина
“Урал-1” (ЭЦВМ “Урал-1”)
ЭЦВМ “Урал-1”

1.
Главный конструктор: Рамеев Б. И. Основные разработчики: Антонов В. С., Лазарев
А. И., Юдицкий Д. И., Невский А. Н., Мухин В. И., Павлов А. И., Калмыков А. Г. и другие.
2.
Организация-разработчик: СКБ-245, доводка и запуск в серийное производство —
Пензенский филиал СКБ-245 Министерства приборостроения и средств автоматизации.
3.
Завод-изготовитель: Пензенский завод счетных аналитических машин Министерства
приборостроения и средств автоматизации.
4.
Год окончания разработки: 1955.

10

5.
Год начала выпуска: 1956.
6.
Год прекращения выпуска: 1961.
7.
Область применения: инженерные расчеты в вычислительных центрах НИИ,
КБ и на промышленных предприятиях.
8.
Число выпущенных машин (серийность): 183 шт.

Описание машины (структура, архитектура, включая
периферию)

“Урал-1” является одноадресной машиной с фиксированной запятой, работающей в двоичной
системе. Двоичные числа, участвующие в операциях, соответствуют приблизительно 11-ти
десятичным разрядам. Машина имеет постоянную длительность такта и работает со скоростью
100 операций в секунду. Память машины представлена тремя накопителями: накопителем
на магнитном барабане (НБМ), накопителем на магнитной ленте (НМЛ) и накопителем
на перфоленте (НПЛ).

Основные эксплуатационно-технические данные

Система счисления — двоичная, количество разрядов ячейки памяти — 36 (имеется
возможность работы с 18-разрядными ячейками); диапазон представления чисел -1<x<+1;

количество операций — 29;

принцип работы машины — параллельно-последовательный с фиксированной
длительностью такта 10 мс;

емкость оперативного накопителя (НМБ) — 1024 36-разрядных кода;

емкость НПЛ — 10 000 36-разрядных кодов; количество зон — 127; скорость ввода —
75 кодов в минуту;

емкость НМЛ — 40 000 36-разрядных кодов; количество зон — 254; скорость записи
и воспроизведения с НМЛ — 75 кодов в минуту;

скорость работы печатающего устройства — 100 строк в минуту;

скорость вывода кодов на выходной перфоратор — 150 кодов в минуту;

потребляемая мощность — 10 кВт;

площадь для размещения машины — 75 кв. м.

11

Машина электронная вычислительная
специализированная М-40 (ЭВМ М-40)
1.
Главный конструктор: академик Лебедев С. А., зам. главного конструктора —
ответственный исполнитель: Бурцев В. С. Организация-разработчик: Институт точной
механики и вычислительной техники (ИТМиВТ) АН СССР.
2.
Год окончания разработки: 1956.

Технические характеристики
Быстродействие до 40 тыс. операций в секунду, оперативная память на ферритовых
сердечниках емкостью 4096 слов, цикл 6 мкс, представление чисел с фиксированной запятой,
разрядность 36, система элементов ламповая и феррит-транзисторная, внешняя память —
магнитный барабан емкостью 6 тыс. слов. Машина работала в комплексе с аппаратурой
процессора обмена с абонентами системы и аппаратурой хранения времени. Плавающий цикл
управления операциями. Система прерываний. Впервые использовано совмещение операций
с обменом. Мультиплексный канал обмена. Работа в замкнутом контуре управления в качестве
управляющего звена. Работа с удаленными объектами по радиорелейным дуплексным линиям
связи. В низкочастотных устройствах сопряжения впервые использованы ферриттранзисторные элементы.
Элементная база — лампы, ферриты, ПП транзисторы и диоды.

Сетунь
В начале 1956 г . по инициативе академика С.Л. Соболева, заведующего кафедрой
вычислительной математики на механико-математическом факультете Московского
университета, в вычислительном центре МГУ был учрежден отдел электроники и стал
работать семинар с целью создать практичный образец цифровой вычислительной

12

машины, предназначенной для использования в вузах, а также в лабораториях
и конструкторских бюро промышленных предприятий.
Требовалось разработать малую ЭВМ, простую в освоении и применениях,
надежную, недорогую и вместе с тем эффективную в широком спектре задач.
Обстоятельное изучение в течение года имевшихся в то время вычислительных
машин и технических возможностей их реализации привело к нестандартному
решению употребить в создаваемой машине не двоичный, а троичный симметричный
код, реализовав ту самую уравновешенную систему счисления, которую Д. Кнут
двадцать лет спустя назовет быть может, самой изящной системой, и как затем стало
известно, достоинства которой были выявлены К. Шенноном в 1950 г .
В отличие от общепринятого в современных компьютерах двоичного кода
с цифрами 0, 1, арифметически неполноценного вследствие невозможности
непосредственного представления в нем отрицательных чисел, предложен троичный
код с цифрами -1, 0, 1
Троичная ЭВМ “Сетунь”, опытный образец которой разработали, смонтировали
и к концу 1958 г . ввели в эксплуатацию сотрудники отдела электроники.
Разработка троичной ЭВМ предпринималась впервые, проводилась
немногочисленным коллективом начинающих сотрудников (8 выпускников МЭИ и МГУ,
12 техников и лаборантов) и была выполнена в короткий срок.
,

Этот успехявно свидетельствует о благодатности троичной цифровой

техники.
Ценой усложнения по сравнению с двоичными элементов памяти
и элементарных операций достигается существенное упрощение и, главное,
естественность архитектуры троичных устройств.
При минимальном наборе команд (всего 24 одноадресные команды)
“Сетунь” обеспечивала возможность вычислений с фиксированной и с плавающей
запятой, обладала индекс-регистром, значение которого можно как прибавлять, так
и вычитать при модификации адреса, предоставляла операцию сложения
с произведением, оптимизирующую вычисление полиномов, операции сложения и
умножения и три команды условного перехода по знаку результата.
Простая и эффективная архитектура позволила усилиями небольшой группы
программистов уже к концу 1959 г. оснастить машину системой программирования
и набором прикладных программ, достаточными для проведения в апреле 1960 г.
межведомственных испытаний опытного образца.
По результатам этих испытаний “Сетунь” была признана первым
действующим образцом универсальной вычислительной машины на безламповых
элементах, которому свойственны “высокая производительность, достаточная
надежность, малые габариты и простота технического обслуживания”.
По рекомендации Межведомственной комиссии Совет Министров СССР
принял постановление о серийном производстве “Сетуни” на Казанском заводе
математических машин.
Но троичный компьютер пришелся не по нраву чиновникам
радиоэлектронного ведомства: они не обеспечили разработку серийного образца
машины, а после того как он все-таки был осуществлен с использованием

13

конструктивов выпускавшейся заводом машины М-20, не содействовали наращиванию
выпуска в соответствии с растущим числом заказов, в частности из-за рубежа,
а наоборот, жестко ограничивали выпуск, отклоняя заказы, и в 1965 г. полностью
прекратили, причем воспрепятствовали освоению машины в ЧССР, планировавшей
ее крупносерийное производство.
Поводом для этой странной политики могла быть рекордно низкая цена “Сетуни” —
27,5 тыс., рублей, обусловленная бездефектным производством ее магнитных
цифровых элементов на Астраханском заводе, по 3 руб. 50 коп. за элемент (в машине
было около 2 тыс. элементов).
Существенно то, что электромагнитные элементы “Сетуни” позволили
осуществить реализацию трехзначной логики на редкость экономно, естественно
и надежно.
Опытный образец машины за 17 лет эксплуатации в ВЦ МГУ, после замены
на первом году трех элементов с дефектными деталями, не потребовал никакого
ремонта внутренних устройств и был уничтожен в состоянии полной
работоспособности.
Серийные машины устойчиво функционировали в различных
климатических зонах от Одессы и Ашхабада до Якутска и Красноярска при отсутствии
какого-либо сервиса и запчастей.
Благодаря простоте и естественности архитектуры, а также рационально построенного
программного обеспечения, включающего интерпретирующую систему, автокод
ПОЛИЗ с библиотекой стандартных подпрограмм, машины “Сетунь” успешно
осваивались пользователями в вузах, на промышленных предприятиях и в НИИ.
На семинарах пользователей вычислительных машин “Сетунь”,
проведенных в МГУ (1965), на Людиновском тепловозостроительном заводе (1968),
в Иркутском политехническом институте (1969) были представлены десятки
сообщений о результативных народнохозяйственных применениях этих машин.
“Сетунь”, благодаря естественности троичного симметричного кода, оказалась
поистине универсальным, несложно программируемым и весьма эффективным
вычислительным инструментом, положительно зарекомендовавшим себя, в частности,
как техническое средство обучения вычислительной математике более чем в тридцати
вузах. А в Военно-воздушной инженерной академии им. Жуковского именно
на “Сетуни” была впервые реализована автоматизированная система компьютерного
обучения.
Троичная система счисления основана на том же позиционном принципе кодирования
чисел, что и принятая в современных компьютерах двоичная система, однако вес i -й
позиции (разряда) в ней равен не 2 в степени i, а 3 в степени i.
При этом сами разряды не двухзначны (не биты), а трехзначны (триты) —
помимо 0 и 1 допускают третье значение, которым в симметричной системе служит -1,
благодаря чему единообразно представимы как положительные, так и отрицательные
числа.Значение n - тритного целого числа N определяется аналогично n – битному.

14

где а i ∈ {1, 0, -1} — значение цифры i -го разряда.
Цифры в троичной симметричной системе целесообразно обозначать
их знаками, т.е. вместо 1, 0, -1 писать +, 0, -. Например, десятичные числа 13, 7, 6, -6
в такой троичной записи будут: 13 = +++,
7 = + - +, б = + - 0, -6 = - + 0. Изменение знака числа в симметричном коде
равносильно потритной инверсии, т.е. взаимозамене всех “+” на “-” и всех “-” на “+”.
Операции сложения и умножения в троичном симметричном коде определены
таблицами:

Машина “Сетунь” может быть охарактеризована как одноадресная,
последовательного действия, с 9-тритным кодом команды, 18-тритными регистрами
сумматора S и множителя R , 5-тритными индекс-регистром модификации адреса F
и счетчиком-указателем выполняемых команд C , а также однобитным указателем
знака результата, управляющим условными переходами.
Оперативная память — 162 9-тритных ячейки — разделена на 3 страницы
по 54 ячейки для постраничного обмена с основной памятью — магнитным барабаном
емкостью 36 либо 72 страницы. При вычислениях с плавающей запятой мантисса
М нормализованного числа удовлетворяет условию 0,5 < |М| <1,5, а порядок
представлен отдельным 5-тритным словом, интерпретируемым как целое со знаком.
В 1967-1969 гг. на основе опыта создания и практических применений машины
“Сетунь” разработана усовершенствованная троичная цифровая машина “Сетунь 70”,
опытный образец которой вступил в строй в апреле 1970 г . Это была машина
нетрадиционной двухстековой архитектуры, ориентированной на обеспечение
благоприятных условий дальнейшего развития ее возможностей методом
интерпретирующих систем.
Принятие арифметического стека (стека 18-тритных операндов)
обусловлено использованием в качестве машинного языка так называемой польской
инверсной записи программ (ПОЛИЗ). ПОЛИЗ-программа состоит не из команд той или
иной адресности, а является последовательностью коротких слов —
6-тритных трайтов (троичных байтов). Как элемент программы трайт может быть
либо адресным, либо операционным.
Адресный трайт воспринимается как предписание заслать в стек операндов
из оперативной памяти. Операционный трайт указывает операции, а вернее
процедуры, выполняемые над стеком операндов, а также над регистрами процессора.

15

Всего предусмотрена 81 операция — 27 основных, 27 служебных
и 27 программируемых пользователем.
Второй (системный) стек, содержащий адреса возврата при обработке прерываний
и при выполнении вложенных подпрограмм, позволил успешно реализовать на
“Сетуни 70” идею структурированного программирования Э. Дейкстры, введя
операции вызова подпрограммы, вызова по условию и циклического выполнения
подпрограмм.
Осуществленное таким образом процедурное структурированное
программирование на практике подтвердило заявленные Дейкстрой преимущества его
метода: трудоемкость создания программ сократилась в 5-7 раз, причем программы
обрели надлежащую надежность, упорядоченность, понятность и модифицируемость.
В дальнейшем эти особенности архитектуры
“Сетуни 70” послужили основой диалоговой системы структурированного
программирования ДССП, реализованной на машинах серии ДВК и на последующих
персональных компьютерах.

Неполноценность современной двоичной информатики, наглядно проявляющаяся
в невозможности естественного представления чисел со знаком двоичным кодом,
обусловлена неадекватностью ее основы — двухзначной логики.
Эта так называемая классическая формальная логика, базирующаяся
на априорном законе исключенного третьего, не составляет совершенного
отображения реальности, не согласуется со здравым смыслом. По существу это логика
искусственного дискретного мира двоичных компьютеров.
Основоположником логики справедливо считается Аристотель, создавший
систему доказательного умозаключения — силлогистику, которая все еще остается
непревзойденным интеллектуальным инструментом.

16

Принципиальное отличие логики Аристотеля от современной
“классической” в том, что она не двухзначна, а трехзначна. Вопреки “закону
исключенного третьего” у Аристотеля наряду с “необходимо есть” и “необходимо
нет”, имеется третье — “возможно, есть и, возможно, нет”. Трехзначность присуща
отношению следования, исчерпывающе определенному Аристотелем в “Первой
аналитике”:
“…Когда два [объекта] относятся друг к другу так, что если есть один, необходимо
есть и второй, тогда, если нет второго, не будет и первого, однако если второй есть,
то не необходимо, чтобы был первый.
Но невозможно, чтобы одно и то же было необходимо и когда другое есть
и когда его нет ”.
Машина состоит из шести функциональных устройств: 1) арифметического устройства,
2) устройства управления, 3) оперативного запоминающего устройства, 4) устройства
ввода, 5) устройства вывода, 6) запоминающего устройства на магнитном барабане.

Разработка системы математического обслуживания проводилась в следующих
направлениях:
Создание библиотеки стандартных подпрограмм.
Создание различных вариантов интерпретирующих систем.
Основу библиотеки составили подпрограммы для вычисления
элементарных функций в режиме плавающей запятой. Каждая из этих подпрограмм
занимает не более одной зоны памяти и выполняется не медленнее, чем в 8500 мксек.
Ряд подпрограмм служит для решения некоторых типовых задач: решения
системы линейных алгебраических уравнений, вычисления интегралов,
интегрирования системы обыкновенных дифференциальных уравнений и т. д.
С целью усовершенствования аппарата программирования машины
разработано несколько вариантов интерпретирующих систем, которые осуществляют
автоматизацию обмена информацией между магнитным барабаном и оперативной
памятью и использование стандартных подпрограмм.

17

Интерпретирующая система, являясь начальным шагом на пути создания
системы математического обслуживания, значительно облегчает процесс
программирования на машине “Сетунь”, причем это достигается без заметного
увеличения времени счета ввиду того, что в этой системе производятся в большинстве
случаев только существенно необходимые обращения к магнитному барабану,
а интерпретация тех или иных псевдокоманд осуществляется, как правило, между
такими обращениями к магнитному барабану, не вызывая значительного увеличения
времени счета. Основные стандартные подпрограммы, как было указано выше,
успевают также выполняться за время одного оборота барабана.

От программирующих программ к системам
программирования (российский опыт)
Трансляция --- это область, с которой начиналось системное программирование.
Первыми программами, принадлежащими системному программному
обеспечению, были трансляторы --- ассемблеры на Западе, программирующие
программы (ПП) у нас.
Возникновение первых идей по трансляции обязано простому соображению: так
как программа хранима, как и данные, то она может быть аргументом или результатом
работы алгоритмов, которые реализуют те или иные аспекты конструирования
программ.
Начальные идеи по трансляции были выдвинуты в 1952 году, на самом раннем
этапе развития программирования.
В этом году Рутисхаузер опубликовал работу, в которой изложил идею о том, что по
естественной записи арифметического выражения можно построить эквивалентный ей
фрагмент машинного кода.
А.А.Ляпунов в те же годы заметил, что структура программы включает в себя
операторы из небольшого набора типовых операторов и может быть представлена
формально.
На языке операторных схем программа представляется как схема, соответствующая
управляющему графу программы, и совокупность спецификаций каждого оператора.
Эти идеи А.А.Ляпунов положил в основу курса по программированию, читавшегося им
в Московском Университете.
Понятие программы как некоторой операторной структуры, взгляд на программу
сверху, было революционной идеей, которая практически сразу же легла в основу
первых отечественных трансляторов.
ПРОГРАММИРУЮЩИЕ ПРОГРАММЫ
Первые отечественные трансляторы носили мнемоническое название
программирующих программ. В основе входного языка каждой из программирующих
программ лежал общий концептуальный базис, фиксирующий типы операторов и
общую идею их спецификации. Унификация языков не ставилась как практическая
задача.
Типы операторов соответствовали подавляющему большинству решаемых
тогда задач, а именно - вычислительным задачам. Выделялись арифметические
операторы, ведущие вычисление по формулам, логические операторы,

18

осуществляющие управление счетом, операторы переадресации, позволяющие
переходить к следующему значению индекса, все неарифметические вычисления
объединялись в так называемые нестандартные операторы, для которых
спецификацией был их машинный код.
Специального подъязыка описания данных, зачатки которого появились в
более поздних ФОРТРАНе и Алголе, не существовало.
Начиналось все с ПП-1. Молодые тогда программисты С.С.Камынин и Э.З.Любимский
исследовали реализуемость операторных схем и возможность автоматического
построения соответствующих машинных программ. Это было самое начало, и то, что
стало очевидным и даже тривиальным сейчас, считалось тогда проблематичным.
Законченная в 1954 году программирующая программа ПП-1 являлась одним из
первых в мировой практике трансляторов и, по-видимому, имела самый высокий
уровень входного языка.
Успешное решение проблемы реализуемости операторных схем как
входного языка программирующих программ, осуществленное в ПП-1, дало толчок для
двух проектов, разработанных для двух основных тогда отечественных машин --Стрела и БЭСМ.
Программирующая программа ПП-2, созданная под руководством
М.Р.Шура-Буры в 1955 г. для машины Стрела, основывалась на ПП-1 как прототипе.
В ПП-2 были усовершенствованы алгоритмы трансляции и было уделено
заметное внимание оптимизации программ --- оптимальному отведению памяти для
рабочих ячеек. Это был, по-видимому, первый оптимизирующий транслятор.
ПП для БЭСМ, разработанная А.П.Ершовым, Л.Н.Королевым, В.М.Курочкиным и
другими, развивала входной язык программирующих программ. Во-первых, она
объединяла схему и спецификацию операторов в одном тексте, во-вторых, был введен
структурный оператор цикла.
В этих двух системах была проделана большая работа по созданию
фундаментальных алгоритмов трансляции - программирование арифметических
выражений, реализация условий переходами и т.п.
С использованием идей и алгоритмов этих работ была развернута
деятельность по созданию следующего слоя программирующих программ.
Как некоторый итог этого начального этапа представляется вышедшая в
1958 году первая в мировой науке монография А.П.Ершова, посвященная проблемам
трансляции. Монография практически сразу была переведена и издана за рубежом.
Нужно заметить, что с трансляции начиналось не только системное, но и
теоретическое программирование. Именно работы по входным языкам (операторным
схемам) и трансляторам (программирующим программам) послужили толчком к
созданию первой математической модели программ --- схемам Янова.
ТРАНСЛЯТОРЫ С АЛГОЛА
Советские работы 1953 --- 58 гг. развивались независимо от мирового
опыта.
Практически параллельно с отечественными работами появились
серьезные труды по трансляции и в США. Сопоставимый по уровню входного языка
известный транслятор с ФОРТРАНа был описан в статье Дж. Бэкуса, появившейся в

19

1957г. Реальное привлечение мирового опыта к отечественным разработкам по
трансляторам началось с возникновением Алгола..
БИБЛИОТЕКИ СТАНДАРТНЫХ ПРОГРАММ
Параллельно с работами по программирующим программам развивался и
подход к автоматизации программирования с помощью библиотек стандартных
программ.
Е.А. Жоголевым была разработана стандартная составляющая программа
--- ССП [15], которая осуществляла статическую загрузку и связывание стандартных
программ из библиотеки.
Ккульминацией этого подхода было создание под руководством М.Р.
Шура-Бура интерпретирующей системы (ИС) ИС-2 [17], которая использовалась
повсеместно на новых машинах М-20 и учитывалась всеми трансляторами нового
поколения.
В ИС-2 был реализован способ динамического подключения библиотечных
подпрограмм.
ИС-2 реализовывала некоторые функции будущих операционных систем,
осуществляя динамическое связывание, подкачку и смену используемых подпрограмм.
Высокая эффективность ИС-2 и хорошо продуманный интерфейс с основной
программой сделали ее (как и положено операционной системе) неотъемлемой частью
комплекта поставки ЭВМ.
Существенно новым шагом в развитии направления трансляции стало создание
совокупности трансляторов с АЛГОЛа для появившейся массовой машины М-20.
Хотя язык операторных схем имел уже достаточно высокий уровень,
вполне сопоставимый с уровнем тогдашней версии ФОРТРАНа, Алгол-60 был
качественно новым языком, ставившим ряд новых важных задач.
Вместе с тем в стране уже был накоплен багаж базовых идей и созданы
коллективы высокопрофессиональных специалистов в области трансляции, что
привело к возникновению оригинальных и широко использовавшихся систем
программирования.
При всех своих достоинствах программирующие программы не имели
достаточно широкого практического использования: даже при их наличии почти во
всем множестве архитектур, существовавшем в стране, доля программирования
непосредственно в машинном языке была преобладающей.
Переход к современному стилю программирования на языках
программирования высокого уровня был осуществлен благодаря созданию первых
«алголовских» трансляторов.
Работы над этими трансляторами (ТА-1, ТА-2 и АЛЬФА ) начались практически сразу
после публикации завершенного международной рабочей группой описания языка.
ТА-1, и ТА-2 были завершены в 1963г., т.е. практически одновременно с
другими известными западными работами --- П.Наура и Э.Дейкстры. Транслятор
АЛЬФА ввиду объемности реализации был завершен годом позже.
_____

20

Транслятор ТА-1, разработанный под руководством С.С.Лаврова,
основывался на быстрой и простой схеме трансляции (в частности, был разработан
стековый подход к программированию выражений).
Для достижения такой схемы авторы отказались от ряда средств Алгола60: рекурсивности процедур, наличия статических (собственных - own) объектов в
блоках, от возможности введения параметров процедур без их типизации и пр. Вместе
с тем, что существенно для современных систем, особое внимание было уделено
простоте и удобству эксплуатации.
Работы над этими трансляторами (ТА-1, ТА-2 и АЛЬФА ) начались практически сразу
после публикации завершенного международной рабочей группой описания языка.
ТА-1, и ТА-2 были завершены в 1963г., т.е. практически одновременно с
другими известными западными работами --- П.Наура и Э.Дейкстры. Транслятор
АЛЬФА ввиду объемности реализации был завершен годом позже.
_____
Транслятор ТА-1, разработанный под руководством С.С.Лаврова,
основывался на быстрой и простой схеме трансляции (в частности, был разработан
стековый подход к программированию выражений).
Для достижения такой схемы авторы отказались от ряда средств Алгола60: рекурсивности процедур, наличия статических (собственных - own) объектов в
блоках, от возможности введения параметров процедур без их типизации и пр. Вместе
с тем, что существенно для современных систем, особое внимание было уделено
простоте и удобству эксплуатации.
Транслятор ТА-2, разработанный под руководством М.Р.Шура-Бура, не вводил
практически ограничений ни на язык, ни на размеры входных программ. В трансляторе
был разработан оригинальный алгоритм программирования процедур (понимаемых
как потенциально рекурсивные), мощные механизмы управления математической
памятью как единства оперативной и внешней, систематически применялся метод
таблично-управляемой генерации кода.
В мае 1963 г. первым из всех трех этот транслятор уже демонстрировался
на международной конференции по автоматизации программирования в Киеве.
В АЛЬФА-трансляторе, разработанном под руководством А.П.Ершова,
особое внимание уделялось эффективности получаемых программ. Большой набор
оптимизирующих возможностей (изощренное программирование процедур, циклов и
индексных вычислений, глобальная экономия памяти и пр.) давал возможность
получать объектные программы, мало отличающиеся по времени исполнения от
созданных вручную программ.
Платить за это приходилось большим объемом транслятора, большим
числом проходов (24 прохода), отказом от некоторых средств Алгола, оптимальная
реализация которых не была найдена (в частности, как и в ТА-1, рекурсивность была
запрещена).
Вместе с тем входной язык являлся расширением Алгола (точнее, его подмножества),
включавшим ряд таких типичных для современных языков средств, как операции над
многомерными значениями, комплексный тип, начальные значения переменных и пр. В
целом в АЛЬФА-трансляторе начала складываться современная методология

21

оптимизирующей трансляции с такими ее понятиями, как внутренний язык,
многопроходная реализация оптимизирующих преобразований, потоковый анализ.
В целом, эта совокупность трансляторов покрывала разнообразные
запросы пользователей.
В отличие от программирующих программ все алголовские системы были
уже настоящими системами программирования, близкими к современным системам, они включали в себя не только собственно транслятор, но также отладочные и
некоторые редактирующие средства.
В ТА-1 и АЛЬФА-систему входили отладочные редакторы, которые по заданию на
отладку создавали отладочную версию программ.
Платформой для всех систем была ИС-2, все системы включали ее средства
в свой входной язык и строили программы, ориентированные на использование ИС-2.
ЯЗЫКИ СИСТЕМНОГО ПРОГРАММИРОВАНИЯ
Инициированное созданием трансляторов появление системного
программирования поставило задачу создания адекватных языков программирования.
Все языки, появившиеся к началу 60-х годов --- Фортран, Кобол, Алгол-60
и др. --- не учитывали этой области программистской деятельности, и алголовские
системы, будучи достаточно большими программными системами, писались еще в
машинных кодах вручную.
Адекватные языки нужны были не только для трансляторов, но и для всей
возникающей области системного программирования: начали появляться и другие
языковые процессоры, первые операционные системы, информационные системы.
В связи с этим и у нас, и на Западе начали появляться специальные языки,
предназначенные для системного программирования.
Характерной для первого поколения этих языков (связанной с
необходимостью хорошо учитывать архитектуру и машинное представление данных)
была машинная ориентированность. Разрабатывались эти языки, как правило, в
коллективах, имевших большой опыт в создании системных программ --- таковыми в
тот период были системы программирования.
Отечественные языки Алмо, Эпсилон, Сигма, которые были одними из
первых в мире языками системного программирования, создавались поэтому в
коллективах трансляторщиков, только что завершивших большие программные
проекты и почувствовавших, каково сапожнику обходиться без сапог.
Язык АЛМО имел в своей основе некоторую абстрактную машину, отражавшую
особенность существовавшего тогда класса машин.
Помимо того, что этот язык был языком реализации для системного
программирования, он предназначался быть языком-посредником при трансляции с
различных языков.
Идея была в том, чтобы заменить трансляцию с m входных языков в n
машинных языков трансляцией "из m в один" и "из одного в n". Важно заметить, что в
языке существовали средства определения многопроцессности (типа fork и joint).
Машинная ориентированность явно прослеживалась в языке.

22

Были созданы реализации языка для основных отечественных машин того
времени (М-20, БЭСМ-6, Минск 2, Урал 11) и трансляторы с Алгола-60 и ФОРТРАНа в
АЛМО, причем все трансляторы также были написаны на АЛМО и "раскручены" на всех
этих машинах.

Святослав Сергеевич Лавров
К 1941 г. успел закончить в Ленинградском университете два курса матмеха.
Во время учебы в ЛГУ интересовался теорией вычислений, хотя в ту пору в
университете ее более основательно преподавали не матмеховцам, а астрономам. Они
часто работали на арифмометрах, выдававшихся в читальном зале.
Пошел в ленинградское народное ополчение. Был направлен в
Ленинградскую военно-воздушную академию. Окончил ее с дипломом военного
инженера-механика и попал по распределению техником звена в истребительный
авиационный полк.
В начале 1947 г. был демобилизован из армии и принят на работу на
должность начальника группы баллистики в подмосковное ОКБ в отдел Главного
конструктора Сергея Павловича Королева. Однако продолжал осваивать математику и
даже поступил заочно на мехмат МГУ.
С решением задач ядерной физики, баллистических задач, задач управления
динамикой полетов в Советском Союзе связано начало применения вычислительной
техники и развитие нового научного направления - программирования, а также
разработка средств описания способов решения задачи - различных алгоритмических
языков.
С.С. Лавров принял решение посвятить себя впредь уже не баллистике, а
программированию. В это время работы под управлением С. П. Королева по
подготовке полета Юрия Гагарина шли полным ходом и сектор баллистики и С.С.
Лавров я принимали в этих работах самое непосредственное участие.
«Сергей Павлович, вероятно, не мог не заметить, насколько я был
поглощен и увлечен проблемами использования вычислительной техники. Поэтому
одобрил мой переход из отдела динамики на заведование вычислительным центром,
насчитывавшим примерно 300 человек и включавшим в себя и группу
программирования (создан в ОКБ в конце 50-х годов)».
«Язык Алгол 60 мне сразу очень понравился, и я написал о нем книгу.
Существовавшие уже языки Фортран, Кобол страдали большими недостатками. По
сравнению с ними главным достоинством языков Алгол 60 и позже Паскаля было то,
что они вобрали в себя все самое лучшее и необходимое, в отличие, скажем, от языка
PL1, в котором авторы постарались воплотить чуть ли не все возможности, известные
на тот момент в мире».
«Мы решили принять участие в создании транслятора с Алгола 60. На тот момент две
группы уже приступили к разработке своих трансляторов: Михаил Романович ШураБура и Эдуард Зиновьевич Любимский в Институте прикладной математики АН СССР и
А. П. Ершов - в отделе ВЦ Сибирского отделения АН (ВЦ возглавлял тогда Г. И.
Марчук). Обе группы вежливо отказались от предложения о сотрудничестве с отделом
программирования ОКБ, поэтому мы начали действовать самостоятельно».

23

«Наша группа закончила разработку транслятора в октябре 1962 года
раньше, чем другие две группы. На заседании Президиума АН, которое проводил
Мстислав Всеволодович Келдыш, были зачитаны доклады от каждой из групп, и наши
общие результаты получили весьма высокую оценку».
«В 1966 году после смерти Сергея Павловича я перешел из ОКБ в систему
Академии наук и приступил к заведованию лабораторией программирования в
Вычислительном центре, который возглавлял Анатолий Алексеевич Дородницын. Он
считал, что мне следовало заняться координацией разработки программного
обеспечения для главной вычислительной машины страны того времени - БЭСМ-6.
Сначала диспетчер - зародыш операционной системы, потом и другие программы для
БЭСМ-6 создавали разные организации: "родитель" - Институт точной механики и
вычислительной техники, МГУ, наш ВЦ, группа в Свердловске и др. Честно говоря,
скоординировать действия этих разработчиков не удалось, так как каждый считался
только со своими взглядами, и в этом смысле я не оправдал надежд Дородницына».
«Одной из самых удачных своих работ в ВЦ считаю реализацию языка ЛИСП для БЭСМ6. До этого существовали реализации ЛИСПа, но более скромные и менее
распространившиеся, чем наша. Мы работали вдвоем: я и мой аспирант Гиви
Сергеевич Силагадзе, с которым в 1978 году была написана книга "Автоматическая
обработка данных. Язык Лисп и его реализация»
«Сегодня существует много новых реализаций ЛИСПа. Так я работаю на
CLISP (Common LISP). В языке ЛИСП учтен опыт построения языков программирования
для компьютеров, накопленный за 20 лет после появления машины Тьюринга - одной
из первых абстрактных моделей, ставшей наиболее популярной в теории
вычислимости. Обработка формул, автоматическое доказательство теорем,
математические выкладки - сфера применения ЛИСПа в отличие от вычислительных
задач, которые лучше решать с применением таких языков, как Паскаль, Алгол и др».
«Наиболее распространенные и известные языки программирования: Фортран, Алгол,
Кобол, ПЛ-1, Алгол-68, Паскаль, ныне забытая Ада, которую сменили языки семейства
C, Java и др, - принадлежат фактически к одному семейству, которое проделало
заметную эволюцию, но в основе осталось классом языков операторного,
процедурного типа. Это - типичные языки для описания и представления
алгоритмического знания.
Было два главных события, каждое из которых ознаменовало для меня
начало нового этапа в развитии алгоритмических языков: появление Алгола 60 (авторы
- интернациональная группа специалистов) и разработка Никлаусом Виртом языка
Паскаль».
"Надо ориентироваться на постепенный плановый переход от
алгоритмических языков к языкам спецификаций в качестве основы использования
средств вычислительной техники».
«Существует еще одно семейство языков, ведущих в основном свое начало
от языка ЛИСП (1960 г.) и характеризующихся по-разному: языки для обработки
символьной информации, языки обработки списков (LISP - List Processing), языки
искусственного интеллекта, языки управления роботами, языки логического
программирования или же функциональные непроцедурные языки.

24

Некоторые их черты, такие, как списки свойств и ассоциативные списки,
прямо ориентированы на представление знаний, другие (использование списочных
структур, рекурсивность, механизм возвратов) - на решение логических задач типа
автоматического доказательства теорем».
«Семейство очень важно для создания и использования баз знаний. В него входят
различные версии ЛИСПа (автор языка - Джон Маккарти), язык Плэнер и др.
Примыкает к ним язык Пролог, интерес к которому возрос после того, как японцы в
своем проекте "ЭВМ пятого поколения" отвели Прологу одно из центральных мест».
Транслятор ТА-1М
Транслятор ТА-1М создан коллективом исполнителей под руководством
члена-корр. АН СССР С. С. Лаврова и канд. техн. наук В. А. Степанова; этот транслятор
представляет собой модернизированный вариант разработанного в 1963 г.
транслятора ТА-1. Транслятор может быть использован на машинах М-20, М-220, М220М, БЭСМ-4. При переходе от одной машины к другой из-за различия устройств
вывода приходится изменять некоторые блоки.
Входной язык транслятора ТА-1М является конкретным представлением
языка АЛГОЛ-60.
Трансляция выполняется при последовательной одноразовой работе 18
блоков, составляющих транслятор, общим объемом около 17000 кодов. Скорость
трансляции 120–200 команд в минуту.
При трансляции используется МОЗУ объемом 4096 ячеек (один куб) и один
магнитофон. Транслятор выдает сведения о результатах работы в терминах входного
языка. Это позволяет автору задачи обходиться без специальных консультантов,
помогающих расшифровывать выдачи транслятора.
Текст АЛГОЛ-программы для придания ему большей выразительности и обозримости
может быть отпечатан в отредактированном виде. Имеется возможность отпечатать
текст также и в исходном виде.
Транслятор прост в эксплуатации. В трансляторе имеется блок
синтаксического контроля и контроля семантических ошибок. Блок осуществляет
выдачу на печать, позволяющую легко определить место и характер ошибки.
Программа, полученная при помощи ТА-1М, приблизительно в 1,5–2,5 раза
длиннее такой же программы, составленной в кодах машины программистом среднего
уровня, и выполняется примерно в 1,5–2,5 раза дольше.
TA-1M позволяет отлаживать программы в ходе их выполнения: для этого
используется специальный режим трансляции, при котором в рабочую программу
вставляются группы команд, обеспечивающих проверку в ходе вычислений
правильности работы программы. При возникновении в процессе работы программы
аварийных ситуаций производится анализ ошибки с выдачей сведений о месте и
причинах ошибки. Выдаются на печать значения величин и их идентификаторы из
зоны программы, содержащей ошибку. Это позволяет анализировать программу,
написанную на АЛГОЛе, без анализа программы в коде машины.
Входной язык транслятора позволяет использовать любую стандартную программу
(СП) библиотеки ИС-2 и после трансляции формирует на магнитном барабане

25

библиотеку СП, к которым имеются обращения в программе. Таким образом
исключаются обращения к ленте за СП и уменьшается время выполнения программы.
ТА-1М оформляет процедуры, как СП в системе ИС-2. Это позволяет
получать достаточно большие программы. Предусмотрен режим автономной
трансляции процедур, что позволяет организовать большую библиотеку СП.
К недостаткам следует отнести то, что полученные после трансляции
программы используют только один куб оперативной памяти. Большие программы с
отладочными вставками часто не помещаются в МОЗУ.
При трансляции из-за ограниченности рабочих полей, используемых для
хранения информации, могут возникать ограничения числа меток, числа операторов
цикла, числа условных операторов, длины выражений и др. При переполнении
рабочих полей происходит выдача на печать указания, как преобразовать АЛГОЛпрограмму, чтобы этого переполнения не было.

Транслятор ТА-2М

Транслятор ТА-2М разработан коллективом сотрудников под руководством докт. физ.мат. наук, проф. М. Р. Шура-Бура. Разработка ТА-2 закончена в 1963 г. ТА-2М
использует увеличенную память и эксплуатируется с 1967 г.
Входной язык транслятора ТА-2М является конкретным представлением
языка АЛГОЛ-60.
Транслятор предназначен для перевода алгоритмов, написанных на языке
АЛГОЛ-60, на язык машин БЭСМ-4,
М-220, М-220М. Транслятор удобен для получения программ сложных алгоритмов с
большим объемом вводимой информации. ТА-2М автоматически распределяет всю
память машины под вводимую информацию и промежуточные результаты.
Для трансляции требуется разделение алгоритма на такие части,
программа каждой из которых помещается в оперативной памяти. Отдельно
оттранслированные программы записываются на магнитную ленту и вызываются в
нужном порядке в МОЗУ.

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

26

Алгол 60 создавал ряд новых неизведанных проблем для трансляции
и решению этих собственно трансляционных проблем и было посвящено большинство
западных и отечественных реализаций Алгола 60. Многие считали, что создание
Алгол-трансляторов, дающих достаточно эффективный код, невозможно.
Ситуация усугублялась тем что в Новосибирске реализовывался не Алгол
60, а его расширение которое включало конструкции, существенно усложнявшие как
оптимизацию, так и собственно трансляцию.
Успевшая, хоть и затянувшаяся, реализация проекта была конструктивным
доказательством того, что с языков типа Алгол возможна эффективная реализация,
что естественность конструкций не противоречит порождению эффективного кода,
но требует изощренной техники оптимизации. Начало создания такой техники и было
положено в Альфа-проекте, хотя она и опиралась на предыдущие работы
по ПП и Фортран-трансляции.

Альфа-язык

В 1958 году международная группа опубликовала начальную версию нового языка
программирования, основной идеей которого было дать как можно более
естественную форму для выражения алгоритмов (прежде всего, вычислительной
математики).
Опираясь на эту версию, Андрей Петрович Ершов вместе с Кожухиным
и Янковым решили разработать свой язык, внеся в него то, что было бы удобно
вычислителям, в частности, возможность оперировать с векторами, матрицами
и многомерными объектами.
Когда своя версия была готова, появилась окончательная версия
международного языка Алгол 60. Ряд решений в Алголе 60 совпадали с принятыми
нашей группой, но ряд существенных конструкций, которые были разработаны
в «сибирском» языке отсутствовали в Алголе 60.
Было принято решение удалить все несущественные различия из «сибирского» языка,
но существенные — оставить, сделав из него правильное расширение Алгола 60.
Новый язык в разное время носил разные названия. Сначала он носил название
«входной» (в английском Input Language ), затем — скорее обиходное, чем
официальное — «сибирский» и, наконец, уже установившееся и официальное имя —
язык Альфа.
Альфа-язык был расширением Алгола 60, более того, расширением некоторого его
подмножества. Основные ограничения этого подмножества были связаны с главной задачей —
обеспечить высокоэффективный код.
По- настоящему серьезным ограничением было запрещение рекурсивных процедур.
Альфа-язык содержал ряд принципиальных новшеств. Большинство из них увеличивали
выразительную силу языка для вычислительных задач.
Впервые для языков программирования арифметические типы были дополнены типом
комплексный с введением всей комплексной арифметики.
Также впервые было введено понятие многомерного значения (массива значений)
и многомерной переменной.

27

В Альфа-языке появилась крайне удобная и широко использовавшаяся
возможность выполнять естественные операции над всем многомерным значением целиком
и целиком же присваивать это значение многомерной переменной.
Нововведение было явно выигрышным и в ряде последующих языков — Алголе
68, ПЛ/1, Аде — были введены подобные же средства.
В языке появились средства создания много- мерных объектов — значений и переменных,
образования подмассивов таких объектов, объединения объектов в новый многомерный
объект.
Впервые в Альфа-языке были введены циклы без параметра и описания начальных
значений, что сейчас присутствует во многих языках.
Из Фортрана было позаимствовано такое наглядное средство как функциивыражения (тот простой случай, когда значение функции определяется единственным
выражением).

В качестве способов подстановки параметров процедуры была

добавлена подстановка результатом ( out -параметр Ады). Логические выражения могли
включать цепочки равенств или неравенств (вида a < b <= c < d = e ).
Еще одно нововведение в Альфа-языке — это перечисления.
Интересно что для задания синтаксиса перечислений пришлось прибегнуть
к контекстно-зависимым правилам грамматик — это был первый пример использования
контекстно-зависимой грамматики для описания синтаксиса языка (Алгол 68, конечно,
в большей мере использовал механизмы контекстно-зависимых грамматик, но он был позже).
Одним из важных дополнений было введение библиотеки процедур. В системе
Альфа впервые было введено такое понятие, которое в современных системах
выражается библиотеками модулей, пакетов, классов.

Состав библиотек никак

не стандартизировался, он мог быть определен при установке системы, для этого
существовала своя технология.
Процедуры из библиотеки, вызов которых встречался в программе,
подключались, как это сейчас принято, к ней как объекты самого внешнего контекста.
Учет архитектуры и программного обеспечения реализовывался такими средствами входного
языка как использование библиотеки ИС-2 (набор подпрограмм в машинном коде, динамически
вызываемых и связываемых с рабочей программой) и машинных команд.
Так как оперативная память ЭВМ М-20 была маленькой (сейчас это выглядит
совсем удивительно — всего 4К 45-разрядньа слов) то надо было ввести механизмы
поддерживающие работу программ с довольно большими требованиями на память.
В системе программирования ТЛ-2 (тоже для М-20) решением стало создание
виртуальной памяти, что не требовало никаких усилий от пользователей, но влекло накладные
расходы. В Альфа-системе пошли по другому пути: заставили пользователя «укладываться»
в оперативную память, самостоятельно фрагментируя программу и данные с выделением
внешних (располагаемых во внешней памяти — для М-20 это барабан и ленты) массивов
и блоков.
Внешние блоки скачивались с внешней памяти и стирались по мере
необходимости автоматически ( run — time системой), а внешние массивы надо было явно
копировать в буферные массивы в оперативной памяти (или из них).

28

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

Автономная отладка блоков.

Она шла параллельно для всех блоков, использовались примеры прокрутки.
Комплексная отладка. Здесь возникали проблемы, которые приводили
к перепроектированию некоторых блоков, — прежде всего, при обнаружении слишком больших
временных затрат.
Общая структура организации была такой — руководитель Ершов, два координатора —
Кожухин (1-я часть транслятора) и Поттосин (2-я часть транслятора).
Руководитель отвечал за принятие всех основных решений. Предполагалось,
что он свободен от собственно разработки и принятия технических решений, но практически
он участвовал в разработке блоков экономии памяти, а кроме того, когда выяснилось, что
нужен специальный блок превращения промежуточного представления программы
во внутренний язык, а все разработчики уже «разобраны?’ по блокам, то Ершову пришлось
самому писать этот блок.
Координаторы отвечали за проблемы, возникавшие у разработчиков
блоков и следили за согласованием работ. Особую роль играл Волошин. Он зачастую

29

в ущерб своей работе (в результате его блоки задержались) участвовал в обсуждении многих
возникавших вопросов и часто помогал неожиданным взглядом на проблему. Польза такого
«блуждающего дискутанта» в проекте несомненна.
Состав Альфа-транслятора
Общая структура транслятора состоит из четырех этапов:
получение промежуточного представления, превращение его во внутренний язык,
оптимизации на внутреннем языке, построение машинных команд,
экономия памяти и формирование машинной программы.
Все эти этапы разбивались на блоки. Разбиение определялось как
функциональными действиями, так и необходимостью «вписаться» в малую (4К слов) память
компьютера.
Окончательная структура блоков такова:
Ввод и первичный синтаксический контроль
(блок 1) разработчик и реализатор — Загацкий.
Обработка описаний (блок 2) — Кожухин.
Завершение идентификации (блок 3) — Бабецкий.
Декомпозиция выражений (блоки 4 и 5), разработчик — Кожухин, реализатор — Кожухина.
Анализ и программирование процедур (блоки б и 7) — Загацкий.
Перевод из промежуточного представления во внутренний язык (блок 8) — Ершов.
Обработка геометрических операций над массивами и реализация действий с многомерными
массивами (блоки 9, 10) — Волошин.
Анализ и чистка циклов (блоки 11-13) — Бежанова (при участии в разработке Поттосина).
Экономия выражений (блок 14) — Поттосин.
Построение машинных команд (блок 15) — Кожухина (при участии в разработке Бабецкого).
Программирование индекс-регистров и циклов (блоки 16-18) — разработчик Поттосин,
реализатор Кожухина.
Построение операторной схемы и графа несовместимости (блоки 20, 21) — Мишкович (при
участии в разработке Ершова).
Распределение памяти (блок 22) — Трохан (при участии в разработке Ершова).
Чистка и компоновка программы (блоки 23, 24) — Трохан, Змиевская.
Экономия констант (блок 19) — Змиевская (при участии в разработке Ершова).
Построение операторной схемы и графа несовместимости (блоки 20, 21) — Мишкович (при
участии в разработке Ершова).
Распределение памяти (блок 22) — Трохан (при участии в разработке Ершова).
Чистка и компоновка программы (блоки 23, 24) — Трохан, Змиевская.
Первая диссертация, посвященная расчетам равноустойчивых грунтовых откосов с
использованием ЭВМ, была защищена в 1953 г. заместителем директора Института точной
механики и вычислительной техники АН СССР (ИТМиВТ) И.С.Мухиным. Эта работа открыла
путь серии прикладных исследований, которые демонстрировали возможности
вычислительной техники.
С программированием дело обстояло сложнее. Программистам нужно было
доказывать научную составляющую своих работ перед «закоренелыми тупо-математическими
умами», по резкому, но точно передающему атмосферу того времени, выражению
АКАДЕМИКА В.М. ГЛУШКОВА.

30

Многие математики, особенно специалисты по вычислительной математике, считали тогда, что
единственная роль программистов — это обслуживать потребности вычислителей.
Они не признавали существования в программировании внутренней проблематики.
Мнение, что программирование — не самостоятельная научная дисциплина, а обслуживающая
деятельность, было достаточно распространено.
Характерно замечание сотрудника Института математики СО АН СССР:
«Вот до сих пор существовала, так сказать, теоремная математика, а теперь
появилась этакая «бестеоремная» математика.
Характерны впечатления А.П. Ершова от защиты кандидатской диссертации О.С.
Кулагиной, специалиста в области автоматической обработки текстов на естественных
языках: "Вечером (07.04.1959) защищалась Оля Кулагина. 14 за, один недействительный.
Удовлетворение было испорчено непониманием (со слов Алексея Андреевича Ляпунова)
значительной частью Ученого совета во главе с Келдышем даже основ этой проблематики".

Разработки операционных систем
для ЭВМ БЭСМ-6
В. П. Иванников, Л. Н. Королев,
Э. З. Любимский, А. Н. Томилин

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

31

Большое влияние на развитие ОС для ЭВМ оказало создание в 1967 г. в
ИТМ и ВТ под руководством Л. Н. Королева первой ОС для ЭВМ БЭСМ-6, названной
позднее "Диспетчер-68". Она обеспечивала совместное управление работой устройств
ЭВМ, подготовку и решение задач в мультипрограммном режиме.
Операционная система выполняла:
-

мультипрограммное решение задач;

-

управление одновременной работой всех каналов связи с внешними

запоминающими устройствами и всех устройств ввода-вывода информации;
-

совмещение вычислений во всех задачах с параллельной работой внешних

запоминающих устройств и устройств ввода-вывода;
-

организацию совместного динамического распределения ресурсов двухуровневой

памяти (оперативной и внешней), базирующуюся на замещении страниц в оперативной
памяти;
-

распределение устройств между задачами;

-

буферизацию ввода-вывода;

-

развитую связь с оператором по управлению прохождением задач и работой

устройств;
-

возможность многотерминальной работы в диалоговом режиме.

Кроме этих основных функций "Диспетчер-68" обеспечивал вызов трансляторов с
языков программирования и автокодов.
"Диспетчер-68" явился предтечей будущих развитых ОС и основой
последующих операционных систем для БЭСМ-6: ОС "Дубна" (Н. Н. Говорун, И. Н.
Силин) и
ОС "Диспак" (В. Ф. Тюрин), дисковой операционной системы, ориентированной на
пакетную обработку и эксплуатируемой в дальнейшем на большинстве ЭВМ БЭСМ-6.
Существенное влияние оказал "Диспетчер-68" и на разработку в ИТМ и ВТ
операционной системы реального времени для БЭСМ-6 ОС НД-70 ("Новый диспетчер70") с развитыми средствами организации параллельных вычислений (соподчинение
задач, аппарат параллельных процессов), режимом работы в реальном времени и
возможностью организации многомашинного вычислительного комплекса.
Разработкой ОС многомашинного комплекса руководил В. П. Иванников.
В центрах управления полетами космических аппаратов на базе ОС НД-70
были созданы и в течение двадцати лет активно использовались для обеспечения
управления полетами несколько больших баллистических и телеметрических
программных комплексов реального времени.
Вслед за НД-70 средства организации параллельных процессов были
введены в ОС "Диспак" для ЭВМ БЭСМ-6, что позволило программным комплексам
реального времени базироваться и на этой ОС.
На основе возможностей операционной системы БЭСМ-6 усилиями ряда
ведущих научно-исследовательских и производственных организаций с привлечением
крупных математических сил СССР была создана первая в стране поставляемая
промышленностью полная система математического обеспечения ЭВМ
(ОС, системы программирования, библиотеки программ).

32

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

Мониторная система "Дубна"
Первый транслятор с языка Фортран для БЭСМ-6 был разработан в 1969 г. Н. Н.
Говоруном, В. П. Шириковым и другими в ОИЯИ в Дубне. Этот транслятор затем был
включен в Мониторную систему "Дубна".
Многоязыковая Мониторная система "Дубна" для БЭСМ-6 (1970 г.)
обеспечивала управление заданиями, создание и использование многоуровневых
библиотек программ.
В систему входила библиотека программ общего назначения, совместимая
с библиотекой Европейского центра ядерных исследований CERN.

33

Мониторная система "Дубна" использовалась как с собственной ОС "Дубна"
(с эффективными алгоритмами замещения страниц оперативной памяти, динамической
сменой приоритетов задач, развитым аппаратом служебных задач и нерезидентных
блоков), так и с другими ОС для БЭСМ-6.
В Мониторную систему "Дубна" входили следующие компоненты:

транслятор (ассемблер) с автокода Мадлен на язык загрузки;

транслятор с языка Фортран на язык загрузки;

статический и динамический загрузчики;

библиотекарь и общие библиотеки стандартных программ;

редактор текстовой информации;

системные программы ввода-вывода.
В дальнейшем в состав Мониторной системы были включены другие

трансляторы и системы:

Алгол-ГДР;

Фортран-ГДР;

Форекс - оптимизирующий транслятор с языка, близкого к Фортрану 77;

транслятор с языка Паскаль;

ГРАФОР - пакет графических программ;

Мониторная система "Дубна" была создана коллективом сотрудников ОИЯИ с

участием специалистов из Института атомной энергии им. И. В. Курчатова и странучастниц ОИЯИ (ГДР, ВНР, КНДР).
В дальнейшем развитии системы приняли участие также сотрудники

ИК АН УССР, ИАПУ ДВНЦ АН СССР, ИФВЭ и других организаций.
Проводились также исследования и разработки диалоговых систем,

связанных, главным образом, с машиной БЭСМ-6 (системы Пульт, Димон, Мультидоступ
и др. предоставляли пользователям возможности редактирования текстов программ и
запуска задач в пакетную обработку).
В 70-х годах под руководством Л. Н. Королева и В. П. Иванникова

(основные участники разработки И. Б. Бурдонов,

А. Ю. Бяков, А. С. Косачев, С. Д. Кузнецов, В. И. Максаков,

А. Н. Томилин) впервые была создана распределенная ОС многомашинного

комплекса, обеспечивающая сетевое взаимодействие вычислительных процессов в
ЭВМ комплекса, а также с процессами в глобальных сетях ЭВМ и использование
внешних устройств всех ЭВМ в любых вычислительных процессах, выполняющихся в
комплексе.

Была фактически обеспечена работа "конвейера ЭВМ",

предназначенного для обработку в режиме реального времени больших потоков
информации о полетах космических аппаратов.

Все эти разработки, в особенности для ЭВМ БЭСМ-6, которая более десяти лет

оставалась самой высокопроизводительной машиной в стране, и для многомашинного
вычислительного комплекса реального времени АС-6, во многом определили
дальнейшие направления и характер исследований в отечественном системном
программировании.

34

За время эксплуатации нескольких сотен БЭСМ-6 была накоплена

уникальная библиотека программ, которая стала беспрецедентным интеллектуальным
богатством страны.
На представительных всесоюзных конференциях по

программированию, состоявшихся в 1968 г. в Киеве и в 1970 г. в Новосибирске, широко
обсуждались теоретические и практические достижения в области создания и
использования отечественных ОС наряду с другими аспектами системного и
прикладного программирования.

В ряде московских вузов с 60-х годов активно готовились кадры по

специальности "Прикладная математика", включавшей и программирование.
Большое значение имело открытие в 1970 г. факультета

вычислительной математики и кибернетики в МГУ, которым руководил академик
Андрей Николаевич Тихонов. Специализированные в области системного
программирования кафедры возглавили Л. Н. Королев,

Н. П. Трифонов, М. Р. Шура-Бура.
Был создан журнал "Программирование" (главными редакторами его

были Н. П. Бусленко, Н. Н. Говорун; в настоящее время им является В. П. Иванников).
Московскими учеными написан ряд книг по ЭВМ, программированию,

математическому и программному обеспечению ЭВМ и вычислительных комплексов, в
которых отражены вопросы организации ОС ЭВМ ("Структуры ЭВМ и их
математическое обеспечение" Л. Н. Королева, учебник "Программирование" Э. З.
Любимского, Н. П. Трифонова и В. В. Мартынюка и другие монографии).

Си и UNIX: немного истории

Операционная система UNIX была создана в конце шестидесятых годов не на пустом
месте - в течение всего этого десятилетия велись интенсивные разработки языков.
Все шестидесятые годы лучшие умы создавали то, чем мы сейчас
пользуемся.
Тогда родились интерактивный режим и режим разделения времени, были
изучены способы управления страничной памятью, механизмы защиты информации,
планирование заданий, принципы построения файловых систем и т. д., появился ряд
экспериментальных операционных систем, были разработаны языки
программирования PL/I, APL, Симула, Алгол и Кобол.
Поскольку у каждого языка находились свои приверженцы и свои критики,
в компьютерном обществе разгорелись жаркие дискуссии, в ходе которых,
естественно, возникла идея создать нечто, свободное от недостатков и обладающее
всеми мыслимыми достоинствами.
Такую попытку в Англии предприняли Лондонский и Кембриджский университеты. Их
проект назывался «Комбинированный язык программирования» (сокращенно CPL), и,
разумеется, он не был доведен до конца.
Однако кое-что создано было, и это кое-что называлось Basic CPL.
Примерно тогда же в Америке фирмы Bell Laboratories, General Electric и
Массачусетский технологический институт (MIT) создавали операционную систему

35

Multics, но в некоторый момент Bell Laboratories отказалась от участия в проекте и
даже ликвидировала машину, на которой производились работы.
В 1969 г. Кэн Томпсон и Деннис Ритчи начали писать для PDP 7 операционную систему.
Сначала появился кросс-ассемблер (программа, позволяющая на одной
машине транслировать программы, написанные на ассемблере другой), вслед за ним
постепенно возникли ядро, файловая система и интерпретатор командного языка.
И, наконец, родились два ключевых понятия: образ процесса и «развилка»
(fork) – примитив образования нового процесса.
С высоты наших сегодняшних знаний можно сказать, что они реализовали
объектный подход, но непосредственных участников событий больше занимал тот
факт, что PDP 7 смогла одновременно обслуживать двух пользователей.
В 1970 г. Брайан Керниган окрестил новорожденную операционную систему UNIX.
Несмотря на младенческий возраст, ее тут же заставили работать: начальство решило
использовать вычислительную технику для подготовки документов патентного отдела
фирмы. Была куплена более мощная PDP 11/20 все той же фирмы DEC, для нее
переписали UNIX, и процесс подготовки документов был успешно автоматизирован.
Так патентный отдел Bell Laboratories стал первым пользователем UNIX.
Параллельно с разработкой операционной системы Кэн Томпсон занимался
и языком программирования Би (В), который был прямым потомком Basic CPL
(сокращенно BCPL) и, подобно ему, не имел типов данных и оперировал только
машинными словами.
В язык Би ввели типы данных, и новый язык назвали NB. Однако попытка переписать
на NB систему не удалась, поскольку выполнение программ было недостаточно
быстрым.
После переработки и создания компилятора язык был назван Си (С), и, хотя
в нем тогда еще не было структур и глобальных переменных, этот язык так
понравился создателям, что новые утилиты они стали писать непосредственно на нем.
Так появились на свет операционная система UNIX и язык Си.

36

Sign up to vote on this title
UsefulNot useful