Об академическом пути, публикационных правилах и стратегиях, образовании в области теоретических компьютерных наук и о многом другом рассказывает Ирина Ломазова, заведующая Научно-учебной лабораторией процессно-ориентированных информационных систем, профессор департамента программной инженерии факультета компьютерных наук.
— С чего начиналась и как складывалась ваша карьера?
— Я не очень люблю слово «карьера», особенно применительно к академическим занятиям. Для меня это слово ассоциируется скорее с административной лестницей, продвижением по службе. Я просто занимаюсь своим делом, тем, что мне интересно.
Как это начиналось? Я училась в школе, любила читать самые разные книжки — и художественные, и научно-популярные. С 5-го класса стала участвовать в олимпиадах. После 7-го класса как победителя краевой олимпиады меня впервые пригласили на летнюю школу в новосибирский Академгородок. Эта школа проводится в августе каждый год уже более 50 лет преподавателями Физико-математической школы (ФМШ) при Новосибирском университете. На следующий год я участвовала уже во Всесоюзной олимпиаде, а после летней школы меня пригласили учиться в ФМШ. ФМШ — это замечательные преподаватели, фантастические лекторы и удивительная атмосфера. После такой школы я не думала, куда поступать, — конечно, на матфак НГУ.
Математика очень большая и очень разная. В НГУ после 3-го курса студенты выбирают специализацию. На отделении чистой математики, где я училась, помимо классических математических кафедр была и есть программистская кафедра — ее создал и много лет руководил ею академик Андрей Петрович Ершов, который сделал очень много для становления информатики в нашей стране. Вот на этой кафедре работал мой учитель Борис Абрамович Трахтенброт, математик с мировым именем, специалист по математической логике. Как раз в то время активно зарождалась теоретическая информатика, или, как теперь говорят, теоретические компьютерные науки (Theoretical Computer Science), основанные, в частности, на применении методов математической логики. Борис Абрамович был не только блестящим математиком, он обладал фантастической интуицией, тонко чувствовал и глубоко понимал существо проблем. Мне очень повезло, что у меня был такой учитель.
Компьютерная программа — формальный, то есть точно определенный, однозначно описанный объект. Поэтому для проверки того, что программа правильно работает, можно не просто тестировать ее на разных входных данных, но и доказывать ее корректность сразу на всех возможных входах, как это принято в математике. Мне нравилась математическая логика, и, когда я узнала про новые программные логики для доказательства свойств программ, я сразу захотела этим заниматься. С тех пор я, в общем-то, все время работаю на стыке математики и программирования и, будучи по образованию математиком, преподаю студентам-программистам. А с 2010 года я работаю в Вышке в отделении программной инженерии.
— В чем особенность компьютерных наук? Есть ли, например, специальные требования к публикациям?
— Компьютерные науки — это даже не одна наука. С одной стороны, есть инженерная деятельность, задачей которой является разработка программного продукта, к которому применимы обычные требования, как на производстве. С другой стороны, есть фундаментальные задачи, которые возникают в конечном счете тоже из практических нужд.
Теоретические компьютерные науки существуют на стыке математики и программирования. Иногда кажется, что это все далеко от жизни и никому не нужно, но потом вдруг оказывается нужным и востребованным, как это часто в науке бывает. То есть это очень разнообразная область — компьютерные науки, поэтому они и называются «науки», во множественном числе. Соответственно, и критерии публикации будут разные. В одном случае нужно представить какую-то разработку, может быть, еще не программный продукт, а то, что называется прототипом. В этом случае публикуются результаты экспериментов, испытаний, которые показывают, что это полезная разработка, что она работает лучше известных, имеющихся. Здесь требования к публикациям такие же, как в экспериментальных науках.
Другое дело, когда доказывается некоторое математическое утверждение. К такой статье требования как к статье по математике. А есть деятельность, которая включает в себя и то и другое. Например, мы в нашей Лаборатории процессно-ориентированных информационных систем (ПОИС) и чисто теоретические работы делаем, и разрабатываем алгоритмы и методы, которые могут использоваться для решения прикладных задач. Мы занимаемся направлением process mining — анализом поведения информационной системы на основе истории ее работы, обычно представленной в журнале событий. Лаборатория существует уже больше десяти лет. Когда-то это была почти экзотика, а теперь process mining активно используется на практике. Сегодня и Сбербанк, и ВТБ имеют подразделения process mining.
В разные годы некоторые аспекты требований к публикациям могли различаться. Много лет назад считалось совершенно нормальным публиковать одну хорошую статью в хорошем журнале раз в два года. Сейчас, чуть что-то сделал, надо публиковать, кто не успел — тот опоздал. Кроме того, больше стало коллективной работы.
С другой стороны, сегодня процесс публикации упростился, теперь во многих случаях даже бумага не нужна. Поэтому количество публикаций растет во всем мире и во всех областях исследований. Изменились и сами способы обмена информацией. Можно опубликовать препринт, можно просто выложить текст на своей странице, и все же только проверенный специалистами результат может считаться введенным в научный оборот. Поэтому рецензируемая публикация в авторитетном журнале, прошедшая несколько итераций исправлений, по-прежнему сохраняет свое значение.
— Как изменились компьютерные науки за то время, что вы этим занимаетесь?
— Моя область — теоретическая информатика, или, как теперь чаще говорят, теоретические компьютерные науки. Интересно, что фундаментальные, математические задачи, связанные с программированием, были поставлены еще на заре разработки языков и средств программирования. Одним из пионеров здесь является, безусловно, Алексей Андреевич Ляпунов. В 1958 году Алексей Андреевич и его ученик Юрий Иванович Янов ввели новое понятие схем программ и исследовали их свойства. Уже значительно позднее ученик Ляпунова Андрей Петрович Ершов, на кафедре которого я специализировалась, в 1977 году опубликовал книгу под названием «Введение в теоретическое программирование (беседы о методе)», где на примере двух конкретных задач показал важность теоретических исследований для решения прикладных задач программирования. С тех пор, уже на моей памяти, это направление активно развивается и разрастается. Когда-то в области теоретической информатики проходило всего несколько международных конференций в год, а сейчас это не одно направление, а много разных, отследить все невозможно.
Теоретические науки развиваются как в ответ на запросы со стороны практики, так и в силу своей внутренней логики. Важность чисто теоретических исследований не стоит недооценивать. Случалось, что теоретические результаты, полученные много лет назад, были на какое-то время забыты, а потом легли в основу топовых исследований и стали активно применяться на практике. Это может быть связано и с развитием вычислительной мощности компьютеров: то, что раньше было практически нереализуемо, теперь можно выполнить на отдельном ноутбуке.
— Как менялось образование в области компьютерных наук?
— Образование в области компьютерных наук меняется постоянно и стремительно. Это такая область, в которой все время появляется что-то новое, часто — принципиально новое. Меняются, в частности, методологии, средства и технологии программирования, следовательно, нужно перестраивать обучение.
В математическом образовании есть базовые курсы, которые читаются с минимальными изменениями уже почти 200 лет. Тот же математический анализ, например. Эти курсы сложились, они проверены временем, и они просто входят в базовую математическую грамотность.
История компьютерных наук, несомненно, короче. Меняются парадигмы программирования, постоянно обновляется «железо», что меняет принципиальные возможности программной инженерии. Появились средства для того, чтобы выполнять гигантские вычисления: скорость, объем памяти и, соответственно, сложность систем растут. Все это ставит новые теоретические и прикладные задачи. В компьютерных науках теория и практика очень завязаны друг на друга.
Как следствие, меняются не только специальные, но и базовые курсы. Все знают, что меняются даже языки программирования, которым учат в школах. Конечно, есть базовые, фундаментальные теории, модели и методы. Соединить фундаментальное образование и обучение новейшим технологиям — вечная проблема. Наверное, когда-нибудь в компьютерных науках тоже сложится общепризнанная система базовых курсов, как математический анализ и линейная алгебра в математике.