Новосибирск
пр. К. Маркса 20, к1, 208
Новосибирск
пр. К. Маркса 20, к1, 208

Зачем программисту математика

По всем официальным и неофициальным рейтингам одними из наиболее востребованных на рынке труда являются специальности, связанные с IT-технологиями (специалисты в области информационных и вычислительных технологий компьютерной обработки данных). Согласно последним исследованиям, проведенным Международным Институтом Открытых Технологий, потребность в специалистах в области вычислительных и информационных технологий ежегодно возрастает на 36%. Профессия программиста, некогда являвшаяся привилегией избранных, становится все более массовой и востребованной. Отсюда и интерес к этой профессии, зачастую окутанной мифами и легендами, что делает ее еще более привлекательной. С другой стороны, программист программисту рознь. В области IT-технологий растет конкуренция, все большее значение приобретает не то, имеешь ли ты диплом специалиста в области IT-технологий, а уровень твоих знаний и навыков.

Подготовку специалистов на ФПМИ осуществляют две выпускающие кафедры – прикладной математики и программных систем и баз данных – и две специальные – параллельных вычислительных технологий и вычислительных технологий.

Глядя на приведенный перечень выпускающих кафедр, возникает вопрос: кого же готовит факультет Прикладной математики и информатики? Математиков или программистов? И насколько справедливо сложившееся мнение (или заблуждение), что “на ФПМИ слишком много математики”? Попробуем в этом разобраться.

Начнем с того, что сегодня термин “программист” имеет широкое многозначное толкование равно,  как и сама отрасль программирования. Специализации программистов (а точнее специальности IT-технологий) множатся и развиваются, программист, специализирующийся в одной области приложений, зачастую уже слабо понимает своего коллегу, работающего в другой области. Хотя вроде бы и языки программирования, и технологии одни и те же. Дело в том, что сами области приложений могут кардинально отличаться друг от друга, и для того, чтобы писать специализированные программы, мало знать языки и технологии программирования, нужно хорошо разбираться в той области, для которой пишется программный продукт. А для этого нужно иметь достоверную непротиворечивую модель (чаще всего математическую, но возможно и какую-либо другую – инфологическую, семантическую) той предметной области, которую Вы собираетесь исследовать или автоматизировать. У К. Маркса есть замечательные строки, что “самый плохой архитектор (читай – разработчик программ) отличается от самой хорошей пчелы, строящей соты, тем, что у него, в отличие от пчелы, в голове есть проект, план им создаваемого …”. Построение этой модели – самый важный этап разработки программного продукта, требующий не только высочайшего интеллекта, но и очень серьезного образования. Он включает анализ и исследование широкого спектра алгоритмов и математических методов, выбор наиболее приемлемых альтернатив, построение, анализ и алгоритмизацию модели, выбор и использование адекватных программных средств и технологий. Все это невозможно без основательной базовой математической подготовки, являющейся фундаментом для специалиста в области IT-технологий. Поэтому подчас вызывает умиление вид начинающего горе-программиста, который, получив сложную задачу, бросается к компьютеру и начинает “из головы” писать программу. Почему-то ни у кого не вызывает сомнения, что перед тем, как строить многоэтажный дом или разрабатывать сложное инженерное техническое сооружение, необходимо подготовить проект (и не один) того, что Вы собираетесь создавать. Конечно, каждая из специализаций IT-технологий требует глубоких познаний в соответствующих областях, но эти познания не принесут ожидаемых дивидендов без фундаментальной базовой математической подготовки.

Наш факультет не готовит “узких” специалистов в  какой-то области знаний. Основная цель – подготовка специалистов, обладающих фундаментальными знаниями в области компьютерных технологий (computer science, computer science and engineering, information system  и аналогичных).

Задачи, которые ставят перед собой кафедры факультета, – это подготовка профессионального специалиста, который разбирается не только в конкретных технических деталях какой-то области знаний. Мы готовим специалистов, умеющих работать в любой области знаний, самостоятельно получать новые знания и приобретать опыт работы в различных областях информационных технологий.

Эта стратегия оправдывает себя, так как в 17 лет студент, как правило, еще не определился в выборе специализации, да к тому же специализации в индустрии производства программного обеспечения рождаются и умирают очень быстро. И, возможно, специалисту придется не раз в жизни менять специализацию в соответствии с развитием IT-технологий. Если у специалиста не будет фундаментальных знаний, которые даются на факультете, сменить специализацию будет довольно затруднительно.

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

Все это невозможно без универсального образовательного базиса, который складывается из трех взаимосвязанных направлений: математического, естественно-научного и инженерного.

В наше время невозможно стать высокопрофессиональным программистом без серьезной математической подготовки. Он должен владеть формальными методами исследований, которые включают в себя: определение формальных моделей и теорий, доказательство теорем, интерпретацию результатов. При этом теоретический подход должен развиваться не только при изучении математических дисциплин, но и дисциплин, непосредственно связанных с информатикой. Это, например, теория алгоритмов (теория сложности), теория построения трансляторов (формальных грамматик, автоматов), теоретическое программирование, которое рассматривает программу как математический объект и пр. Естественно-научное направление образовательного базиса развивает такие умения, как сбор данных и выработку гипотез, математическое моделирование, умение получать и грамотно интерпретировать полученные данные.

Последние десятилетия характеризуются тем, что во многих областях человеческой деятельности обновление фундаментальных знаний осуществляется за счет интенсивного использования математического моделирования. Физическая реализация экспериментов, экспериментальная проверка выдвинутых гипотез являются очень дорогостоящими, как правило, требуют значительных человеческих и материальных ресурсов. А имитация экспериментов на математических моделях, выявление закономерностей в ходе многократного моделирования оказывается на порядки дешевле. Не случайно наиболее весомые результаты в различных научных направлениях (в математике, физике, геофизике, химии, технике, технологиях, экономике, управлении …) получены благодаря эффективному применению методов математического моделирования. Если быть более точным, эти результаты получены с при­менением соответствующего программного обеспечения, реализующего матема­тическую модель объекта и математические методы, позволяющие найти решение, причем оптимальное. И если мы заменяем физический эксперимент математическим, то должны быть уверены в том, что их результаты совпадают, что математическая модель адекватна “физическому” объекту. И как тут специалисту по IT-технологиям обойтись без глубоких математических знаний и вычислительных методов?

Во многих сферах человеческой деятельности с внедрением информационных технологий наблюдается стремительное накопление информации, которая является источником новых знаний и содержит скрытые закономерности. Эти знания и закономерности могут являться основанием для принятия ответственных решений. Выявление в накопленной информации скрытых закономерностей является задачей интеллектуального анализа данных (Data Mining) – составной части процесса поддержки принятия решений. А в основе интеллектуального анализа данных лежит широкий спектр методов теории вероятностей и математической статистики.

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

Примечательно, что выпускники ФПМИ легко адаптируются в любой прикладной области, в том числе, в гуманитарных и экономических областях, быстро добиваясь успехов благодаря основательной фундаментальной подготовке и подготовке в области IT-технологий.