Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Насколько программисту нужно знать математику? Что думают в Яндексе. Зачем программисту математика реферат


Зачем программисту высшая математика?

Зачем программисту высшая математика?

problem--question-marks--woman--mark_3297964 Толковые ответы с просторов интернета.

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

материалы по программированию

 

Метки статья. Смотреть запись.

www.itmathrepetitor.ru

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

Во втором выпуске рубрики «Вопросы к экспертам» мы затронули извечный вопрос про программирование и математику. Итак, действительно ли программисту нужно знание математики для успешной работы и если нужно, то насколько?

Павел ЕмельяновПавел Емельянов

Павел Емельянов, главный архитектор Virtuozzo

Зависит от того, что называть математикой. Умение складывать числа тоже математика, и такое знание крайне желательно. А, например, без понимания того, что именно доказал Перельман, вполне можно программировать. Любые попытки провести грань, до которой необходимо знать математику, чтобы стать программистом, заведомо обречены на провал. Одно можно сказать наверняка — умение оперировать абстрактными понятиями (одно из основных для математика) несомненно помогает и программистам в их работе.

Рейтинг полезности ответа: 42 Повысить Понизить

Дмитрий ИсайкинДмитрий Исайкин

Дмитрий Исайкин, руководитель команды С/С++ разработки почты в Mail.Ru Group

Как и в любом деле, все зависит от решаемой задачи.

Когда я участвовал в разработке рекомендательной и репутационных систем, математика была очень нужна. Приходилось придумывать и разрабатывать алгоритмы, использующие интегральное и дифференциальное счисление, находить экстремумы, строить регрессии, вводить метрики для определения близости в многомерном пространстве. И все ради каких-то лишних сотых долей в RMSE рекомендательного движка.

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

И я бы не сказал, что из-за меньшей «математичности» работы я получаю от нее меньшее удовольствие и признание.

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

Рейтинг полезности ответа: 42 Повысить Понизить

Сергей ТерлецкийСергей Терлецкий

Сергей Терлецкий, менеджер по работе с образовательными учреждениями в компании Embarcadero

Так или иначе, базовый курс математики нужен в работе всем, вопрос только в какой момент потребность в ней будет максимальна в жизни специалиста. Когда я учился, программисты числились прикладными математиками, это показательно для нашей страны. Я тут не могу быть принципиально объективен, так как программировать мне пришлось начинать с мат. моделирования процессов в полупроводниках. С точки зрения программирования, на начальном этапе главное практические навыки написания кода, тут накапливается интуитивный опыт, знаю по себе из практики порой находишь такие баги и фишки, которые можно найти именно в постоянном контакте со средой разработки и кодом, тут математика не причем. Но если есть амбиции и желание решать и программировать реальные задачи самому, а главное создавать принципиально новые технологии, то фундаментальные знания математики и хорошее абстрактное мышление будут очень важны. Мировые аналитики прогнозируют, что в будущем человек за свою жизнь будет менять несколько профессий, значит не получится всю жизнь пробыть кодером. А учить и осваивать мат. аппарат надо до 25 лет.

Рейтинг полезности ответа: 42 Повысить Понизить

Сергей ЗефировСергей Зефиров

Сергей Зефиров, программист с широким опытом работы, энтузиаст и евангелист языка Haskell

Чем больше математики программист умеет применить, тем лучше.

Важна не сама математика, а умение её применять. Количество знаний математики увеличивает вероятность её применения.

Рейтинг полезности ответа: 42 Повысить Понизить

Роман ЮферевРоман Юферев

Роман Юферев, руководитель направления ИТ-менеджмента и мониторинга в компании VIAcode

Это очень интересный вопрос! Для начала, существуют определенные задачи, требующие от разработчиков высочайших знаний в области мат-анализа, дифференциальных уравнений, численных методов и т. д., но спектр этих задач довольно узок, а распространённость крайне низкая. Правда, такие специалисты очень высоко ценятся и могут рассчитывать на прекрасные условия труда. Для 80% разработчиков знания высшей математики никогда не пригодятся, еще 10%, возможно, придется вспомнить базовые вещи из теории вероятностей и некоторых других разделов математики — эти знания будут востребованы для решения задач по обработке данных. В то же время, учитывая взрывной рост направления Big Data, я вижу хороший потенциал для роста требований именно к знаниям в области математики.

Рейтинг полезности ответа: 42 Повысить Понизить

Василий КобзарьВасилий Кобзарь

Василий Кобзарь, преподаватель GeekBrains, специализируется на администрировании Linux

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

Рейтинг полезности ответа: 42 Повысить Понизить

Антон ПискуновАнтон Пискунов

Антон Пискунов, основатель и генеральный директор BeastGaming

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

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

