Pull to refresh

Насколько программист должен знать математику?

Reading time2 min
Views10K
Недавно я прошёлся по Сети и встретил самые разные мнения о том, нужна ли вообще программисту математика, и если да, то насколько. Попробую всё обобщить и подвести итог.

Для начала следует заметить, что математика в нашей жизни присутствует практически везде. Физика без математики немыслима — здесь, я думаю, всё ясно, и пояснять нет надобности. Химия тоже. В биологии влияние математики заметно меньше, но и там она присутствует (взять, например, растительные структуры, многие из них — квазифракталы). Музыку можно представлять в математическом виде. Немыслим без математики дизайн — обязательно присутствует геометрия — раздел математики. Да что там — даже историку и то нужна математика (хотя бы для того, чтобы даты считать).

Правда, есть здесь одно «но»: а что вообще представляет собой математика? Вопрос вовсе не праздный, ибо сам вопрос «насколько нужно знать математику» довольно расплывчатый. Математика представляет собой комплекс наук: сам фундамент — арифметика, затем идёт алгебра, элементарная геометрия, мат. анализ, аналитическая геометрия. Высшие её разделы — дискретная математика, булева алгебра, топология, теория чисел (высшая арифметика) и многие другие разделы, а также теория вероятности и статистика. Теперь уже возникает более чёткий вопрос: что из этого надо знать программисту?

Первый пункт не обсуждается — арифметику нужно знать, разумеется, всем людям. Без неё невозможно составить даже самую простейшую программу, да и вообще без неё немыслима никакая наука.

А вот дальше всё немного сложнее — те разделы математики, которые нужны программисту, определяются спецификацией того, что он пишет. Если написать надо музыкальную студию а-ля Cubase — обязательно нужно знать физику звука и разделы математики, связанные с ней. Если же речь идёт о графической студии — профессионально знать геометрию (а если студия трёхмерная, то также топологию и матричную алгебру). А если речь идёт о трёхмерной игре, то надо знать векторную алгебру и вдобавок ньютоновскую механику.

Так как программирование — это в основном алгоритмы, то любой программист должен очень хорошо знать теорию алгоритмов, теорию графов, булеву алгебру и дискретную математику, чтобы писать не просто работающие программы, а хорошо работающие. Или лучше: очень хорошо работающие.

Так нужна она или нет?


А я вообще так скажу: если, скажем, в античные времена программирование уже существовало бы, программист того времени не просто хорошо знал бы математику. Такой «программист» также умел бы боксировать, фехтовать, устраивать скачки на лошадях, мореходствовать, мастерить, говорить на восьми иностранных языках, сочинять фуги и токкаты, знал, что такое гексаметр, прекрасно писал (с ударением на А) картины и много чего ещё. Причём иногда он делал это одновременно, да с такой скоростью, что любой современный «интел кор» тихо покуривает в сторонке.
Tags:
Hubs:
Total votes 60: ↑6 and ↓54-48
Comments30

Articles