Меня несколько раз спрашивали "Обязательно ли знать математику программисту?" или "Нужно ли знать математику для того чтобы научиться программировать?". Каждый раз я отвечал по-разному: "Ммм. Да!" или же "Эээ… Нет." или «Нууу, это зависит от ...». Теперь у меня есть другой вариант ответа. Вот он.
«Можно научиться программированию и можно писать программы без знания математики. Но если дело коснется оценки производительности программы или оценки временной сложности используемого в программе алгоритма, то без базовых математических знаний, увы, уже никак. Под «базовыми математическими знаниями» имеется в виду знание/понимание O-символики, асимптотики и пределов функций.
Ну а если вы захотите смоделировать какой-то сложный процесс, то тут уже надо будет вооружиться знаниями по дифференциальным уравнениям, разностным схемам, математической статистике и т.д.»
Программирование – это ремесло, которое только некоторые доводят до уровня искусства выполняя свою работу гениально. Под «гениально» я понимаю применение развитого творческого мышления.
Логическое мышление, которое необходимо в процессе создания программ, можно развивать без математики, изучая непосредственно саму науку логику или посредством различных игр, головоломок и задач.
Ряд задач программирования можно решать используя исключительно логическое и творческое мышления.
Но существует в программировании и ряд других задач, решение которых без использования математического аппарата на сегодняшнем этапе развития человечества не представляется возможным.
Приведу несколько примеров.
Пример 1. Создание программы, моделирующей непрерывную работу человеческих органов. Слово «непрерывное» здесь ключевое. Вряд ли эту задачу можно решить исключительно логикой и гениальностью без знаний из медицины, биологии, дифференциальных уравнений и разностных схем.
Пример 2. Создание программы, моделирующей изменение цвета куска металла при непрерывном его нагревании. Вряд ли эту задачу можно решить без знаний из физики, квантовой механики, ну и математики.
Пример 3. Сравнение алгоритмов не на уровне «поверь мне» или «видишь, endtime1-starttime1 меньше endtime2-starttime2?», а с выводом формул, оценивающих количество операций при изменении объема входных данных. Эту задачу без знания элементов математического анализа не решить.
Еще хотелось бы добавить, что современное веб-программирование настолько много и интенсивно использует математику, что появляются целые новые разделы, например, веб-графы (http://en.wikipedia.org/wiki/Webgraph).
В компаниях Google и Яндекс существуют целые сцепиальные отделы для теоретико-экспериментальных исследований.
http://research.google.com/pubs/pub38331.html
Mathematics at Google
Abstract: There is a wide variety of Mathematics used at Google. For example Linear Algebra in the PageRank algorithm, used to rank web pages in search results. Or Game Theory, used in ad auctions, or Graph Theory in Google Maps. At Google there are literally dozens of products which use interesting Mathematics. These are not just research prototypes, but real Google products; in which Mathematics play a crucial role.
http://ru.wikipedia.org/wiki/%D0%E0%E9%E3%EE%F0%EE%E4%F1%EA%E8%E9,_%C0%ED%E4%F0%E5%E9_%CC%E8%F5%E0%E9%EB%EE%E2%E8%F7
Андрéй Михáйлович Райгорóдский (р. 18 июня 1976, Москва, СССР) — российский математик, автор более 100 научных статей, лауреат Премии Президента РФ 2011 года для молодых ученых.
...
С 2007 года является сотрудником ОOО «Яндекс», создатель лаборатории комбинаторных и вероятностных методов, в настоящее время — руководитель отдела теоретических и прикладных исследований.