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

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


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

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

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

При этом нельзя забывать, что для большинства программистов математика является скорее инструментом, чем наукой, и преподавать её нужно именно так, особенно первые курсы, всякий раз объясняя студентам, зачем им это нужно.
3
Автор поста оценил этот комментарий
Программирование сейчас - эта куча фреймов, паттернов и т.д., которыми надо всего-лишь эффективно жонглировать не более. Если возникнет задача реализовать какой-то матметод, то да, прогер должен уметь разобраться в нем. Но целенаправленно поглощать тонкости математики, имхо, это маразм. Неэффективно ну ни разу, через год хрен кто вспомнит, что учил. Если прогеру не нужно каждый день реализовывать мат алгоритмы, то нахрена плодить велосипеды, если можно взять уже готовую и оттестированную библиотеку со всей математикой ?
раскрыть ветку (1)
3
Автор поста оценил этот комментарий
"библиотекой со всей математикой" тоже нужно уметь пользоваться. Крутой зеркальный фотоаппарат не сделает из вас фотографа =)

В статье о том и говорится, что для гуй- или веб-программисту хватит и средней школы, а тому, кто пишет ПО для фильтров сигнала с радара без рядов Фурье и прочей светотени из курса вышмата не прожить.
"Программирование сейчас" - это возросшая популярность веба, но остальные задачи никуда не делись.

Почитайте статью, она очень интересная!
показать ответы
Автор поста оценил этот комментарий

Я не буду выкать. А ты вычеркиваешь, то что тебе не подходит? Написано же "но и", а не "только". И главное определение в конце:

Логика как наука изучает способы достижения истины в процессе познания опосредованным путём, не из чувственного опыта, а из знаний, полученных ранее, поэтому её также можно определить как науку о способах получения выводного знания.


Ты узколобый или просто хочешь быть правым? Я ведь не говорю что во всем программировании можно без математики и не говорю что она там не важна, но говорю что без нее много есть работы во фронте и бэкенде и качество кода не страдает, если храмает математика +, если она очень нужна, то всегда можно подтянуть нужную тему.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Судя по личным выпадам, адекватные аргументы уже кончились. Разговора дальше не будет.

Автор поста оценил этот комментарий

Ло́гика (др.-греч. λογική — «наука о правильном мышлении», «искусство рассуждения» от λόγος — «речь», «рассуждение», «мысль») — раздел философии, нормативная наука о формах, методах и законах интеллектуальной познавательной деятельности, формализуемых с помощью логического языка. Поскольку это знание получено разумом, логика также определяется как наука о формах и законах правильного мышления. Поскольку мышление оформляется в языке в виде рассуждения, частными случаями которого являются доказательство и опровержение, логика иногда определяется как наука о способах рассуждения или наука о способах доказательств и опровержений. Логика как наука изучает способы достижения истины в процессе познания опосредованным путём, не из чувственного опыта, а из знаний, полученных ранее, поэтому её также можно определить как науку о способах получения выводного знания.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Чуть ниже на той же страничке википедии:

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

показать ответы
Автор поста оценил этот комментарий

Применить можно, но думаю много где можно и обойтись без этого. Ты как-то болезненно относишься к программировагию без математики. Программирование прежде всего это логика и она может работать без не или с минимальным использованием. Математика это интрумент и не это даже не главный инструмент, главный опять же логика и ненадо лкчить что без математики не может быть логики

раскрыть ветку (1)
Автор поста оценил этот комментарий

Можно обойтись и без нормальной архитектуры, и едва зная язык, но стоит ли говорить о качестве таких продуктов?...


Математика это интрумент и не это даже не главный инструмент, главный опять же логика

Логика - это раздел математики, Карл!)

показать ответы
Автор поста оценил этот комментарий

В бэкенде на питоне много работы есть без математики, я не спорю что матан много где нужен, но и не мало работ где он нафиг не сдался

