(к 100-летию со дня рождения ученого)

(01.06.1926–15.05.1999)
Летом этого года исполняется 100 лет со дня рождения замечательного ученого, инженера, преподавателя МФТИ, научного редактора и организатора науки в области математики и информатики Владимира Михайловича Курочкина (01.06.1926–15.05.1999).
Свою научную деятельность по окончании мехмата МГУ им. М. В. Ломоносова он начал как математик-алгебраист. Под руководством академика Александра Геннадьевича Куроша получил ряд существенных результатов по теории колец и алгебр. Основной результат его диссертации — всякая примарная алгебра будет или полным кольцом матриц над некоторой алгеброй с делением, или же локально матричной алгеброй — упоминается в издании «Математика в СССР за тридцать лет, 1917–1947».
С 1950 года в Институте точной механики и вычислительной техники АН СССР Владимир Курочкин принимал деятельное участие в разработке системы команд ЭВМ БЭСМ. Его трудовой вклад был отмечен орденом Трудового Красного Знамени (1956).
В 1955 году его приглашают руководить лабораторией программирования в только что созданном Вычислительном центре АН СССР. Вскоре лаборатория стала одним из главных центров развития целого ряда новых направлений в этой области науки в СССР. За время ее работы из нее выделились несколько коллективов, ставших ядрами иных отделов ВЦ АН СССР, а также других академических институтов: Вычислительного центра СО АН СССР — ныне Институт вычислительных технологий СО РАН и Центрального экономико-математического института.
Владимир Курочкин и его сотрудники были в СССР одними из первых, кто занялся вопросами автоматизации программирования. Под его руководством были созданы транслятор ППС для ЭВМ Стрела-3 и транслятор с языка АЛГОЛ для ЭВМ БЭСМ-2, а позже — для языка АЛГОЛ-60 для БЭСМ-6, широко применявшийся в стране. Владимир Михайлович был членом международной группы по автоматизации программирования, разработавшей язык АЛГАМС, а затем — язык «Ада».
Естественным продолжением работы над трансляторами стало изучение вопросов автоматизации их разработки и формализации описания языков программирования на основе аппарата атрибутных грамматик. Курочкиным были сделаны обобщения атрибутных грамматик, позволяющие использовать их более эффективно для определения языков программирования и предложен оригинальный асинхронный алгоритм вычисления семантических атрибутов.
Сотрудниками отдела Владимиром Серебряковым (1942–2024) и Анатолием Бездушным (1959–2019) на основе этих разработок была создана система «Супер» — отечественный аналог компилятора компиляторов YACC и ему подобных, которая успешно применялась в целом ряде разработок ВЦ Академии наук.
Для читателя, не связанного непосредственно с прикладной математикой и системами математического обеспечения (СМО) ЭВМ, видимо, желательно пояснить общеинженерную и научную значимость этого направления исследований, которая отнюдь не ограничивается вопросами разработки новых трансляторов, хотя с появлением новых языков программирования, новых архитектур ЭВМ и новых вычислительных процессоров с измененной системой команд такая необходимость также постоянно имеет место.

