Зачем программисту нужно знать высшую математику

Зачем мне знать математику, она же в жизни не пригодится? Этот вопрос задает большинство школьников, и даже некоторые студенты. Скажем сразу, программисту необходима математика, и сейчас мы объясним почему.

14 декабря 2020

Математика школьного уровня

Зачем нужна высшая математика

Математика школьного уровня

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

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

Зачем нужна высшая математика

Все программисты изучают информатику, благодаря которой узнают о том, как устроены вычислительные устройства. Но мало кто задумывается, что математика — это основа информатики. Можно даже сказать, что информатика является подмножеством математики, сейчас мы разберемся почему.

  1. Дискретная математика — основа информатики
    Алгебра, комбинаторика, теории вероятности, чисел, множеств и графов — всё это понятия дискретной математики, которые лежат в основе компьютерных наук. Например, алгебра:
    • Булева алгебра. Используется в логических элементах, комбинационных схемах ("И", "ИЛИ", "НЕ").
    • Реляционная алгебра. Используется в базах данных. Базы данных являются важной частью любого проекта.

    Теория чисел также нашла себе место в информатике, она используется в криптографии и криптоанализе. То есть в шифровании и дешифровке информации (паролей, ключей доступа, сертификатов безопасности и т. д.).
  2. Математика учит использовать алгоритмы
    Алгоритмы — важнейшая часть информатики, они представляют собой набор инструкций, согласно которым реализуется функционал программы. Где вы впервые использовали алгоритм? На уроке математики, когда складывали числа "2 + 5 = 7" или решали уравнение. Например, при решении уравнений используется примерно такой алгоритм:
    1. Упростить (преобразовать) уравнение.
    2. Перенести x в одну сторону, а числа в другую.
    3. Разделить обе стороны на какое-то число, если необходимо.

    Математика научила вас решать задачи, следуя какой-то инструкции, а также самому составлять эти инструкции. Эти знания необходимы для любого программиста — от веб-разработчика до аналитика данных.
  3. Математика дает программисту аналитические навыки
    Благодаря способности анализировать вы можете найти, локализовать и решить любую проблему. В программировании проблемы на каждом шагу: баги, неправильная архитектура программы, ошибки ввода и многое другое. Аналитические навыки человек впервые приобретает именно на уроках математики.

    Вы анализировали задачи и уравнения, определяли оптимальное решение, находили проблемы и проверяли правильность ответа. Допустим, ответ получился странный, тогда нужно проанализировать решение и найти ошибку. В программировании точно также. Например, при сложении чисел 2 и 5 получается 8, значит вы неправильно написали код или продумали логику программы.

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

Математика особенно нужна в следующих сферах:

  • разработка игр;
  • машинное обучение;
  • анализ данных.

Зачем математика, например, разработчику игр? Предположим, что он занимается созданием игрового движка. Игровой движок определяет взаимодействие персонажа с миром, правила и законы этого мира, то есть гравитацию, столкновения, различные физические силы. Реализация всего этого требует от программиста огромного количества расчетов. Например, в игре можно стрелять из лука, программисту надо создать функцию для расчет траектории полета стрелы, в которой рассчитать её зависимость от силы натяжения и, возможно, ветра, отследить столкновения стрелы с другим объектами. Столько различных аспектов и это только полет стрелы, всё это требует углубленных знаний высшей математики.