Математика для программиста: советы, разделы, литература

Наверняка вы задумывались над вопросом: нужна ли математика программисту? И если нужна, то как «приручить» эту самую математику?

Математика для программиста

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

Человек, которому никогда прежде не приходилось сталкиваться с математическими рассуждениями, может испытывать некоторые трудности с решением задач, восприятием фактов. Ему трудно отличить истинные утверждения от ложных, понять, какие следствия вытекают из того или иного утверждения.

«Незнание математики грозит кашей в голове.»

— А. Савватеев, доктор физико-математических наук, эксперт отдела теоретических и прикладных разработок компании Яндекс, научный руководитель Лаборатории социального анализа при Университете Дмитрия Пожарского.

Статья разделена на несколько частей:

  • советы;
  • основные разделы математики для программиста;
  • список полезной литературы.

Советы

  1. Осознайте и примите тот факт, что хорошим математиком по одному желанию и щелчку пальцев стать невозможно. Все люди, добившиеся успехов в этом предмете, потратили на него часы упорного и напряжённого труда. Если вы встречаете человека, который решает математические задачи гораздо лучше вас, не стоит упрекать себя в отсутствии способностей к предмету или в отсутствии знаний.
  2. Занимайтесь там, где вас ничто не может отвлекать; отключите телефон, выйдите из соц. сетей и проявите силу воли.
  3. Занимайтесь ежедневно. Занимайтесь всегда и везде, где только возможно. Уберите из своих привычек бесцельный просмотр соцсетей, телевизора, увлечение видеоиграми и т. п. Вы сразу же ощутите, сколько свободного времени у вас появится. Используйте его с толком.
  4. Не занимайтесь слишком долго. Делайте перерывы. Не засиживайтесь над одной задачей часами напролёт, это может привести к стрессу. Иногда полезно менять деятельность на день-два, чтобы отдохнуть, но не слишком часто.
  5. Изучение нового в математике построено на уже приобретенных знаниях, поэтому все время повторяйте пройденное и упражняйтесь в решении задач. Если у вас есть пробелы в математике по программе пятого класса (да, бывает и такое), начните изучение с программы пятого класса. В этом нет ничего постыдного.
  6. Обязательно заведите две тетради: одну для теории, другую для практики. Пронумеруйте каждый лист. На заднем листе тетради с теорией составьте оглавление (тема — страница). В будущем это вам очень пригодится.
  7. Если в задаче у вас выходит неверный ответ, решите её ещё раз. Не надо придумывать себе оправдания и откладывать повторное решение. В таких ситуациях важно не просто найти правильный ответ, но и понять, почему в прошлый раз вы решили задачу неверно. Помните, что задача стоит потраченного времени.
  8. Не стесняйтесь просить помощи у человека, разбирающегося в предмете. Идеальным вариантом будут платные занятия с высококвалифицированным репетитором, если у вас есть такая возможность.

Математика для программиста: основные разделы

  • Логика и дискретная математика.Тут же основы теории множеств, теории чисел, теории графов. Базовые вещи начинают изучать ещё в школе.
  • Математический анализ. С одной стороны, он демонстрирует всю красоту и мощь математики, а с другой – агонию математического образования. Раздел сложен в плане понимания, так что тут без посторонней помощи не обойтись. Необходим людям, собирающимся в 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 г.)

Видеокурс «Основы линейной алгебры» 

Видеокурс по алгоритмам