Рассказываем, почему одним разработчикам математика нужна обязательно, а другим хватит и школьного курса за девятый класс.
Одним нужна, другим — нет
Некоторые не идут в IT из-за стереотипа, что всем программистам нужна математика. Он пугает, особенно если у человека были проблемы с математикой в школе, а университет напрочь убил к ней интерес высшей алгеброй и матанализом.
Но это не значит, что попасть в программирование без математики не судьба. В IT-индустрии много сфер, где максимум, который нужно помнить разработчикам, — это порядок действий в математике, возведение числа в степень или извлечение квадратного корня.
Веб-разработчики создают интерфейсы и настраивают серверы. Системные программисты пишут операционные системы и драйверы. В геймдеве занимаются графикой и геймплеем, а в безопасности тестируют сайты и приложения на защиту от кибератак.
Чем дальше вы находитесь от железа компьютера, тем меньше математики нужно знать. Например, веб-разработчику, который пишет сайт для себя, не нужно переживать о большой нагрузке и придумывать алгоритмы распараллеливания. А в геймдеве, чтобы отрисовать каждый пиксель графики, нужно хорошо знать тригонометрию и полярные координаты.
Базовые знания важны для всех
Чтобы писать на любом языке программирования, нужно знать, как складывать, вычитать, умножать и делить числа — без этого никуда. Ещё важно понимать дроби и десятичные числа. Для этого в любом возрасте достаточно повторить курс школьной алгебры.
Если вы решите написать программу, которая будет сортировать список из миллиона чисел не за год, а за 10 секунд, вы захотите использовать быстрые алгоритмы. Но чтобы понять, какой алгоритм лучше, придётся углубиться в математику.
Для начала нужно знать основы математической логики, чтобы понимать законы булевой алгебры. Они нужны для понимания символов импликации, равносильности и других, которые используются в алгоритмах. На это уйдёт от недели до месяца, в зависимости от вашего ритма учебы.
Затем вам часто придётся работать с таблицами и множествами чисел. Поэтому узнайте про матрицы и векторы, чтобы уметь сложить их и перемножить.
Дальше — только сложные и специфические темы для каждого раздела программирования. Освоить базовые знания можно за пару месяцев, если изучать материалы очень медленно и вдумчиво. Но это окупится в будущем. Ведь вы потратите месяц на изучение математики по вечерам, чтобы закрывать сложные задачи и больше зарабатывать.
Сложные темы — для сложных приложений
Если вы решили пойти в «сложное» программирование, то без серьезной математической базы не обойтись. Например, разработчики ИИ должны знать дифференцирование, интегрирование, нахождение детерминанта матрицы и теорию вероятности, чтобы просто понимать, как работают нейросети.
Вот как выглядят требования к кандидату на позицию Machine Learning Engineer:
Из всех непонятных слов можно сделать вывод, что без математики здесь не обойтись.
Список разделов для разных специальностей отличается, но существуют основные, которые важны для всех программистов. Если вы хотите заниматься алгоритмами и данными, открытый социальный университет (OSSU) рекомендует учить матанализ и дискретную математику:
Без математики вы напишите приложение, и оно просто будет работать, а с математикой — будет работать быстро. Этим занимаются большие компании, которым важна каждая микросекунда, или разработчики игровых движков и космических аппаратов.
Математика без практики — бесполезна
«Сухая» теория улетучивается очень быстро. Поэтому важно закреплять её практикой.
Если вы хотите написать нейронную сеть, которая будет определять по фотографиям котиков, то вам нужно узнать, что такое матрица. Прочитав об этом, вы откроете для себя связь — матрица⟷котики. И впредь при похожей задаче решение найдётся само по себе.
Без математики не было бы никакого программирования — но программистам не обязательно её учить. От разработчиков требуют хард-скиллов в технологиях и софт-скиллов в целом. Даже не изучая линейную или булеву алгебру можно стать мидлом в IT-индустрии, но с математикой им можно стать гораздо быстрее.