Первый учебный курс программирования в СССР был прочитан А.А. Ляпуновым в 1952/53 учебном году на механико-математическом факультете МГУ и назывался "Принципы программирования". Структура курса складывалась, можно сказать, на глазах у студентов. Первая половина весьма тесно следовала книге "Программированием для быстродействующих электронных счетных машин" [23]. В перерыве между первым и вторым семестрами у лектора начали складываться основные подходы к "операторному методу". Вся вторая половина курса была результатом совместной работы профессора и студентов по созданию и уточнению символики операторов, используемых при составлении схем программ. Курс читался и воспринимался с большим энтузиазмом, и неслучайно почти половина слушателей математиков-вычислителей стала после выпуска профессиональными программистами.
В 1955 г. чтение курса программирования в МГУ продолжил ШБ. Через пару лет состав курса стабилизировался.
В современных терминах его структура выглядит следующим образом: архитектура ЭВМ; арифметические основы, ознакомление с системой команд; программирование линейных последовательностей команд; программирование ветвлений; программирование циклов; синтез программы в рамках операторного метода; технология программирования (стилистика, комментарии, блок-схемы, операторные схемы, отладка); компоненты математического обеспечения (библиотеки, трансляторы, отладочные программы).
В качестве учебной ЭВМ использовалась или "Стрела", или абстрактная трехадресная ЭВМ.
Первой книгой об ЭВМ, рассчитанной на массового читателя, была уже упоминавшаяся книга А.И. Китова "Электронные цифровые машины", вышедшая в середине 1956 года [33]. Коллеги-профессионалы иногда критиковали эту книгу за неточности или поверхностное изложение. Однако, перечитав ее почти через 20 лет, авторы должны подтвердить, что это было добросовестное, а главное, весьма оперативное изложение доступных в то время сведений об ЭВМ. Достоинством книги была убедительная и увлекающая свежего читателя демонстрация разнообразной новизны, вносимой ЭВМ в практику человеческой деятельности.
Развитием этой книги, а также конспекта лекций, выпущенного в 1056 г. для слушателей Артиллерийской инженерной академии [86], стала книга А.И. Китова и Н.А. Криницкого "Электронные цифровые машины и программирование" [87]. Это была первая книга, официально рекомендованная Министерством высшего образования в качестве учебного пособия, весьма солидного объема (572 стр.), изданная большим тиражом (25 тыс. экземпляров). Весьма богатая содержанием, книга отличалась некоторой пестротой стиля -- от популярного изложения основ до руководств к пользованию транслятором. Методика изложения программирования следовала сложившейся схеме (см. выше), но содержала в дополнение к ней две главы с подробным изложением теории схем программ (главным образом, по Ю.И. Янову) и правил программирования для одной из разновидностей трансляторов (ПП-С) для "Стрелы", сделанного в стиле ПП-2. Одним из любопытных обобщений была возможность использовать операторы присваивания в качестве аргументов отношений в логических условиях, например, допускалась запись ([87], стр. 502):
Первым учебником по программированию была книга киевских авторов Б.В. Гнеденко, В.С. Королюка и Е.Л. Ющенко "Элементы программирования" [88] (вышла в 1961 г., была переиздана в 1964 г. и переведена на ряд иностранных языков (1964 г. -- в ГДР и Венгрии, 1969 г. -- во Франции)). Авторы использовали для изложения условную ЭВМ и дидактику курса А.А. Ляпунова. Отдельная глава была посвящена адресному программированию.
Первой попыткой создать солидный университетский курс программирования, "построенный на современных научных и методических принципах" ([89], стр. 2). была книга Е.А. Жоголева и Н.П. Трифонова "Курс программирования" [89], основанная на опыте чтения лекций по программированию в МГУ. Это был также первый курс, базирующийся на АЛГОЛЕ 60. Попытка оказалась в целом весьма удачной, книга была основным вузовским учебником по программированию вплоть до появления машин третьего поколения и издавалась несколько раз тиражом, приближающимся к 300 тыс. экземпляров. Модернизированная версия этого учебника еще и сейчас широко используется как материал для общего вводного курса программирования.
Первая известная авторам диссертация, связанная с использованием ЭВМ, -- кандидатская диссертация И.С. Мухина (который в течение многих лет был заместителем директора ИТМиВТ, защищенная в 1953 г. и посвященная расчетам равноустойчивых грунтовых откосов [90]. Приведенные расчеты, выполненные на БЭСМ в 1952 г., требовали решения системы гиперболических уравнений на плоскости. Эта работа открыла поток самых разнообразных прикладных диссертаций, демонстрировавших мощь ЭВМ и предоставляемые ими возможности. С самим программированием дело обстояло гораздо сложнее, -- прошли годы, прежде чем оно преодолело комплекс неполноценности, а окружающие усмотрели в нем научное содержание.
Кажется, первой попыткой академической трактовки собственно программистских проблем была глава докторской диссертации ШБ, защищенной в 1953 г. и посвященной в целом ошибкам округления. В этой главе описывалась некоторая систематическая процедура организации двойного счета на ЭВМ для обеспечения надежности вычислений. Несмотря на практичность схемы и актуальность проблемы, эту часть диссертации многие игнорировали, а некоторые оспаривали.
В 1954 г. в своей дипломной работе, посвященной обращению матриц, АЕ изложил некоторую общую схему программирования и описал алгоритм настройки по месту перемещаемой программы.
Постепенно начала набирать силу более здравая точка зрения. В 1957 г. на ученом совете МИАНа во время защиты первой диссертации собственно по программированию (Э.З. Любимский. "Об автоматизации программирования и методе программирующих программ" [60]) состоялась оживленная "мета"-дискуссия. Диссертант, посвятив основное изложение описанию транслятора ПП-2, добавил теоретическую главу, посвященную уже упоминавшемуся выше "параметрическому" виду записи для решения на ЭВМ. А.С. Кронрод критиковал диссертанта за "оппортунистический уклон" и настаивал на праве представления к защите сложных системных программ, полагая достаточным свидетельством творческих способностей автора существование и полезную применимость программного продукта самого по себе.
В 1957 г. состоялась также защита кандидатской диссертации Ю.И. Янова [91]. Эта работа, ставшая классической в теоретическом программировании, также не получила единодушной поддержки, которой она заслуживала.
В 1958-1959 гг. состоялись две защиты кандидатских диссертаций по вопросам программирования, сделанные на материале первых экспериментов по машинному переводу: О.С. Кулагиной (о своего рода специализированном языке программирования задач машинного перевода [92]) и Л.Н. Королева (об оптимизации организации и работы со словарем [93]).
Л.Н. Королев-программист с самого начала своей деятельности -- в 1965 г. стал первым профессором программистом. Первая докторская диссертация по программированию была защищена в Киеве Е.Л. Ющенко в 1965 г. на материале разработки серии трансляторов на основе адресного языка [49], [50], [51].
Сначала все эти диссертации причислялись к существовавшим в то время родственным специальностям: вычислительной математике, счетно-решающим устройствам и т. д. В середине 60-х годов под влиянием серии работ по теоретическому программированию была образована новая специальность -- математическая логика и программирование. Употребление слова "программирование" в виде явной конституэнты привело к представлению на ученые советы потока работ по системному программированию, весьма далеких от математической логики. Совсем недавно, в 1971 г., программисты отмежевались от логиков, образовав собственную специальность -- математическое обеспечение вычислительных комплексов и автоматизированных систем управления.
Авторы хотели бы закончить этот раздел упоминанием о двух постоянных московских общегородских семинарах, сыгравших немаловажную роль в становлении программирования в СССР.
В 1955 г. в Московском университете при кафедре вычислительной математики работал семинар по смежным вопросам кибернетики и физиологии, который с 1956 г. стал называться семинаром по кибернетике. АЕ выступил первым докладчиком на этом семинаре с рефератом статьи о моделировании процесса выработки условных рефлексов на машине ЭДСАК [94]. Семинар носил интердисциплинарный характер и уделял, в частности, немалое внимание неарифметическим применениям ЭВМ. Участие в его работе позволяло программистам вырабатывать более широкий взгляд как на применение ЭВМ, так и на их место в этом процессе. Этот семинар в несколько ином стиле, работает в МГУ по-прежнему под руководством членов-корреспондентов АН СССР С.В. Яблонского и 0.Б. Лупанова.
С 1956 г. в этих же стенах начал работу, которая продолжается и поныне, научный семинар по программированию под руководством Н.П. Трифонова и ШБ. Предназначенный вначале для сотрудников кафедры вычислительной математики и вычислительного центра МГУ, он постепенно приобрел общегородской характер, собирая иногда на своих заседаниях по нескольку сот человек. Представительный характер его аудитории обеспечивал быструю и эффективную передачу информации в "горячие периоды" появления новых идей или направлений в программировании. К таким моментам активных и плодотворных дискуссий можно отнести период разработки системы программирования для университетской "Стрелы" (1957-1958 гг.), период освоения АЛГОЛа (1960-1961 гг.), период работы с БЭСМ-6, а также период изучения и выработки концепций операционных систем.
©1997-98 Лаборатория Конструирования и Оптимизации Программ
Институт Систем Информатики CO PAH
Web master webmst@pcosrv.iis.nsk.su