раскрыть ветку (1)
Автор поста оценил этот комментарий

Математика матаном не ограничивается. Как насчет дискретной математики? Законы де Моргана, например, будут применимы где угодно.

показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

В промышленном программировании эти ответвления сходятся к одному лишь к фронтенду. Он все стерпит, пока простенький, а компьютер юзера достаточно мощный.

показать ответы
Автор поста оценил этот комментарий
Говорю какие языки,фреймвокри,технологиии знаешь?
раскрыть ветку (1)
Автор поста оценил этот комментарий
По работе я с самыми разными задачами сталкивался от веба до обработки сигналов, да и диплом имеется.
Чувак, ты познакомиться хочешь или совета спросить?)
показать ответы
Автор поста оценил этот комментарий
3735943697 какие твои скилы?
раскрыть ветку (1)
Автор поста оценил этот комментарий
8978964 неодимовые магниты зажимаются стулом?
показать ответы
Автор поста оценил этот комментарий
да еще бы им не обижаться, прогу написали, интерфейс написали, архитектуру проги продумали, протестили, ночи не спали - баги ловили, а их тут обзывают недопрограммистами из-за того, что не смогли разработать пару модулей с математикой. Так и хочется чего-нить тяжелое кинуть. Вобщем все это - холивар обыкновенный, все при своем мнении.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Статья была как раз о том, что программист программисту рознь, прикладные области и задачи разные. Нельзя однозначно говорить, что математика нужна или не нужна.

От себя же я добавил, что лучше знать и не использовать, чем как-нибудь уткнуться в проблему, на решение которой не способен.
Автор поста оценил этот комментарий
я просто работал в подобном НИИ. Неплохо знал математику и думал, что умею все. Платили смешные деньги в этом НИИ и начальство дико гнуло пальцы. Вообщем уволился я оттуда и когда пришел на собеседования по фирмам, то понял, что со своей математикой, но без навыков программирования, знаний паттернов, тонкостей работы БД и прочего я нахрен никому не нужен. Пришлось резко наверстывать упущенное, да и вообще переквалифицироваться. За время работы я уже подзабыл математику, да и так она мне и не понадобилась. С тех пор я плохо перевариваю разговоры о необходимости математики прогерам и что любой математик априори крутой прогер.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Не работал, не скажу, но ходил по собеседованиям по некоторым. Не знаю, госпрограммы там распиливались или что еще, но оклады предлагали там весьма заманчивые, на уровне рынка, социалка вся, бонусы.

Затем работал (и продолжаю) в паре крупных продуктовых фирм. Везде, как я и описывал, проекты встречаются разные, технологии сплетаются. Из-за специфики приходится вникать в прикладную область, а там и физические, и математические выкладки. Чего не хватает, так знаний по схемотехнике (ну не преподавали ее у нас), приходится наверстывать. Потому свято уверен, что лишних знаний не бывает.
показать ответы
Автор поста оценил этот комментарий
предлагаю закончить этот спор ведущий в никуда. Все зависит от предметной области и исходя от поставленной задачи надо принимать рациональное решение как плясать дальше. Я занимаюсь разработкой ИС, мне математика не нужна, но от этого я не становлюсь низшим кодером или быдлокодером.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Дык и небожителем не становитесь от умения совмещать готовые блоки. Насмешка по поводу НИИ мне не понятна.
показать ответы
2
Автор поста оценил этот комментарий
вы уж определитесь, либо вы математик, либо программист. 80% заказов - это бизнес, ну вот ни разу я там не видел сложной математики. Судя по должности вы работаете в каком нибудь НИИ(где денег на прогеров хронически не хватает), где о "рыночном" программировании по телевизору слышали, у вас скорее всего одни мат расчеты с простеньким интерфейсом. Сможете спроектировать ИС, обеспечивающую бесперебойную работу всего отдела с помощью математики ?
раскрыть ветку (1)
Автор поста оценил этот комментарий
Видимо, вы никогда не работали в наукоемких областях) На практике, любая компания, которая выпускает что-либо материальное и интеллектуальное, имеет R&D отделы и отделы инноваций. Там работают то ли люди, то ли боги программисты, которые умеют в математику. Как вы правильно заметили, это также всякие НИИ и "аутсорс" оборонки.