Отдельного упоминания стоят сферы банка и бухгалтерии — тут опять же нужна не просто математика, а четкое понимание устоявшихся терминов, схем и кучи документов.

В итоге получается что в первые пару лет вашей карьеры действительно что-то считать вы будете лишь в геймдеве когда у вас стрела из-за кривой баллистики не будет долетать до орков.

Но на самом деле всё это не важно — ориентируйтесь на то, что в течение профессиональной деятельности вы всегда будете находится в постоянном поиске информации которую не знаете. Математику можно совершенно спокойно закинуть в разряд скилла, который качается ровно тогда когда этого требует от вас бизнес — представьте свой мозг в роли стартапа и начните развивать его с MVP, с того что вы можете продать сейчас. Что-нибудь прикладное.

Рейтинг полезности ответа: 42 Повысить Понизить

Олег ГоршковОлег Горшков

Олег Горшков, руководитель отдела системной интеграции ecommerce-студии Simtech Development

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

Рейтинг полезности ответа: 42 Повысить Понизить

Михаил АдигеевМихаил Адигеев

Михаил Адигеев, начальник отдела проектов ГК «ГЭНДАЛЬФ», доцент ЮФУ, эксперт международной олимпиады «IT-Планета»

Не думаю, что именно необходимо. Есть программисты, имеющие лишь самые базовые знания математики. Но знание (не на уровне зубрёжки, а с глубоким пониманием) дискретной математики и основ статистики — очень существенный плюс к возможностям профессионального роста. Очень сильно пересекаются с математикой и «продвинутые» методы разработки алгоритмов.

Ну а в некоторых областях без глубоких знаний математики вообще никак. В Data Mining и Machine Learning необходимы статистика, теория вероятностей, линейная алгебра; в криптографии — общая и линейная алгебра; в 3D-моделировании — геометрия и механика; в биоинформатике — дискретная математика, статистика.

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

Рейтинг полезности ответа: 42 Повысить Понизить

Алексей МихайлишинАлексей Михайлишин

Алексей Михайлишин, руководитель отдела разработки ПО компании ОС3

Стать программистом в формальном понимании этого слова можно и без глубоких познаний в математике. Однако, если вы хотите заниматься действительно сложными и интересными проектами, то математика в том или ином виде вам точно понадобится. Например, у нас был проект «Кубосвод» — комплекс, позволяющий показывать сферические проекции в прямоугольных объемах. Это такой планетарий, для которого не нужен специальный купол, можно всё устроить в обычном учебном классе: рассмотреть звёздное небо или показать панорамный фильм. Потребуется только проектор, сферическое зеркало и программа, производящая рассчёты. И наши программисты с задачей справились.

Конечно, не все проекты такие. Для того, чтобы создавать шаблонные интернет-магазины наврятли потребуются знания стереометрии, но, безусловно, программировать для этого надо уметь. Я бы сказал, что знания математики дают программисту конкурентные преимущества перед теми, у кого их нет и открывают более широкий выбор проектов и компаний, в которых они могут работать.

Рейтинг полезности ответа: 42 Повысить Понизить

Андрей СитникАндрей Ситник

Андрей Ситник, веб-разработчик в Evil Martians

Связь математики и программирования — очень популярное заблуждение. Есть очень мало задач, где знание некоторых направлений математики вам пригодится. А вот умение общаться в команде или понимать пользователя нужно в любом направлении программирования.

Математика в общем — это скорее язык, чем направление науки. В отличии от естественных языков, математика — абсолютно точный и формальный язык. Поскольку язык влияет на мышление, то раньше изучения языка математики было обязательным. Так можно было научиться точно и формально мыслить.

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

Рейтинг полезности ответа: 42 Повысить Понизить

Илья АндреевИлья Андреев

Илья Андреев, руководитель отдела организации обучения фирмы «1С»

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

Алгоритмическое архитектурное мышление это особый навык, который, скажем, нужно отдельно почувствовать.

В целом, любому программисту математика полезна для развития технического мышления. Ряд программистов сталкивается с математикой постоянно. Например, программисты-актуарии, разработчики, связанные с статистическим анализом, инженеры-программисты математического моделирования, например, если он пишет движки под игры.

А вот в прикладном программировании математика почти не нужна.

Рейтинг полезности ответа: 42 Повысить Понизить

Зураб ОтарашвилиЗураб Отарашвили

Зураб Отарашвили, помощник ректора Университета Иннополис по научной и инновационной деятельности

Математика программисту абсолютно необходима. Это базис, на котором строится цепь алгоритмов, основа любой программы, которую программист описывает. Знание математики проводит четкую грань между программистом и хорошим программистом. Хороший — понимает, что делает, разбирается в логике и сути описываемых процессов. Только знание математики позволит написать оптимальную программу.