Ученому и инженеру, к примеру, в области физики куда ближе и интереснее иные области применения автоматизации программирования. Расскажем о чуть них подробнее.
С ЭВМ программисты сначала были вынуждены общаться на чрезвычайно подробном, а потому длинном и к тому же малопонятном машинном языке. Затем для удобства разработали системные программы, которые вместо машинных кодов команд позволили программисту использовать куда более понятные и легче запоминаемые мнемоники (получились ассемблеры).
Следующий большой шаг в повышении производительности и облегчения труда программистов произошел в начале 1960-х годов с разработкой языков высокого уровня. Здесь уже наметилась некоторая специализация разрабатываемых языков — от языков для числовых научно-технических расчетов (ForTran — formula translator), до языков для более универсальных применений (начиная с Algol, PL/1 и др., наследниками которых являются ныне широко применяемые C++, Python, Java и др.) и таких особенных языков, как LISP, предназначенного для обработки списков.
Возникает естественный вопрос: а возможна ли и оправдана ли дальнейшая более высокая степень автоматизации? Единого ответа для всех приложений здесь на сегодня дать невозможно. В некоторых случаях, к примеру для решения целого ряда широко применяемых систем уравнений, новая ступень автоматизации оказалась и возможной, и оправданной и воплотилась в соответствующие пакеты прикладных программ, например MatLab. Но большинство приложений столь разнообразны, что попытка разработать для них единый универсальный инструмент оказывается нецелесообразной по ограничениям стоимости, эффективности, доступности освоения, удобства использования и т. п.
И тогда ученые в области СМО ЭВМ предложили: давайте предоставим возможность каждому программисту создать и применять свой язык программирования еще более высокого уровня для своей прикладной области или даже отдельной задачи — и разработали для этого новые программы — [системные] компиляторы компиляторов [прикладных языков пользователей].
Эти новые пользовательские языки зачастую весьма простые, но в силу того что указания ЭВМ идут на языке с учетом данной прикладной области, производительность и, что также очень важно, надежность прикладного программирования в этой области удается качественно повысить. Если прибегать к образному сравнению, то если обычного программиста уподобить землекопу с лопатой, то программиста, применяющего собственный язык высокого уровня для своей задачи,— с машинистом производительного экскаватора.
Конечно, и требования к квалификации программистов несколько повышаются, в них уже входят основы теории формальных языков и трансляции, но в том объеме, который достаточен для грамотного использования компилятора компиляторов, эти требования вполне доступны и по сложности, и по объему большей части студентов технических вузов, и во многих вузах ныне по соответствующим специальностям читаются в рамках одного семестра.
Заметим, что знание основ теории формальных языков, способов их задания и распознавания с помощью формальных грамматик, регулярных выражений и автоматов весьма полезна, а часто и просто необходима для успешного изучения и понимания курсов по искусственному интеллекту, больших языковых моделей и др. ныне бурно развивающихся отраслей информатики.