А на счет засилья Ынтерпрайза вы правы, там правят базы данных, пересылка данных туда-сюда в разных форматах и генерация отчетиков. Однако, откуда такая бравада? Мартышкин же труд.
показать ответы
DELETED
Автор поста оценил этот комментарий
Забавно, что моя должность называется "математик-программист".
раскрыть ветку (1)
Автор поста оценил этот комментарий
Ванга уже не та))
1
Автор поста оценил этот комментарий
хм, тогда берется математик и озадачивается. Естественно все это оговаривается с заказчиком. Если заказчик платит мало - он идет лесом, если платит нормально, то в чем проблема ? К чему трудности на ровном месте ? Не в деревне живем.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Если подобные проблемы возникают раз от раза, проще и дешевле было бы иметь программиста с высшим образованием.
показать ответы
2
Автор поста оценил этот комментарий
В 99% случаев берется неподходящее и напильник.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Нам нужна инновация, новый хитрый алгоритм. Из чего вы хотите его выпиливать? Да и (по сценарию) вы не умеете выпиливать математические алгоритмы, вы умеете заниматься их композицией)
показать ответы
Автор поста оценил этот комментарий
если к графическому редактору прикрутить готовые библиотеки и решения, то вопрос в 5 минутах кодинга. Не надо стрелять из гранатомета по мухам, вручную все реализовывая.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Конечно не надо. А если вы не найдете подходящего готового решения?
показать ответы
Автор поста оценил этот комментарий
ну вот, опять эта стандартная пафосная речь про тру-прогеров и не тру-кодеров. Есть такая штука, называется ремесло. И есть такая штука, которая называется искусство. Так вот, кодер, т.е. ремесленник, никогда не напишет картину, не придумает новый инструмент, но выпилит стол, сделает тумбочку не особо не заморачиваясь геометрией или математикой. И есть прогеры, вот они и разрабатывают инструменты для кодеров. Ферштейн ? Разделение труда. У каждого свои обязанности и функции. Незнание глубин ну никак мне не мешает с оперировать кодом и создавать продукт. Мне, как кодеру нафиг не нужно знать, как функционируют библиотеки, мне важно, чтобы они работали и я мог быстро и в срок написать прогу и отдать ее клиенту и получить денежку.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я с вами согласен, более того, мы говорим об одном. Тогда давайте не будем обобщать понятие "программирование сейчас". Сама профессия "программист" разделилась на специализации.
Автор поста оценил этот комментарий
Программист, изучивший языки программирования, инструменты разработки, различные технологии и паттерны, но не освоивший математические основы, напоминает художника, научившегося в совершенстве разбираться в красках и кистях, освоившего множество приёмов, но при этом не знающего композиции, перспективы, анатомии и прочих основ. У него может быть много гениальных мыслей, но выразить их он не сможет, и всё, на что ему остаётся рассчитывать – это работа ассистентом или раскрашивание чужих картин.
вот что мне не нравится в статье и с чем я не согласен. Есть же художники сюрреалисты и как их там, они по анатомии не загоняются же. Если я захочу рисовать людей с натуры, да, я буду вынужден учить анатомию, но если я рисую пейзажи зачем мне анатомия ?
раскрыть ветку (1)
Автор поста оценил этот комментарий
Основы, необходимые для каждого программиста из любой сферы, это хорошее среднее полное образование (аттестат не гарантирует предполагаемых знаний). Да, без этих знаний вы даже сложность алгоритма не рассчитаете.

