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

Текст позаимствован из поста хабропользователя arielf. Очень советую прочесть статью полностью, речь идет о высшем образовании.
--------


У каждой специальности есть свой минимальный набор обязательных знаний. У информатики и программирования такой основой служат математические курсы; так что вопрос: «нужно ли программисту образование?», обычно превращается в «нужна ли программисту математика?» или «нужно ли программисту так много математики?» Учитывая, что программист в классическом смысле – это инженер, вопрос можно сформулировать и иначе: «нужно ли образование инженеру?» Споров на этот счёт обычно не возникает. Проблема разве что вот в чём: не все хотят быть учёными и инженерами. Если предел ваших мечтаний – успешная игра в App Store, а не проектирование искусственного интеллекта, криптографического алгоритма или программ трёхмерной анимации, вы можете смело минуя вуз приступить к её выполнению, но и в этом случае знания не испортят вам карьеру. В вузах не знают, кем вы себя видите через много лет и чем планируете заниматься – не говоря уже о том, что вы сами в семнадцать лет можете ещё этого не знать. Считается, что лучше заранее научить вас всем основам, чем упустить что-то важное. Кроме того, основные курсы, как правило, взаимозависимы и нельзя просто взять и изъять некоторые из них. И их главная цель – не научить вас всему на свете, что в принципе невозможно, а предоставить вам примерную карту современных научных и инженерных знаний, чтобы при столкновении с неизвестным, вы смогли принять верное решение, в каком направлении идти.

Вернёмся к математике. Практически все книги по алгоритмам требуют от читателя некоторой математической культуры. А алгоритмы и структуры данных – как сказал Никлаус Вирт – являются программами, и не умея работать с ними, нельзя называться программистом. Причём это не обязательно умение разрабатывать свои алгоритмы, намного чаще нужно изменять чужие, приспосабливая их к частным случаям, но также и умение доказывать их корректность и применимость в различных условиях, и умение анализировать их поведение в некоторых ситуациях. Математика активно применяется таких областях как криптография, графика, распознавание образов, работа с видео, звуком и изображениями, математическое моделирование реальных процессов. В таком, казалось бы, приземлённом системном программировании без серьёзных математических знаний невозможно написание компиляторов, планировщиков и файловых систем.

Математика является тем каркасом, на который нанизываются все прочие знания. Увы, многие начинают осваивать профессию с конца. Программист, изучивший языки программирования, инструменты разработки, различные технологии и паттерны, но не освоивший математические основы, напоминает художника, научившегося в совершенстве разбираться в красках и кистях, освоившего множество приёмов, но при этом не знающего композиции, перспективы, анатомии и прочих основ. У него может быть много гениальных мыслей, но выразить их он не сможет, и всё, на что ему остаётся рассчитывать – это работа ассистентом или раскрашивание чужих картин. Изредка незнание основ формирует новые стили, как, например, в случае с Ван Гогом (к его чести нужно сказать, что он осознавал свои проблемы и брал уроки живописи у профессионалов), но чаще становится препятствием в творчестве. И если в искусстве это ещё можно оправдать тем, что автор так видит, то в промышленности неправильный алгоритм генерации случайных чисел, приведший к тому, что миллионы долларов честных налогоплательщиков промахнулись мимо цели, не оправдан ничем.

При этом нельзя забывать, что для большинства программистов математика является скорее инструментом, чем наукой, и преподавать её нужно именно так, особенно первые курсы, всякий раз объясняя студентам, зачем им это нужно.
3
Автор поста оценил этот комментарий
"Программирование — это не стук по клавишам, но выстраивание логических цепочек. Это можно делать ложась спать, гуляя по парку, глядя в окно, вобщем, занимаясь чем угодно."
Автор поста оценил этот комментарий
Нужна ли программисту математика?

Да.

/thread
раскрыть ветку
3
Автор поста оценил этот комментарий
Программирование сейчас - эта куча фреймов, паттернов и т.д., которыми надо всего-лишь эффективно жонглировать не более. Если возникнет задача реализовать какой-то матметод, то да, прогер должен уметь разобраться в нем. Но целенаправленно поглощать тонкости математики, имхо, это маразм. Неэффективно ну ни разу, через год хрен кто вспомнит, что учил. Если прогеру не нужно каждый день реализовывать мат алгоритмы, то нахрена плодить велосипеды, если можно взять уже готовую и оттестированную библиотеку со всей математикой ?
раскрыть ветку
Автор поста оценил этот комментарий
ИМХО

Математика не так важна как логика. Я говорю не о решении квадратных уравнений или составлении уравнений с несколькими неизвестными...

Мне за 7 лет работы программистом "вышка" не пригодилась ни разу. Я как фрилансил, клепая сайты и скрипты, изредка решая экстраординарные задачи, так и работал у крупнейшего провайдера интернета в городе, разрабатывая биллинг и систему финансового учета всего холдинга.
раскрыть ветку
Автор поста оценил этот комментарий

Говно статья, столько ответвлений в программировании есть, где математика не нужна и все вопросы закрываются фреймворками и библиотеками. 

раскрыть ветку