Наверняка вы задумывались над вопросом: нужна ли математика программисту? И если нужна, то как «приручить» эту самую математику?
Если у вас есть проблемы с математикой, вы решились на освоение предмета и не знаете, с чего начать, эта статья станет хорошим фундаментом для дальнейшего обучения. В ней собраны полезные советы, названы главные разделы математики для программиста и литература для самостоятельного обучения.
Человек, которому никогда прежде не приходилось сталкиваться с математическими рассуждениями, может испытывать некоторые трудности с решением задач, восприятием фактов. Ему трудно отличить истинные утверждения от ложных, понять, какие следствия вытекают из того или иного утверждения.
«Незнание математики грозит кашей в голове.»
— А. Савватеев, доктор физико-математических наук, эксперт отдела теоретических и прикладных разработок компании Яндекс, научный руководитель Лаборатории социального анализа при Университете Дмитрия Пожарского.
Статья разделена на несколько частей:
- советы;
- основные разделы математики для программиста;
- список полезной литературы.
Советы
- Осознайте и примите тот факт, что хорошим математиком по одному желанию и щелчку пальцев стать невозможно. Все люди, добившиеся успехов в этом предмете, потратили на него часы упорного и напряжённого труда. Если вы встречаете человека, который решает математические задачи гораздо лучше вас, не стоит упрекать себя в отсутствии способностей к предмету или в отсутствии знаний.
- Занимайтесь там, где вас ничто не может отвлекать; отключите телефон, выйдите из соц. сетей и проявите силу воли.
- Занимайтесь ежедневно. Занимайтесь всегда и везде, где только возможно. Уберите из своих привычек бесцельный просмотр соцсетей, телевизора, увлечение видеоиграми и т. п. Вы сразу же ощутите, сколько свободного времени у вас появится. Используйте его с толком.
- Не занимайтесь слишком долго. Делайте перерывы. Не засиживайтесь над одной задачей часами напролёт, это может привести к стрессу. Иногда полезно менять деятельность на день-два, чтобы отдохнуть, но не слишком часто.
- Изучение нового в математике построено на уже приобретенных знаниях, поэтому все время повторяйте пройденное и упражняйтесь в решении задач. Если у вас есть пробелы в математике по программе пятого класса (да, бывает и такое), начните изучение с программы пятого класса. В этом нет ничего постыдного.
- Обязательно заведите две тетради: одну для теории, другую для практики. Пронумеруйте каждый лист. На заднем листе тетради с теорией составьте оглавление (тема — страница). В будущем это вам очень пригодится.
- Если в задаче у вас выходит неверный ответ, решите её ещё раз. Не надо придумывать себе оправдания и откладывать повторное решение. В таких ситуациях важно не просто найти правильный ответ, но и понять, почему в прошлый раз вы решили задачу неверно. Помните, что задача стоит потраченного времени.
- Не стесняйтесь просить помощи у человека, разбирающегося в предмете. Идеальным вариантом будут платные занятия с высококвалифицированным репетитором, если у вас есть такая возможность.
Математика для программиста: основные разделы
- Логика и дискретная математика.Тут же основы теории множеств, теории чисел, теории графов. Базовые вещи начинают изучать ещё в школе.
- Математический анализ. С одной стороны, он демонстрирует всю красоту и мощь математики, а с другой – агонию математического образования. Раздел сложен в плане понимания, так что тут без посторонней помощи не обойтись. Необходим людям, собирающимся в Computer Science.
- Линейная алгебра. Необходимость освоения раздела зависит от будущих целей. Если вы хотите пойти в GameDev, VR, графику и проч. – линейная алгебра обязательна. Развивает абстрактное мышление, что важно в программировании в целом. Представлять себе многомерные структуры и их взаимосвязь: это очень круто.
- Статистика и комбинаторика. Базовый раздел, который начинают изучать ещё в школе. Темы из этого курса в работе программиста встречаются практически ежедневно.
- Теория алгоритмов. В русском языке принято такое название, однако оно не очень удачное. В оригинале это звучит как “Theory of Computation”. Для изучения потребуется основной мат. аппарат, поэтому начинать с этого раздела не рекомендуется. Зато после изучения вы понимаете, почему алгоритмы выполняются, и компьютеры на самом деле работают всегда.
Как отдельный пункт, стоит вынести криптографию. Она не изучается в школе и даже в некоторых технических вузах. К ней стоит приступать только с хорошей мат. подготовкой (разбираться во всех темах, описанных выше). Однако её необходимо знать, т.к. криптография используется повсеместно: от сообщений в мессенджерах до криптовалют.
Школьная программа:
- Сборник задач по алгебре. 8 — 9 класс. М.Л. Галицкий, А.М. Гольдман. Создан для учащихся в классах физико-математического профиля.
- Алгебра и начала математического анализа. 10 класс. В 2 ч. Ч.1. Учебник (профильный уровень) Мордкович А.Г., Семенов П.В. (2009, 424с.)
- Алгебра и начала математического анализа. 10 класс. В 2 ч. Ч.2. Задачник (профильный уровень). Мордкович А.Г. и др. (2009, 343с.
- Алгебра и начала математического анализа. 11 класс. Учебник. (базовый и углублённый уровни). Мордкович А.Г., Семенов П.В. (2014, 311с.)
- Алгебра и начала математического анализа. 11 класс. Задачник. (базовый и углублённый уровни). Мордкович А.Г. и др. (2014, 264с.)
Вузовская математика:
- Задачник Смирнов Ю.М. Сборник задач по аналитической геометрии и линейной алгебре: учеб. пособие для студентов ун-тов, обучающихся по специальностям »Математика» и »Приклад. математика»
- Основы высшей алгебры — Сушкевич А. К. (1937 г.)
- Путь в современную математику — Сойер У. У. (1972 г.)
- Курс математического анализа. — Кудрявцев Л.Д.
Комбинаторика:
- Популярная комбинаторика — Н. Я. Виленкин (1975 г.)
- Статистика. Вероятность. Комбинаторика — Я. С. Бродский
- Комбинаторика для программистов — В. Липский
- Комбинаторика — М. Холл (1970 г.)
- Введение в комбинаторный анализ — Дж. Риордан (1963 г.)
Дискретная математика:
- Введение в дискретную математику — С. В. Яблонский
- Графы и их применение — Л. Ю. Березина
- Дискретная математика — Горбатов В.А., Горбатов А.В., Горбатова М.В. (2006 г.)