И, да, судя по вашим словам, но вы и есть "ассистент" или занимаетесь "раскрашиванием чужих картин" (в виде фреймворков).
Не обижайтесь а , но программист, не способный написать аналог библиотеки, которой пользуется, является кодером, который занимается "отверточной сборкой" того, что за него уже сделали программисты.
показать ответы
1
Автор поста оценил этот комментарий
не надо загоняться в крайности и изучать все подряд, если это не нужно. Возьму себя (я пишу в основном десктоп приложения, инф. системы) и ученого, запускающего спутники в космос. Я не смогу рассчитать траекторию спутника, потому что по специфики моей работы мне нахрен не нужна математика, я должен знать как забабахать красивый интерфейс, знать бизнес-логику, уметь работать с БД. И ученый, он рассчитает траекторию полета спутника, с математикой все ок, но вот бизнес-приложение он не напишет при всем желании. К чему я ? Сначала надо определиться, чем человек хочет заниматься и уже от этого плясать и изучать то, что реально понадобиться в работе. А все эти категорические заявления, мол досконально математику должны знать все прогеры - бред и популизм, проще говоря раздувание своего ЧСВ.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Если вам не нужно - ради Бога, учите только то, что вам нужно)
Вы упорно не хотите читать статью и вникать в ответы...

Если вам уж очень хочется поспорить, то зачем сужать свой кругозор?) Я могу и рассчитать траекторию спутника (при некотором изучении прикладной области и в тесном контакте со специалистами), и заняться информационной системой. Такая универсальность карьере не помеха.
показать ответы
Автор поста оценил этот комментарий
Я по диагонали прочитал, вроде ничего нового для меня там нет.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Тогда ясно)
показать ответы
Автор поста оценил этот комментарий
Нужна ли программисту математика?

Да.

/thread
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Почитайте статью, очень интересная!)
показать ответы
Автор поста оценил этот комментарий
То, что ты имеешь в виду под реальным программированием, является в самом деле ремесленным кодингом низшего уровня. РНР-обезьянки, вот это всё.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Есть эволюционный вариант - JavaEE/ASP.NET
Автор поста оценил этот комментарий
математика без практики очень быстро забывается. Большинство прогеров достаточно редко сталкиваются с математикой, в основном идет умение работать с паттернами и выстраивать грамотную логику программы. Имхо, лучше разделить работу, быстрее и качественнее получится, чем вешать все на одного человека. Скупой платит дважды как говорится.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Вы даже сейчас "компонуете" решение математической задачи из труда математика и кодера, вместо одного инженера по разработке ПО =)
В ответ на ваше "скромное мнение": в реальных крупных продуктовых конторах это один человек. Для некоторых задач привлекаются инженеры по областям (физики, химики), но обычные математические задачи решаются инженерами-программистами.
показать ответы
Автор поста оценил этот комментарий
математика без практики очень быстро забывается. Большинство прогеров достаточно редко сталкиваются с математикой, в основном идет умение работать с паттернами и выстраивать грамотную логику программы. Имхо, лучше разделить работу, быстрее и качественнее получится, чем вешать все на одного человека. Скупой платит дважды как говорится.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Математика - как велосипед, если знать ее хорошо, то заново въехать можно за пару вечеров в любую проблему. А если ты ее не знал никогда, то при необходимости осилишь только ценой времени и большой крови.

Большинство современных программистов - это кодеры, занимающиеся компоновкой готовых блоков. Только если их так назвать, они искренне обижаются =)
2
Автор поста оценил этот комментарий
распространенное заблуждение. Синтаксис ничто без знания бизнес-логики, паттернов, фреймов, умением работать с потоками, unit тестами, без знания БД, умением проектировать БД, писать запросы, да кучи всего что надо знать. Тем более сфера программирования стремительными темпами развивается и изменяется, в отличие от той же математики.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Простите за личности, вы кроме Ынтерпрайза чем-нибудь занимались?

Математика ему медленно развивается...
Автор поста оценил этот комментарий
ИМХО

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

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