Этот вопрос постоянно обсуждается на многочисленных форумах в Интернете, и всегда находятся люди, которые уверяют, что они в школе терпеть не могли математику, но вот уже много лет успешно работают программистами, получают хорошую зарплату и ни разу не сталкивались с классическими задачами, где надо было, например, найти решение неравенства, а при необходимости построения модели, использующей интегралы, воспользоваться онлайн калькулятором . Идея о том, что математика не важна, не редкость среди старшекурсников и даже среди опытных программистов.
Большинство специалистов единодушны во мнении, что математические знания являются необходимым условием, чтобы стать хорошим программистом.
Их аргументы сводятся к следующему:
Прежде всего, «природа» программирования, по определению, носит математический и лингвистический характер. Общие математические знания дают компьютерщику возможность понять концепцию разрабатываемой программы, оценить ее эффективность и перспективы использования.
Те, кто хорошо разбираются в математике, умеют разбивать задачи на части, распознавать шаблоны и применять известные формулы к этим частям, чтобы прийти к единственному правильному ответу. Этот навык необходим при решении многих проблем в разработке программного обеспечения, где требуется немалый объем математики: например, статистическое / финансовое программное обеспечение и игры с участием физики.
Хорошему программисту необходимо быть знакомым с такими математическими дисциплинами, как дискретная математика, алгебраическая логика, теория чисел, теория вероятностей etc., владеть одним или несколькими языками программирования и пониманием устройства компьютера, а также разбираться в таких областях знания, как, например, интеллектуальный анализ данных, компьютерная графика, финансы и так далее.
Вместе с тем, существует иная точка зрения, заключающаяся в том, что логическое мышление, необходимое для программирования, и математика – это отдельные навыки. Поэтому вполне возможно обучение программированию на большинстве популярных языков без математических знаний.
Такая аргументация имеет под собой некоторые основания. Большинство заданий, с которыми сталкиваются разработчики программного обеспечения, не требуют академических знаний математики.
Однако для решения сложных задач этого не достаточно. Не зная математики, можно научиться кодировать и создавать клоны уже существующих алгоритмов, но очень трудно стать высококвалифицированным программистом и сделать хорошую карьеру.