Сидят (слева-направо): Ю. А. Крицкий, В. В. Бардиж, Ю. Д. Панов, А. Ф. Горкин, С. И. Лебедев, К. М. Озолинь, М. А. Лаврентьев, И. С. Мухин, И. Д. Визун (Горелова), Д. Т. Стукалов.
Стоят (слева-направо): В. М. Курочкин, А. А. Абрамов, А. И. Срагович, П. И. Козулин, Н. Н. Фориш, В. В. Похлёбкин, Н. В. Абаев, Л. В. Сидорова (Гаврилина), Ю. Р. Валашек, А. А. Москвин, Н. П. Зубрилин, А. Г. Лаут, Г. Т. Артамонов, В. С. Бурцев, Ю. И. Визун, В. А. Зимин, В. С. Чунаев
С 1948 года до середины 1990-х Владимир Михайлович Курочкин преподавал в МФТИ. Он разработал вузовские программы по математическому обеспечению ЭВМ, методам трансляции, линейному программированию. Разработал и многие годы вел курс «Теория и реализация языков программирования» (ТРЯП) на ФУПМ МФТИ, подготовил с соавторами по нему одноименное учебное пособие в 1973 году (2-е изд.— в 1978-м).
С 2000 года этот курс более 20 лет продолжал вести ученик и последователь Курочкина профессор Владимир Алексеевич Серебряков, читавший также подобный, но более объемный, курс «Теория формальных языков» на ВМК МГУ (там он занимает три семестра).
Увы, у физтеховского курса были и заметные недостатки, связанные в том числе с тем, что на него в учебном плане постоянно отводили все меньше времени. Сначала это был годовой курс на два семестра, а в новом веке — уже только семестровый. Также, в отличие, к примеру, от ВМК МГУ и Института вычислительных технологий и информатики МЭИ, где подобные курсы сопровождаются лабораторными работами, на Физтехе их в данном курсе никогда не было.
В 1990-х уже слегка устарела часть материалов в учебном пособии по курсу 1978 года, а сами его бумажные носители в библиотеке института заметно обветшали. К недостаткам можно относиться по-разному. Профессор Серебряков с соавторами подготовил обновленное пособие по курсу, изданное первый раз в 2003 году, затем несколько раз переизданное. Оно включало темы, которые изучались как на ВМК МГУ, так и на Физтехе, поэтому по пособию Курочкина вели занятия в обоих университетах.
Кроме того, Владимир Алексеевич предложил на основе опыта подобного курса на ВМК МГУ студентам МФТИ по желанию знакомиться и использовать семь пакетов прикладных программ по курсу на языке Java (по моделированию конечных автоматов (КА), по построению детерминированного КА по регулярному выражению, по построению LL(1) и LR(1)-анализаторов по грамматике, по генерации кодов для булевских выражений, по генерации оптимального кода методами сопоставления образцов и транслятор с простого языка Java).
Для каждого пакета имелся Java код, примеры и краткое описание пакета. Таким образом, материалы для лабораторных занятий по курсу (если не в обязательной его части, то в возможном продолжении для желающих на факультативе) тоже имелись.
Созданная на курсе атмосфера творчества воодушевляла многих преподавателей семинаров пробовать свои силы, предлагая новые задачи и подходы. Так, семинарист Дмитрий Голубенко с соавтором подготовил и в 2023 году издал в МЦНМО книгу «Языки, автоматы и грамматики» (Голубенко Д. А., Саватеев Ю. В. Языки, автоматы и грамматики. М.: МЦНМО, 2023. ISBN 978-5-4439-3775-5).
Имели место и другие, менее удачные подходы. Аспирант (ныне к. ф.-м. н.) Александр Рубцов, познакомившись с рекламными документами НИУ ВШЭ и ряда зарубежных вузов, решил, что сможет срочно поднять уровень преподавания и по этому курсу, а кафедра, под флагом необходимости обновления кадров попросила ему, «как молодому перспективному таланту», в этом не препятствовать.
В ходе «реформ» второкурсники на третьем семестре обучения вскоре начали получать задачи, которые по сложности надо было бы отнести то ли к олимпиадным, то ли к магистерским. Это новшество было «удачно» дополнено полным снятием ограничений на переход студентов от одного семинариста к другому.
Итог оказался вполне предсказуемым: у одной из аспиранток, первый раз проводившей занятия по курсу и которой потому была доверена одна группа, собрались около 80 человек, естественно не поместившихся в предназначенную для одной группы аудиторию, а несколько более требовательных преподавателей остались в полупустых комнатах. Несколько студентов вообще перестали ходить на занятия.
Апофеоз смелого эксперимента пришелся на 2019 год, когда на экзамене по ТРЯП более чем из 120 человек 39% получили двойки. Тут уже проснулся деканат и сказал, что в таком исполнении курс слишком сложен для нынешних студентов, и его закрыли.
Надо сказать, что курс в самом деле имеет особенности нелинейного нарастания сложности восприятия при вроде бы некоторых внешне незначительных «добавлениях и усовершенствованиях» (особенно при жестких временных ограничениях одного семестра) и потому требует повышенного внимания и тонкого чувства меры со стороны преподавателя, особенно на младших курсах.
Такие превратности судьбы, к примеру, испытал на себе и подобный курс на ФИВТ, который, из-за показавшегося в первые годы после создания факультета излишне сложного содержания для его студентов, также сначала был удален из учебной программы, затем, по осознании его важности для факультета, восстановлен. Так что в том или ином виде студенты ныне уже ФПМИ Физтеха продолжают с этим направлением знакомиться и успешно его осваивать.
Владимир Михайлович Курочкин был членом редколлегии Журнала вычислительной математики и математической физики и журнала «Программирование», редактором и переводчиком 17 книг по информатике. Эта обширная и важная деятельность, по нашему мнению, заслуживает отдельной подробной статьи.
