Зачем программисту высшая математика?
Толковые ответы с просторов интернета.
- Про теорию вероятностей: во время учебы в универе большая часть моей группы не особо интересовалась этим предметом. В том числе и два моих хороших друга. А через пару лет эти же два друга начали делать свой проект и хотели посчтитать что-то, где этот тервер нужен был (что-то типа оптимального размера пакета для торрент-трекера), и им пришлось прибегнуть к моей помощи. Вообще тервер и матстат встречается в самых неожиданных местах, иногда очень внезапно. Ну и не стоит забывать, что самое популярное слово за последние пару лет – это Big Data (а стать специалистом в этой области не имея хорошей базы по терверу и матстату будет сложно).
Николай - Достаточно сказать лишь то, что все выдающиеся ученые в области IT, и люди которые реально двигают IT прогресс в первую очередь математики. Даже сейчас все перспективные направления в IT переплетены с математикой. Могу перечислить некоторые примеры. ИИ, распознавание образов, Искусственные нейронные сети, генетические алгоритмы, экспертные системы, распараллеливание процессов, распределение нагрузки, сетевая надежность и тд. и тп.
Конечно, можно сказать, что математика нам не нужна, но это лишь защитная реакция на осознание того, что человек в математике не понимает, и не хочет понимать. Я считаю, что нет по природе гуманитариев и математиков, есть только “терпение и труд все перетрут”.
freeman27015 - Математику приходится знать. И обязательно надо знать хотя бы базовую часть в рамках первых двух курсов института. Мне как-то выпало в жизни узнать очень много статистики и, поскольку я системно занимался автоматическим обучением, пришлось много учить специализированной математики. В целом если ты не знаешь математики в рамках школьно-институтского курса, то жизнь программиста тебе не очень понравится.
М. Парахин - Смотря какие у программиста цели. Для решения некоторых задач нужно знать математику лучше, чем некоторые ученые, а для других она совершенно не нужна. Если ты занимаешься инфраструктурными, инженерными задачами, то тебе нужны совсем другие умения. Есть задачи, в которых гуманитарное образование тебе даже больше поможет, чем фундаментальное математическое. Особенно там, где ты больше всего работаешь с пользователями. Если ты разрабатываешь интерфейс, который должен быть удобен среднестатистическому пользователю, глубокое математическое образование будет тебе только мешать. Интерфейс будет очень стройнымм, но при этом совершенно неудобным. Ты должен уметь срезать углы, делать его не таким стройным и более гладким, чтобы он был более интуитивный.
Нужна математика в системном программировании на нижнем уровне, в каких-то хайтечных задачах. В том же машинное обучении, конечно, сплошная математика и статистика. Наверняка в криптографии тоже нужна очень глубокая математика. Таких областей хватает.
А. Мищенко - Я когда тоже учился, меня постоянно мучил этот вопрос, особенно когда в сессию получалось 80% математических предметов, и остальные 20% зачёты. Я тоже, как и ты думал, а зачем оно надо. Но со временем начинаешь понимать, что на самом деле математика в жизни программиста – это не всегда способ зарабатывать деньги, в основном, это принцип жизни. Любая профессия оказывает на человека какое-то влияние, вот математика, например, позволяет развить аналитический ум и выработать терпение и сдержанность, что очень и очень требуется в нашей профессии.
serge sheff - Я лет 20 назад начал делать свои собственные сайты. Сейчас делаю упор на разработку мобильных приложений. И вы знаете, мне сейчас не хватает математики не только для мобильных приложений но и для реализации некоторых возможностей CRM системы в моей компании. Быть веб программистом – не значит быть действительно программистом. Шаблонизация дает свои плоды. Но когда вы дорастете до фильтров Калмана, до собственных алгоритмов расчета поведения объектов в пространстве, или хотя бы реализовать через CSS и Javascript изменение общих параметров графических изображений (например сделать так, чтобы все img, которые имеют зеленый цвет превратить, перевести этот цвет в красный)- то поймете, что пора математику подтянуть. Моих знаний, полученных в университете хватило на 10 лет. Сейчас хочется учиться дальше.
Falseclock - Знания основ математики необходимы любому техническому специалисту, а уж программисту тем более. Вы можете не пользоваться ими годами, но вполне вероятно, что придет время что вам придется вспомнить как умножить один вектор на другой. Вспомнить забытое легче, чем выучить заново. Так что читайте матчасть. Хотя бы по выходным.
lovesuper - Сам я математик по образованию. Работаю программистом. Скажу прямо: одно другому очень помогает и очень взаимосвязано. Булева алгебра, математическая логика, теория чисел, теория игр, методы оптимизации, компьютерная графика, теория вероятностей, методы вычисления они обязательно применяются в программировании. А их без классического матаппарата: линейной алгебры, матанализа и аналитической геометрии понять и выучить невозможно. Вот вам и ответ на все вопросы зачем программисту математика.
Кстати, попалась мне задача по обработки теста. И там надо было в зависимости от комбинаций ответов давать результат. Если бы делать в лоб получилась бы огромная цепь if…else…, которую не только написать, но и отладить надо умом подвинуться. А с помощью матаппарата кто знаком с дизъюнкцией и конъюнкцией все это поместилось в одну небольшую функцию в качестве аргументов в которую передавались 0 и 1 в количестве вопросов, и в зависимости от полученного результата сразу получался ответ. Получилось просто и со вкусом.
69bi - Вообще говоря, написать какую-то программу с 3D или хотя бы 2D графикой без математики невозможно, вектора, матричные преобразования координат при поворотах камеры и все прочее о чем писали выше. Даже если используешь какой-то движок где все это скрыто от глаз, нужно представлять как это работает. Про игры я совсем молчу.
Ведь когда учишься на программиста, никто не знает что именно ты будешь программировать БД, сайты, или что-то еще.
Да, конечно, после вуза что-то забудется, но когда тебе на работе дадут какую-то задачу нужно хотя бы представлять что искать в гугле, и чтобы глаза потом на лоб не лезли от формул. Математика нужна, без нее никуда.
krabche - Когда я участвовал в разработке рекомендательной и репутационных систем, математика была очень нужна. Приходилось придумывать и разрабатывать алгоритмы, использующие интегральное и дифференциальное счисление, находить экстремумы, строить регрессии, вводить метрики для определения близости в многомерном пространстве.
Д.Исайкин - Если есть амбиции и желание решать и программировать реальные задачи самому, а главное создавать принципиально новые технологии, то фундаментальные знания математики и хорошее абстрактное мышление будут очень важны. Мировые аналитики прогнозируют, что в будущем человек за свою жизнь будет менять несколько профессий, значит не получится всю жизнь пробыть кодером. А учить и осваивать мат. аппарат надо до 25 лет.
С. Терлецкий - Существуют определенные задачи, требующие от разработчиков высочайших знаний в области мат-анализа, дифференциальных уравнений, численных методов и т. д., но спектр этих задач довольно узок, а распространённость крайне низкая. Правда, такие специалисты очень высоко ценятся и могут рассчитывать на прекрасные условия труда. Для 80% разработчиков знания высшей математики никогда не пригодятся, еще 10%, возможно, придется вспомнить базовые вещи из теории вероятностей и некоторых других разделов математики — эти знания будут востребованы для решения задач по обработке данных. В то же время, учитывая взрывной рост направления Big Data, я вижу хороший потенциал для роста требований именно к знаниям в области математики.
Р.Юферев - Есть программисты, имеющие лишь самые базовые знания математики. Но знание (не на уровне зубрёжки, а с глубоким пониманием) дискретной математики и основ статистики — очень существенный плюс к возможностям профессионального роста. Очень сильно пересекаются с математикой и «продвинутые» методы разработки алгоритмов. Ну а в некоторых областях без глубоких знаний математики вообще никак. В Data Mining и Machine Learning необходимы статистика, теория вероятностей, линейная алгебра; в криптографии — общая и линейная алгебра; в 3D-моделировании — геометрия и механика; в биоинформатике — дискретная математика, статистика.
То есть без знаний математики стать программистом можно, но при этом есть и большой риск, что вы закроете для себя возможность заниматься в будущем действительно интересными проектами.
М.Адигеев