Найти тему

Нужна ли математика программисту?

Оглавление

Только рядовой пользователь может не знать математику и полагаться на компьютер. Программист обязан быть хорошим математиком, даже если в его распоряжении мощная техника для сложных расчетов. Оксана Селендеева, основатель Международной школы программирования для детей CODDY, рассказывает, какие разделы математики используются в IT и где можно потренироваться.

-2

Лучше начинать заниматься еще со школы

Разделы математики

Разные задачи подразумевают разные подходы к решению и требуют знания различных разделов математики. Если для создания простого калькулятора достаточно будет владеть базовой логикой и арифметикой в школьным объеме, то при разработке игрового «движка» с реалистичной физикой не обойтись без отличного знания геометрии, дифференциальных уравнений, математического анализа и многого другого. Основательных познаний требует и разработка в самых востребованных областях современного программирования — Data Science и Machine Learning — анализ данных и обучение искусственного интеллекта.

Логика

Логика — «кит», на котором покоится вся информатика. Без понимания базовых логических принципов стать программистом невозможно. С помощью логики создают внутренний механизм принятия решений в программе, которые определяются действиями пользователя или результатами вычислений. Например, пользователь нажал клавишу «влево», персонаж игры передвинется влево. Если герой столкнулся с врагом или препятствием — запустится подпрограмма, которая запрограммирована на дальнейшее развитие событий. Все это зависит от логики, созданной программистом на этапе разработки.

Дискретная математика

Еще один «кит» информатики — дискретная математика. Она  изучает дискретные, то есть не-непрерывные, математические структуры: графы и множества. В программировании этот раздел математики используется чаще других, потому что его методы справляются с большинством типичных задач.

Дискретная математика помогает решать задачи на комбинаторику, построение графов, поиск нужной информации среди множества вариантов и многие другие. Ее методы используются и при математическом моделировании — построении искусственной модели, имитирующей реальные физические процессы.

-3

Сегодня все больше девочек интересуются программированием

Теория чисел

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

Теория вероятностей

Знания теории вероятностей позволяют программисту найти верное решение, даже когда исходных данных недостаточно. Формальная логика в таких ситуациях пасует, потому что нет оснований для однозначного решения. Однако теория вероятностей позволяет найти решение, максимально приближенное к верному. Теория вероятностей часто используется в IT. Например, в Байесовской фильтрации спама, на базе которого работают спам-фильтры большинства email-серверов. Кроме того, в робототехнике, программировании игр, при создании автомобильных компьютеров и т.д.

Математический анализ

Глубокое знание математического анализа нужно не каждому программисту. Однако понимание его принципов помогает в решении сложных задач. Чаще всего «матан» требуется в математическом моделировании, когда на компьютере воссоздается физический объект или явление реального мира. Например, при проектировании мостов или сложных технических устройств, которые невозможно испытать в реальности — пилотируемый космический аппарат.

-4

Мастер-класс CODDY в Московском дворце пионеров

Ресурсы для тренировок

Project Euler — сайт носит имя знаменитого математика Леонардо Эйлера, поэтому просто не будет. На нем размещены самые сложные задачи по математике. Для решения многих требуется знание основ программирования.

Timus Online Judge — сайт Уральского федерального университета. Это крупнейший архив с задачами разного уровня сложности и автоматической проверкой. Есть задания на динамическое программирование, теорию чисел и структуры данных, а также, по словам создателей, необычные и хитрые.

MAXimal — русскоязычный портал для освоения алгоритмов. К сожалению, сайт давно не обновляется, но все еще можно потренироваться и порешать упражнения. Также на сайте собрана огромная библиотека книг по программированию.

W3Resource — портал с обучающими материалами, упражнениями и квизами по веб-разработке, базам данных и языкам программирования: JavaScript, Java, PHP, Python, Ruby и другим.

MindCipher — сайт для тех, кто любит задачки для ума. На нем собраны занимательные головоломки и логические загадки.

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

Codeforces — портал для регулярных марафонов по программированию. Можно принять участие в соревнованиях или просто потренироваться на заданиях прошедших мероприятий.

Математика для программиста — не просто «царица наук». Это тот стержень, который связывает знания и навыки. Ни один серьезный проект не обходится без применения математических методов, поэтому если хотите стать творцом в программировании — изучайте математику!

-5

Основатель Международной школы программирования для детей CODDY

Оксана Селендеева