В школе преподаются основы математики, они нужны не только программисту, но и каждому человеку. Математика постоянно встречается в обычной жизни, ведь все пользуются деньгами, а их нужно считать.
В 10-11 классах начинают изучать производные, интегралы и другие вещи, которые многие считают бесполезными. Да, их вряд ли применишь в повседневной жизни, но они необходимы для многих профессий, программист — одна из них. Кроме того, раз уж мы выдвинули тезис, что программисту нужна высшая математика, то хорошее знание школьного курса априори необходимо.
Все программисты изучают информатику, благодаря которой узнают о том, как устроены вычислительные устройства. Но мало кто задумывается, что математика — это основа информатики. Можно даже сказать, что информатика является подмножеством математики, сейчас мы разберемся почему.
- Дискретная математика — основа информатики
Алгебра, комбинаторика, теории вероятности, чисел, множеств и графов — всё это понятия дискретной математики, которые лежат в основе компьютерных наук. Например, алгебра:
- Булева алгебра. Используется в логических элементах, комбинационных схемах ("И", "ИЛИ", "НЕ").
- Реляционная алгебра. Используется в базах данных. Базы данных являются важной частью любого проекта.
Теория чисел также нашла себе место в информатике, она используется в криптографии и криптоанализе. То есть в шифровании и дешифровке информации (паролей, ключей доступа, сертификатов безопасности и т. д.).
- Математика учит использовать алгоритмы
Алгоритмы — важнейшая часть информатики, они представляют собой набор инструкций, согласно которым реализуется функционал программы. Где вы впервые использовали алгоритм? На уроке математики, когда складывали числа "2 + 5 = 7" или решали уравнение. Например, при решении уравнений используется примерно такой алгоритм:
- Упростить (преобразовать) уравнение.
- Перенести x в одну сторону, а числа в другую.
- Разделить обе стороны на какое-то число, если необходимо.
Математика научила вас решать задачи, следуя какой-то инструкции, а также самому составлять эти инструкции. Эти знания необходимы для любого программиста — от веб-разработчика до аналитика данных.
- Математика дает программисту аналитические навыки
Благодаря способности анализировать вы можете найти, локализовать и решить любую проблему. В программировании проблемы на каждом шагу: баги, неправильная архитектура программы, ошибки ввода и многое другое. Аналитические навыки человек впервые приобретает именно на уроках математики.
Вы анализировали задачи и уравнения, определяли оптимальное решение, находили проблемы и проверяли правильность ответа. Допустим, ответ получился странный, тогда нужно проанализировать решение и найти ошибку. В программировании точно также. Например, при сложении чисел 2 и 5 получается 8, значит вы неправильно написали код или продумали логику программы.
Приобретенные аналитические навыки используются для поиска багов и отладки программы. Хотя сейчас есть много продвинутых инструментов, которые помогают в этом, они не способны заменить реального человека.
- Математические концепции используются во многих областях информатики
Информатика — общий термин, в который входит много различных понятий, таких как операционные системы, базы данных, сетевые технологии, искусственный интеллект, аналитика данных и многое другое. Конечно, некоторые дисциплины требуют лишь средний уровень знаний математики, но даже эти знания выходят за пределы школьной программы.
Математика особенно нужна в следующих сферах:
- разработка игр;
- машинное обучение;
- анализ данных.
Зачем математика, например, разработчику игр? Предположим, что он занимается созданием игрового движка. Игровой движок определяет взаимодействие персонажа с миром, правила и законы этого мира, то есть гравитацию, столкновения, различные физические силы. Реализация всего этого требует от программиста огромного количества расчетов. Например, в игре можно стрелять из лука, программисту надо создать функцию для расчет траектории полета стрелы, в которой рассчитать её зависимость от силы натяжения и, возможно, ветра, отследить столкновения стрелы с другим объектами. Столько различных аспектов и это только полет стрелы, всё это требует углубленных знаний высшей математики.