Рейтинг полезности ответа: 42 Повысить Понизить

Владимир ГоловановВладимир Голованов

Владимир Голованов, ведущий Java-разработчик ГК «Центр Финансовых Технологий», партнёра международной олимпиады «IT-Планета»

Знание именно математики — зависит от предметной области. Например, в компьютерной трехмерной графике нужно знать геометрию на 5. А если разрабатывать сайты с небольшой нагрузкой — тут математика вряд ли пригодится в чистом виде. Но необходимо иметь в виду: как правило, хорошие навыки в математике появляются не просто так, а в связи с хорошей развитостью других навыков, например, абстрактного мышления и памяти. А эти навыки в программировании также очень нужны. Вот почему получается, что, как правило, у программистов нет проблем с математикой. И если у кого-то наблюдаются проблемы в этой области — вероятно, в программировании также будут проблемы.

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

Еще посредством математики описываются алгоритмы. И если когда-нибудь придется самостоятельно реализовывать алгоритмы из книжки или из интернета, математические знания также станут острой необходимостью.

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

Поэтому, даже если именно математика и не пригодится, то все сопутствующие ей дисциплины просто необходимы. Так что… учим мат часть!

Рейтинг полезности ответа: 42 Повысить Понизить

Спасибо экспертам за ответы!

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

Хотите задать свой вопрос или присоединиться к числу экспертов? Вам сюда.

Наши тесты для вас:— Тест на знание сленга веб-разработчиков.— Что вы знаете о работе мозга?— А вы точно программист?

tproger.ru

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

Почти в каждой школе в кабинете математики висит табличка с высказыванием Ломоносова: «Математику уже затем учить надо, что она ум в порядок приводит». Многим из тех, кто не понимает, что такое программирование, кажется, что писать код — это то же самое, что решать математические задачи, а все программисты — обязательно математики. Но как все обстоит на самом деле? Насколько помогает знание математики в решении практических задач?

Наконец-то мы добрались до одной из самых острых тем и задали нашим коллегам в Яндексе вопрос: «Нужно ли программисту знать математику?»

Под катом, как всегда, полная текстовая версия.Михаил ПарахинМосква. Программирует 24 года. В Яндексе — 9 месяцев.

После окончания МИФИ начал работать в ЗАО НТЦ «Модуль». В 90-х это было почти единственное место в Москве, где занимались системами автоматического обучения. Потом ушел в компанию Parascript, которая фактически является монополистом в области распознавания рукописного и печатного текста. Долгие годы работал в США. Последние семь лет — в Microsoft, пять из которых возглавлял в Bing подразделение мультимедийных поисковых сервисов. Весной пришёл в Яндекс директором по поисковым технологиям.

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

Григорий bobuk БакуновМосква. Программирует 25 лет. В Яндексе — 10 лет.

Когда-то пришёл работать системным администратором, а сейчас — директор по распространению технологий.

Как ты думаешь, нужно ли водителю автомобиля знать, как он ездит? Мне кажется, что необходимо. Это реальная человеческая потребность. Нужно достаточно глубоко понимать, как работают даже такие банальные вещи, как системная библиотека. И, как ни странно, для этого до сих пор нужна математика. Есть определенный класс программистов, которым действительно это, наверное, не нужно. Можно привести простое сравнение. Есть люди, которые рисуют картины — их называют художники. Есть люди, которые красят заборы, — это маляры. Вот так же и с программистами: есть некоторый класс программистов, которые творят что-то высокое, а есть люди, которые красят заборы. И в конечном итоге их во многом отличает знание математики, умение тонко и детально понимать что же они все-таки пишут. Дальше выбор за человеком. Или ты начинаешь заниматься математикой, и тогда у тебя появляется шанс стать художником. Или красишь заборы — это тоже хорошая профессия.

Антон pg83 СамохваловМосква. Программирует 18 лет. В Яндексе — 9 лет.

Пришёл в Маркет программистом на C++. Работал над самыми разными задачами сервиса. Через несколько лет перешёл в поиск, где занялся надежностью и производительностью runtime поиска. Сейчас занимается системой сборки, которая позволит собирать всю нашу кодовую базу за несколько минут на большом распределенном кластере.

Вопрос в том, для чего ему знать математику? Для того чтобы объяснить компьютеру, что ему надо делать, математику знать не надо — надо знать язык и уметь им пользоваться. Но есть какие-то предметные области, где математику знать необходимо. Если бы я, например, писал Матрикснет или работал с ДНК, вполне возможно, что какую-то математику мне нужно было бы знать. Но вот в программировании — нет. Я не могу вспомнить, когда мои знания матанализа пригодились мне в написании кода. Но само знание математики заставляет людей писать лучший код. Все самые лучшие программисты, которых я знаю, обычно заканчивали какой-нибудь механико-математический факультет, а не ВМК. Видимо, обучение математике как-то так правильно вправляет мозг, что ты начинаешь лучше программировать.

Андрей styskin СтыскинМосква. Программирует 18 лет. В Яндексе — 9 лет.

Пришёл в Яндекс разработчиком на Java в группу поиска Маркета. Занимался классификацией товарных текстов и извлечением фактов из товарных описаний. Так началось его увлечение поиском и машинным обучением. Вне работы Андрей делал различные IR-игрушки: генератор стихов на языковых моделях, робота для прокачки социальных сетей. Сейчас Андрей руководит отделом ранжирования, в котором работает команда почти из 200 человек.

Человеку нужно хорошо знать математику, чтобы быть программистом в Яндексе. Можно сказать, это часть нашего корпоративного духа. Если кто-то не может решить сложную задачку с собеседования, то его просто всерьез никто не будет воспринимать в Яндексе. По крайне мере в поиске точно так. Мне кажется, это самоидентификация, механизм, с помощью которого можно понять, что человек мыслит теми же категориями, говорит на том же языке, что и ты, поэтому ты сможешь работать с ним в команде. Я знаю много хороших разработчиков, которые не смогли бы в Яндексе выполнить ни один проект, но с аналогичными в других структурах справились бы прекрасно. Например, в Яндексе тоже делаются инфраструктурные проекты, которые могут делаться в том же Luxoft, но просто этих людей мы бы никогда не наняли.

Анатолий anatolix ОрловПрограммирует 25 лет. В Яндексе — 9 лет.

Первые два года писал Маркет. Долгое время занимался поиском — в основном его производительностью, а потом и всем остальным. Сейчас занимается разными проектами в области скорости, архитектуры и т.д. Заместитель руководителя направления поисковых сервисов. Входит в 2% людей, которые заканчивают курсы на Coursera.

image

Математика — это большая область знаний, где есть части, которые в программировании нужны и не нужны. Если вопрос в том, существует ли что-то в математике, что нужно знать программисту, то да, конечно. А если он звучит как: «Есть ли что-то в математике, что программисту знать необязательно?» — то ответ будет тоже: «Да, такого много»… Например, дискретка очень нужна программисту, а матан за много лет мне в программировании ни разу не пригодился.

Степан КольцовМосква. Программирует 10 лет. В Яндексе — 7 лет.

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

Зависит от того, чем человек занимается. Если он пишет что-то высокотехнологичное, то ему математику надо знать прям суперобязательно. Чем ближе человек, условно говоря, к поиску Яндекса, в котором у нас самые высокотехнологичные задачи, тем лучше нужно знать математику. Если он ближе к совсем прикладным задачам (например, пишет программы для банка, чтобы оптимизировать работу бухгалтерии), то математику, конечно, можно не знать. Мне очень нравится Яндекс тем, что у нас гораздо больше таких мест, где она все же нужна.

Андрей Мищенко Москва. Программирует 24 года. В Яндексе — 9 лет.

Пришёл в Яндекс разработчиком на C++, долго был руководителем разработки Поиска по блогам и писал на Perl. Андрей — кандидат физико-математических наук. Сейчас работает с Андреем Гулиным над улучшением алгоритмов машинного обучения в поиске.

Смотря какие у программиста цели. Для решения некоторых задач нужно знать математику лучше, чем некоторые ученые, а для других она совершенно не нужна. Если ты занимаешься инфраструктурными, инженерными задачами, то тебе нужны совсем другие умения. Есть задачи, в которых гуманитарное образование тебе даже больше поможет, чем фундаментальное математическое. Особенно там, где ты больше всего работаешь с пользователями. Если ты разрабатываешь интерфейс, который должен быть удобен среднестатистическому пользователю, глубокое математическое образование будет тебе только мешать. Интерфейс будет очень стройнымм, но при этом совершенно неудобным. Ты должен уметь срезать углы, делать его не таким стройным и более гладким, чтобы он был более интуитивный.

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

Александр sadovsky СадовскийМосква. В Яндексе — 10 лет.

Пришёл в Яндекс работать над проектами, связанными с поиском. Под его руководством были созданы поиск по блогам, Яндекс.XML, запущены новый алгоритм ранжирования и робот для оперативного индексирования свежей информации, создана служба асессоров и начато измерение качества поиска. Саша — автор множества публикаций в научных и популярных СМИ об алгоритмах поисковых систем и продвижении сайтов в интернете.

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

Артём breqwas КиреевПрограммирует 12 лет. В Яндексе — 8 лет.

В Яндекс позвали за то, что парсил данные из Поиска по блогам. Позвали не только поругать, но и на работу. Много лет делал Поиск по блогам, в частности был основным разработчиком подсервиса Яндекс.Пульс. Сейчас разрабатывает Рекламную сеть, один из самых критичных в смысле отказоустойчивости сервисов.

image

Я математику не знаю вообще. Причем это очень странная ситуация, потому что все, кто сидят вокруг меня, знают ее очень хорошо. Так что когда они начинают говорить какие-то умные вещи или когда у них на столах валяются бумажки, исписанные страшным даже не знаю чем, мне становится очень совестно. Но вот я математики не знаю, и ничего. Совершенно ничего хорошего, но без математики есть много задач, в которых её, серьёзную Computer Science, алгоритмы и все такое знать необязательно. Есть много прикладных задач, в которых это не нужно.

Сергей svv ВавиновМосква. Программирует 27 лет. В Яндексе — 6 лет.

Пришёл в Яндекс разработчиком в Яндекс.Видео. Был главным в разработке Музыки, потом — в службе медиасервисов. Сделал несколько проектов для Яндекс.Диска. Сейчас — руководитель группы технологий работы с большими данными. Одна из задач, над которой работает Сергей, — проекты Яндекса для ЦЕРНа.

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

Роман КашицынНижний Новгород. Программирует — 11 лет. В Яндексе — год.

Как и многие наши коллеги в Нижнем Новгороде, окончил ННГУ им. Н.И. Лобачевского. До Яндекса разрабатывал системы страхования, информационной безопасности, управления медиасерверами. Работал над ПО в телекоммуникациях, автоматизированными рабочими местами, порталами. У нас участвует в модернизации бэкофиса справочника организаций.

Такие вопросы часто задают известным хорошим программистам. Я считаю, что математика полезна, но необязательна. Ее очень полезно знать, особенно, если ты пишешь, например, на Haskell. Многие известные программисты не имели профессионального образования в области математики и писали очень хорошие программы. Скорее, программирование — это даже иногда такая лингвистическая работа; многие программисты были лингвистами, например. Но, с другой стороны, математика иногда очень помогает. Особенно если писать какие-то приложения, связанные с графикой. Там без высоких математических абстракций очень плохо. Матрицы, преобразования, кватернионы и всякие такие штуки очень нужны.

Елена БунинаМосква. В Яндексе — 7 лет.

Директор отделения computer science в Школе анализа данных, HR-директор Яндекса, профессор кафедры высшей алгебры механико-математического факультета МГУ им. М.В. Ломоносова, заместитель заведующего кафедрой «Анализ данных» МФТИ. Доктор физико-математических наук. Тема её докторской диссертации «Автоморфизмы и элементарная эквивалентность групп Шевалле и других производных структур».

image

С моей точки зрения, есть разные программисты: те, кто просто по заданным алгоритмам что-то кодирует и может обойтись без математики, и все те, кто занимается анализом больших данных и теми вещами, которые есть у нас в Яндексе, — им математика нужна. Причем разные аспекты. Иногда даже нельзя представить заранее, какая математика им понадобится. Но уж точно те, кто имеет дело с машинным обучением, должен знать математику, должны хорошо владеть алгоритмами, и для них очень важны знания статистики.

Алексей ВолоховичНижний Новгород. Программирует — 25 лет. В Яндексе — 8 месяцев.

Лёша — руководитель нижегородского офиса разработки Яндекса. Окончил Нижегородский технический университет им Р. Е. Алексеева. Сейчас преподаёт там дискретную математику. Кандидат технических наук. До Яндекса занимался разработкой и программным менеджментом мобильных устройств.

Программисту знать математику в принципе важно, потому что те задачи, которые он решает, очень часто связаны со знаниями основным математических понятий. Писать код не означает ставить какие-то буковки, использовать какие-то операторы, функции и т.д., которые описаны в KPI. Можно написать такой код, который потом не сможет взлететь или, если полетит, то после этого упадет так, что развалится все, что под ним находилось. Поэтому закладывать красивые решения в самом начале проектирования системы — это основа основ. Для того чтобы получить это красивое решение, ты должен иметь базовые фундаментальные знания, понимать, в чем красота, в чем не красота, как посмотреть что данное решение оптимально для конкретного круга задач, которые решает твое программное обеспечение.

Михаил mlevin ЛевинМосква. Программирует 18 лет. В Яндексе — 5 лет.

Вы могли видеть лекцию Миши о том, как математика помогает Яндексу зарабатывать. Очень большая часть его деятельности — работа в наших академических программах. Он преподает в Школе анализа данных, участвует в создании программы обучения на факультете Computer Science Вышки и Яндекса. Дважды завоевывал медали на ACM ICPC в составе команды МГУ им. М.В. Ломоносова.

Если хочется заниматься интересной работой, то математику нужно знать довольно хорошо. Есть определенные разделы (такие, как алгоритмы), которые требуют довольно глубокого знания математики и в общем-то отчасти математикой и являются. Мы все-таки считаем, что алгоритмы на каком-то базовом уровне должны знать все уважающие себя разработчики, и в общем-то в Яндексе на собеседованиях, по-моему, всех спрашивают алгоритмические задачки. Дальше уже зависит от направления деятельности. Если человек разрабатывает что-то инфраструктурное, то он может углубляться уже в системные вещи. Там своя математика тоже есть, но я про нее не очень много понимаю. Функциональные языки — это вообще то, над чем человек, не знающий математику, ломает голову, а какие-нибудь алгебраисты просто схватывают все на лету. Ну, и понятно, новые области машинного обучения — это вообще сплошная математика и там, конечно, можно просто применять инструменты, ничего в них не понимая, но тогда риск сделать глобальную ошибку, из-за которой вообще ничего не получается, очень большой.

Андрей ГулинПрограммирует 25 лет. В Яндексе — 9 лет.

Пришёл в Яндекс программистом на C++. Первой задачей было переделать формат инвертированного индекса, чтобы записать в него информацию о точной форме слова в документах (до этого хранилась только лемма). Один из главных создателей Матрикснета, нашей технологии машинного обучения. Сейчас руководит службой ранжирования. Если бы Кнут не написал свой трехтомник, эту работу стоило бы отдать Андрею. Сам Андрей на вопрос, чем он занимается в Яндексе, ответил: «Я работаю за компьютером и делаю всякие штуки, чтобы всем было хорошо».

Конечно, знать математику необходимо. Тут коллеги смеются, настолько несуразный вопрос вы задаете. Но не очень понятно, можно ли не знать математику с нашей системой общего образования. Уже в первом классе всех обучают складывать, и это навык, который необходим и которым мы пользуемся постоянно. Математика не исчерпывается, как мы знаем, арифметикой — в ней есть много разделов с большей или меньшей полезностью. Некоторые изучают дифференциальную геометрию. Другие — сложные разделы математики, которые редко бывают полезны. В то же время есть разделы математики, которые считаются нетривиальными. Например, теория вероятностей, и хотелось бы, чтобы её знало как можно больше людей. Потому что она примерно так же полезна, как и обычная арифметика. Первая дает всем возможность посчитать, сколько денег нужно заплатить за обед и хватит ли их до конца месяца, а вторая позволит нам посчитать гораздо более интересные вещи. Например, какие у нас шансы на то, что нам удастся устроиться на новое место работы с большей зарплатой, что не отменят визы и мы сможем уехать в отпуск в этом году. Для в общем-то насущных решений вполне себе можно применять теорию вероятностей в полном объеме. Соответственно знать математику необходимо, и вообще, как мы знаем, математика — царица наук. И одна из самых абстрактных наук, которая вообще бывает.

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

Мнений по поводу математики и программирования в Яндексе, на самом деле, гораздо больше. Здесь мы постарались показать, что в принципе они разные. И даже когда кто-то в одной части Яндекса считает, что без глубоких математических знаний невозможно работать, в другой свои задачи решают и те, у кого их нет. А что думаете вы? Мешало ли вам когда-нибудь то, что вы прогуливали матан? Или же математика вам каждый день помогает?

habrahabr.ru

Насколько важна математическая подготовка в перспективных направлениях разработки ПО

Профессия программиста становится все более массовой и востребованной. Сейчас порог вхождения в ИТ-сферу в принципе снизился, но продолжает расти интерес к ИТ-технологиям в целом, и к программированию в частности.

Среди ИТ-компаний и программистов, тем не менее, растет конкуренция. Однако стоит отметить, что, по крайней мере, на рынке труда она достаточно честная. Например, принимая на работу программиста работодатель в первую очередь будет оценивать уровень реальных знаний и навыков, а не цвет диплома. Впрочем, эта ситуация способствует распространению «программистов-самоучек», которые ограничены узкой специализацией. Для них нередко оказывается справедливо выражение «шаг вправо, шаг влево – расстрел». Так что, сейчас недостаточно сказать: этот человек – «ИТшник», или даже программист. Программист программисту рознь.

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

Я учился в ВУЗе, в котором раньше, лет 30-40 назад, не существовало специальности «Инженер-программист». Однако люди, занимающиеся программированием, там были – их называли «ПМщики». Дело в том, что учились они на кафедре Прикладной математики. Но справедливо было бы все-таки называть их математиками, нежели программистами.

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

Конечно, можно еще вспомнить, что раньше была и трава зеленее, и небо голубее… Но где же программистам прокачивать матчасть в сегодняшних условиях? Означает ли это, что теперь на «серьезные» позиции разработчиков будут охотнее брать математиков, а не программистов?

Новые реалии

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

В последнее время новые технологии стали более наукоемкими – точнее, математикоемкими. Во многих областях человеческой деятельности стало активнее применяться математическое моделирование различных процессов, пишут в своем послании абитуриентам представители Новосибирского государственного технического университета.

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

На основе математических моделей разрабатывается соответствующее программное обеспечение, реализующее математическую модель объекта и математические методы, позволяющие найти оптимальное решение. И если мы заменяем физический эксперимент математическим, то должны быть уверены, что их результаты совпадают. «И как тут специалисту по IT-технологиям обойтись без глубоких математических знаний и вычислительных методов?», задают вопрос они.

До начала 90-х годов, неспешно развивалась так называемая прикладная статистика. Но развивалась она больше в теоретическом плане, чем в практическом.

А «в один прекрасный» день настала необходимость адаптировать ее к практике. В связи с совершенствованием технологий записи и хранения данных на людей обрушились колоссальные потоки информации в самых различных областях. Деятельность любого предприятия (коммерческого, производственного, медицинского, научного и тд) теперь сопровождается регистрацией и записью всех подробностей его деятельности.

Стало ясно, что без продуктивной переработки потоки данных образуют никому не нужную свалку. Выявление в накопленной информации скрытых закономерностей является задачей интеллектуального анализа данных (Data Mining) – составной части процесса принятия решений. Если смотреть глубже, то в основе интеллектуального анализа данных лежит широкий спектр методов теории вероятностей и математической статистики.

Знания математики нужны большинству программистов, вот только какие именно разделы нужны для разработки того или иного вида ПО? Что нужно знать для того чтобы, программировать игры, искусственный интеллект, big data, научный софт и так далее?

Иван Хватов, разработчик ПО, «Яндекс»:

Насколько нужна программисту математика? Опишите, пожалуйста, свою историю отношений с матчастью.

В целом, нужна. В каких-то областях — больше, в каких-то — меньше. После университета в теорию погружался только если была необходимость по задачам.

В каких направлениях разработки необходима матчасть? Почему? Какие разделы математики там нужны?

Направлений много. Всего не перечислишь. Если, например, говорить про текущий хайп, то необходимо хорошо знать статистику. Базовый уровень, который надо знать везде: университетский курс математической логики, теории вероятности, статистики и дискретной математики.

Можете посоветовать, как подтянуть математический аппарат программистам, давно закончившим ВУЗ? Могут ли здесь быть какие-то сложности?

Проходить онлайн-курсы. Сейчас с этим нет проблем.

Чем отличается математическое мышление от программистского (алгоритмического)?

Не знаю, я бы это не разделял.

Какие специалисты лучше подходят для математикоемкой разработки: математики с азами программирования или программисты с азами математики?

Антон Каракулов, веб-разработчик, ТМ

Насколько нужна программисту математика? Опишите, пожалуйста, свою историю отношений с матчастью.

Всё зависит от того какие задачи предстоит решать программисту. Чем больше прикладных — тем реже нужна матчасть. Чем более системных — тем чаще оказывается востребованной.

К сожалению мои какие-либо внятные отношения с ней закончились на 2 курсе института. В тот момент ещё верилось, что она будет мне полезна и нужна, но в силу обстоятельств отвлёкся на другие знания, и потом уже было очень сложно вернуться к абстрактному изучению.

В каких направлениях разработки необходима матчасть? Почему? Какие разделы математики там нужны?

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

Можете посоветовать, как подтянуть математический аппарат программистам, давно закончившим ВУЗ? Могут ли здесь быть какие-то сложности?

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

Чем отличается математическое мышление от программистского (алгоритмического)?

Математик определяет понятия (отвечает на вопрос «Что»), а программист транслирует их в машинный язык (отвечает на вопрос «Как»).

Какие специалисты лучше подходят для математикоемкой разработки: математики с азами программирования или программисты с азами математики?

В общем среднем по больнице — конечно, программисты с азами математики.

Артем Кухаренко, основатель NTechLab:

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

Если здесь имеется ввиду знание математики, то, на мой взгляд, оно обязательно далеко не во всех областях программирования, но лишним оно, конечно, тоже не будет. Я бы сказал, что в разных областях оно даст свой прирост к квалификации: в каких-то – 10%, в каких-то – 1000%.

Если имеется ввиду знание теории и основ области в которой человек работает, то, на мой взгляд, это must have для любого эксперта в своей области.

Опишите, пожалуйста, свою историю отношений с матчастью.

Учился в математическом классе одной из лучших матшкол Москвы — Гимназия №1543, потом учился на ВМК МГУ, где тоже была математика, не такая серьезная, конечно, как на МЕХМАТе МГУ например, но на достаточном уровне, чтобы можно было разбираться и понимать, например, современные алгоритмы машинного обучения. Плюс участвовал в школьных олимпиадах по программированию, где нужно было изучать теорию алгоритмов, что в дальнейшем мне очень сильно помогло.

В каких направлениях разработки необходима матчасть? Почему? Какие разделы математики там нужны?

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

Можете посоветовать, как подтянуть математический аппарат программистам, давно закончившим ВУЗ? Какие курсы лучше посещать?

Сейчас появилось много открытых курсов, таких как Coursera, но в них обычно материал дается очень поверхностно, чтобы охватить как можно более широкую аудиторию. Есть, конечно, и исключения, но их мало. Есть несколько ресурсов, где материал дается на очень хорошем уровне, например, Stanford engineering everywhere: там просто записи лекций, которые читаются в Стэнфорде. На мой взгляд, их очень полезно смотреть если есть базовая подготовка.

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

Какие специалисты лучше подходят для математикоемкой разработки: математики с азами программирования или программисты с азами математики?

У нас в компании разработка и исследования разделены. Для разработки больше подходят программисты с азами математики, для исследований — математики с азами программирования. Но в обоих командах очень часто встречаются люди, у которых одновременно очень высокий уровень знаний и математики и программирования.

Пользователь Mrrl, рассуждая о разделах математики, необходимых программистам, писал следующее:
1) Математический анализ — без него просто никуда, основа всех численных моделей.

2) Алгебра (высшая) — применяется довольно редко. Либо в виде теории групп — когда нужно что-нибудь сделать с группами вращений или движений пространства, либо в виде конечных групп/полей, где она смыкается с теорией чисел. Но если уж пришлось туда забрести, то приходится использовать активно. Если и не в коде, то в разработке алгоритмов.

3) Аналитическая геометрия — думаю, она нужна любому, кто связан с компьютерной графикой, компьютерной геометрией, моделированием в 3D…

4) Линейная алгебра и геометрия — аналогично аналитической геометрии. Плюс матрицы вылезают во многих задачах обработки информации.

5) Дискретная математика — графы сюда входят? А булева алгебра? А конечные автоматы? Для разработки алгоритмов будет использоваться часто, пусть и в фоновом режиме.

6) Математическая логика — разве что на уровне понимания логических операций и кванторов. Чтобы доказать правильность программ, и реже — чтобы их спроектировать исходя из «дано» и «получить». Может помочь, когда условия задачи слишком формальны и упорно не хотят восприниматься мозгом.

7) Дифференциальные уравнения — если они не являются частью предметной области, то встречаются редко. Чаще в качестве такого же вспомогательного инструмента, как производящие функции. Или для анализа данных, оптимизационных алгоритмов…

8) Дифференциальная геометрия. — Бывает. Когда приходится работать с многопараметрической моделью, полезно представлять себе свойства пространства параметров. Чаще всего это ограничивается метрикой — даже геодезические считать не приходится. Ну, и есть один специфический случай — программы, в которых дело идёт в пространстве Лобачевского.

9) Топология — кроме трассировки плат не могу представить, где она нужна. Возможно, в компьютерной геометрии, например, при построении поверхности по одному или нескольким облакам точек, при расчётах взаимодействия тел, для поиска пути в пространстве допустимых параметров какого-нибудь робота… Но я этим пока не занимался, и насколько нужна именно топология, не знаю. Для разработки алгоритмов, думаю, нужна.

10) Функциональный анализ — не помню, что туда входит. Но если базисы семейств функций (ряды Фурье и более сложные системы) изучаются там, то это полезно. Бесконечномерные пространства, скорее всего, не потребуются.

11) Интегральные уравнения — не сталкивался. Возможно, потому, что в качестве отдельного предмета я их не знаю.

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

13) Уравнения в частных производных — если не часть предметной области… могут пригодиться для каких-нибудь вариантов гладкой интерполяции данных (когда работы с базисными функциями почему-то не хватает). Насколько УрЧП нужны для моделирования, скажем, морской поверхности в компьютерной графике, не знаю — не занимался. Подозреваю, что нужны.

14) Теория вероятностей, математическая статистика, теория случайных процессов — в разной степени в любом анализе данных.

15) Вариационное исчисление и методы оптимизации — ИИ в играх и роботехника.

16) Методы вычислений и численные методы — сколько угодно. Если работа связана хоть с какими-нибудь вещественными числами.

17) Теория чисел — аналогично теории конечных групп. В целом, встречается нечасто. Если, конечно, не считать современной криптографии…

habrahabr.ru


Смотрите также

 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..

 

     

 

 

.