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

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


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

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

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

При этом нельзя забывать, что для большинства программистов математика является скорее инструментом, чем наукой, и преподавать её нужно именно так, особенно первые курсы, всякий раз объясняя студентам, зачем им это нужно.
Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий
ИМХО

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

Мне за 7 лет работы программистом "вышка" не пригодилась ни разу. Я как фрилансил, клепая сайты и скрипты, изредка решая экстраординарные задачи, так и работал у крупнейшего провайдера интернета в городе, разрабатывая биллинг и систему финансового учета всего холдинга.
раскрыть ветку (13)
Автор поста оценил этот комментарий
На наукоемкость проекта скорее влияет не его размер, а задача, на решение которой он направлен.
Файловый менеджер, даже уровня TC вряд ли потребует глубокой математики, а простейший графический редактор с "эффектами" - скорее всего.
раскрыть ветку (12)
Автор поста оценил этот комментарий
если к графическому редактору прикрутить готовые библиотеки и решения, то вопрос в 5 минутах кодинга. Не надо стрелять из гранатомета по мухам, вручную все реализовывая.
раскрыть ветку (11)
Автор поста оценил этот комментарий
Конечно не надо. А если вы не найдете подходящего готового решения?
раскрыть ветку (10)
2
Автор поста оценил этот комментарий
В 99% случаев берется неподходящее и напильник.
раскрыть ветку (8)
Автор поста оценил этот комментарий
Нам нужна инновация, новый хитрый алгоритм. Из чего вы хотите его выпиливать? Да и (по сценарию) вы не умеете выпиливать математические алгоритмы, вы умеете заниматься их композицией)
раскрыть ветку (7)
1
Автор поста оценил этот комментарий
хм, тогда берется математик и озадачивается. Естественно все это оговаривается с заказчиком. Если заказчик платит мало - он идет лесом, если платит нормально, то в чем проблема ? К чему трудности на ровном месте ? Не в деревне живем.
раскрыть ветку (6)
Автор поста оценил этот комментарий
Если подобные проблемы возникают раз от раза, проще и дешевле было бы иметь программиста с высшим образованием.
раскрыть ветку (5)
Автор поста оценил этот комментарий
математика без практики очень быстро забывается. Большинство прогеров достаточно редко сталкиваются с математикой, в основном идет умение работать с паттернами и выстраивать грамотную логику программы. Имхо, лучше разделить работу, быстрее и качественнее получится, чем вешать все на одного человека. Скупой платит дважды как говорится.
раскрыть ветку (4)
Автор поста оценил этот комментарий
Математика - как велосипед, если знать ее хорошо, то заново въехать можно за пару вечеров в любую проблему. А если ты ее не знал никогда, то при необходимости осилишь только ценой времени и большой крови.

Большинство современных программистов - это кодеры, занимающиеся компоновкой готовых блоков. Только если их так назвать, они искренне обижаются =)
Автор поста оценил этот комментарий
Вы даже сейчас "компонуете" решение математической задачи из труда математика и кодера, вместо одного инженера по разработке ПО =)
В ответ на ваше "скромное мнение": в реальных крупных продуктовых конторах это один человек. Для некоторых задач привлекаются инженеры по областям (физики, химики), но обычные математические задачи решаются инженерами-программистами.
раскрыть ветку (2)
Автор поста оценил этот комментарий
да еще бы им не обижаться, прогу написали, интерфейс написали, архитектуру проги продумали, протестили, ночи не спали - баги ловили, а их тут обзывают недопрограммистами из-за того, что не смогли разработать пару модулей с математикой. Так и хочется чего-нить тяжелое кинуть. Вобщем все это - холивар обыкновенный, все при своем мнении.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
asm в помощь тогда, мы же труъ :D
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку