Компания
299,03
рейтинг
6 октября 2014 в 14:58

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

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

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



Под катом, как всегда, полная текстовая версия.

Михаил Парахин
Москва. Программирует 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 лет назад, потому что написали много книжек, есть много курсов. Соответственно, если вы хотите заниматься не машинным обучением, которым занимаются уже примерно все, а чем-то совершенно новым, нужно уметь изучать новые области и выбирать те области, которые действительно нужны.


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

Комментарии (100)

  • +24
    Я бы уточнил, какую математику в первую очередь должен знать программист. Выбираем из списка)

    Математический анализ
    Алгебра
    Аналитическая геометрия
    Линейная алгебра и геометрия
    Дискретная математика
    Математическая логика
    Дифференциальные уравнения
    Дифференциальная геометрия
    Топология
    Функциональный анализ и интегральные уравнения
    Теория функций комплексного переменного
    Уравнения в частных производных
    Теория вероятностей
    Математическая статистика
    Теория случайных процессов
    Вариационное исчисление и методы оптимизации
    Методы вычислений и численные методы
    Теория чисел
    • +40
      Я бы уточнил ещё какой нужен программист.
      • +49
        Молодой, но уже с опытом работы в двадцати успешных проектах, с женой и двумя детьми со своей квартирой в центре без ипотеки, с машиной, категория Б и С, компанейский, который денег занимает до зарплаты без проблем, программирует день и ночь, документацию пишет отлично, код комментирует подробно и на любом из семи иностранных языков, зарплата коллег его особо не волнует и вообще отличный парень. Да, и еще производную x^x берет в уме и считает всем очки в покере. Ну и так по мелочи еще))
        • +6
          Не обязательно в центре))
        • –21
          — машины нет — работа в 5-минутах ходьбы
          — иностранные языки — только английский (I'm sorry)

          Остальное наличествует.

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

          Один ньюанс: дефолт-сити = Астана.
        • +3
          Да, и еще производную x^x берет в уме


          (ln x + 1)*x^x :)
          • +5
            Такие вещи надо помнить. Если ему приходится брать её в уме — не подходит, давайте следующего.
            • +1
              Так в начальных требованиях просят уметь брать :)
              Да, и еще производную x^x берет в уме
              • +5
                А, это были требования? А я думал, резюме.
        • +1
          Только не «занимает» а «дает в долг». Который занимает не нужен!
        • 0
          программирует день и ночь

          с женой и двумя детьми

          Это уже гений тайм-менеджмента какой-то!
          • +4
            в позиции догги-стайл с ноутом на спине партнёра — кадры в каком-то фильме были.
          • 0
            Жена и дети так достали, что он сбегает от них программировать.
      • 0
        На смену тыжпрограммист у программистов приходит тыжматематик :)
    • +2
      Хм, фактически математический базис для физика.
    • +18
      Если выбирать три, на мой взгляд самые часто применяемые знания дают:
      — Дискретная математика
      — Математическая логика
      — Теория вероятностей

      Но думаю, это сильно завист от того что программируешь.
  • +14
    От себя замечу, что мне на разных местах работы пригодился почти весь курс математики, особенно линейная алгебра, аналитическая геометрия, математический анализ, математическая статистика, теория вероятностей и, конечно же, численные методы с дифференциальными уравнениями.
    Пожалуй только функциональный анализ и топология не пригодились вообще. Хотя, возможно, я просто не побывал на такой позиции где и это тоже нужно.
    Если интересно, могу расписать где какая прикладная задача потребовала каких знаний. Ну кроме линейной алгебры, аналитической геометрии и математического анализа, которые вообще везде нужны, особенно если 3D часто появляется.
    В результате, не так давно, принял решение продолжать обучение и расти как математик. Поступил в свой родной университет, вот, доучиваюсь до магистра Йоды с претензией расти выше и выше.
    • +7
      Если интересно, могу расписать где какая прикладная задача потребовала каких знаний.

      Распишите, мне интересно.
    • +2
      был бы рад увидеть предложенный комментарий
    • 0
      Распишите, интересно! Можно даже небольшую статью.
    • +10
      Раз такое дело и все хотят продолжения, попробую всё расписать по порядку, не забыть бы чего.
      Первая моя работа была в лаборатории компьютерной графики. Чтобы попасть туда мне понадобились знания аналитической геометрии, линейной алгебры и математического анализа. Ну и конечно знания 3D pipeline, поскольку пришлось всё визуализировать вручную без помощи Direct3D или OpenGL. Однако попав туда, я очень здорово пролетел, так как отдел переформировали в железячный, мы писали драйвера для протоколов и высокоуровневый функционал для взаимодействия с интерфейсом этих драйверов. Тогда я и познал .NET 1.1 и 2.0 (как только вышел) в деталях, выучил C#, научился маршаллить C/C++ интерфейсы в менеджед библиотеки. Было интересно, но числился я тогда студентом и получал соответственно.
      Математическая статистика, теория вероятностей и, главное, численные методы — первая моя серьёзная работа на ныне норвежскую компанию, кроме текучки типа запилить доверительные интервалы при вычислении некоторого прогноза, мне тогда доверили (а зря, студенту-то) оптимизировать расчёт стоимости рекламной компании. Моей задачей была оптимизация функции стоимости рекламы в N-мерном пространстве, где каждое измерение — стоимость по определённому рекламному носителю по заданной целевой аудитории. В ряде случаев получалась дробно-рациональная функция от N переменных и кроме как численными методами оптимизации такое не решается. В университете ЧМ были моим коньком, вместе со знанием 3D я рисовал решения университетских задач, визуализируя решения в 3D по времени в виде анимации. Столкнувшись с реальными проблемами при решении реальной задачи: сложная область определения, поиск решения на границе, множественный поиск и параллельные вычисления (из-за попадания в локальные минимумы) я понял КАК МАЛО Я ЗНАЮ после первых 4-х курсов и то, что университетские задачки дают общее представление о том как решать, но в жизни всё намного сложнее. Оптимизатор получился довольно неплохой, но предыдущая реализация была лучше, поэтому мою работу тогда забраковали. Опыт был горький, но весьма полезный, я усвоил не только ряд новых методов, но и то, что не стоит бросаться и бить себя пяткой в грудь «да я смогу!» если ты вчерашний студент и не понимаешь мастерства коллеги, который убил кучу времени на предыдущую реализацию, на её оптимизацию, он работал с этим продуктом в этой компании много лет и наверняка у него были причины гордиться своей работой.
      Следующая работа была с CAD-системой, в 3D с геометрией, линейной алгеброй, немного дифурами и матанищем, по сути всё сводилось к движению резца по кромке детали, в результате резец что-то вырезал, не ломался и изготавливалась некоторая заготовка на автоматизированном станке. Работа была интересная, в 3D как и мечталось, но начисто убивало всё желание копание в багах старших коллег, которые скидывали все задания «найди утечку» и «найди выход за границы массива» в наш местный филиал. В результате было минимум геометрии и максимум шаманства с помечанием памяти.
      Позже пригодилась даже физика, переменный ток с напряжением нужно было визуализировать. Здесь геометрия была уже двумерной, и оттачивалось мастерство моё как разработчика, ибо прошивка кастомного устройства замера элекроэнергии должно было крайне экономно расходовать любые ресурсы. Зато на стороне PC-интерфейса можно было разгуляться. Был даже проект с обёрткой C API нашей обёртки в C# .NET для отображения, благо опыт уже был.
      На облачную платформу, где я сейчас работаю, пригласили внезапно. Компания лидер в нашем городе, решения интересные, то чем я занимаюсь активно оперирует мат.статистикой, сильно завязана на взаимодействие между C++ и Python (собственно я автор этой связки), ядро написано на C++, всё проходит через него. Геометрии и 3D минимум, однако зачастую требуются самые разнообразные знания, поскольку роль у меня сейчас руководящая и спектр задач довольно широк. Здесь лучше бы знать абсолютно всё, включая весь курс математики, не говоря уже о целом спектре технологий, которые я просто физически не успеваю изучить и знакомлюсь с ними разведкой боем, впрочем тут уже появляется чутьё фарватера, а вот с математикой сложнее, её либо знаешь, либо нет.
  • +2
    Да, собственно в этом высказывании Михаила Парахина всё отлично сказано: "… В целом если ты не знаешь математики в рамках школьно-институтского курса, то жизнь программиста тебе не очень понравится. "
    • +14
      Я не согласен. Люди получают кайф от программирования, заставляя бездушную машину делать то, что им нужно. И математика здесь не причем. По-моему это немного сродни волшебству: вот перед тобой черный экран, а через секунду там может быть уже некий 3d-мир или результат сложных (или не очень) вычислений. Даже если взять программиста-любителя, который в первый раз в жизни запрограммировал и выложил в сеть свой недобложек — разве от этого нельзя получить удовольствие и захотеть развиваться дальше?

      Я бы перефразировал приведенную вами фразу так: «В целом если ты не знаешь математики в рамках школьно-институтского курса, то жизнь программиста В ЯНДЕКСЕ тебе не очень понравится».

      Но программисты, они же не только в Яндексе.
      • –2
        Эмоции это всё понятно. Речь о том что вы очень быстро упрётесь в свой потолок интересных задач. Потолок же определяется уровнем вашей матподготовки… Мозги в 20 лет и 40 лет, это разные мозги. Если вы не привыкли оперировать сложными абстрактными понятиями с самого начала, то потом шансов что вы в сорок лет научитесь этому минимум…
        А до сорока лет лет клепать web-странички, кодить 1C или примитивные игрушки типа тетриса — это fail…
        • 0
          Интересные задачи — это не только математика. Математические задачи — лишь один слой.
          Я, к примеру, работаю в проектах, где математика высокого уровня не нужна. Максимум что-то простейшее, среднее посчитать и т.п. Но у меня есть куча интересных задач. Например оптимально решить задачу, применить свой опыт для поиска наиболее качественного решения, как с точки зрения реализации кода, так и с точки зрения оптимизации пользовательской работы, интерфейса, и т.п. Чем больше твой опыт — тем более крутые решения ты можешь реализовывать. Я бы не сказал, что мне скучно, и что я не развиваюсь.

          Найдутся те, кто скажут, что это не программирование, и программист вообще не должен заниматься интерфейсами, логикой взаимодействия с пользователями, и подобным. Не хочу выглядеть обезъяной с клавиатурой, по этому заранее с ними не соглашусь.
          • 0
            Да не то что не должен, просто скучно это как-то, что ли. Интерфейсы эти все, пользователи, всякое такое.
      • +1
        Абсолютно согласен. Для программирования надо знать математику — так считают те, кто знает математику. Им обидна мысль о том, что программировать могут и люди которые ее не очень знают :)
      • 0
        Тоже не соглашусь. Скажу честно, в школе я учился плохо, и физика и математика давались мне тяжело. Так же и в ВУЗе. Но я обожаю программирование просто до дрожи в коленках! Скорее всего, это можно объяснить тем, что у меня типичный гуманитарный склад ума и я очень люблю русский язык и литературу. В итоге я работаю как раз проектировщиком интерфейсов и делаю их удобными для юзеров (это моя основополагающая задача по сути), о чем и говорил Артем Киреев из Яндекса.
        • 0
          Ах извиняюсь! Имел ввиду Андрей Мищенко)
  • 0
    Я выберу:
    1) Матан (однозначно, это базис, он расставляет по местам понятия и дает ориентиры, помимо своих практических применений)
    2) Дифуры (примерно как матан, они косвенно проявляются во многих местах, где, казалось бы, вообще не пахнет математикой, не то что дифурами)
    3) ТФКП (однозначно — без комплексных чисел никуда)
    4) Теорвер. Многие алгоритмы имеют вероятностный характер либо в плане своих результатов, либо в плане своей сложности (вспомним «быструю сортировку»)
    5) Численные методы. Без них тоже никуда, если желаешь вычислить на компе что-нибудь нетривиальное.

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

    Работаю программистом давно, и чем дольше работаю — тем больше убеждаюсь, что дополнительные знания в области математики (которая сама по себе необъятная) всегда когда-нибудь пригождаются в работе. Лишними они не бывают никогда.
    • +12
      Расскажите, пожалуйста, о последнем реальном применении дифуров и ТФКП у вас на работе.
      • +1
        Мне в последний раз ТФКП пригодилась при поиске совмещения изображения с фотокамеры с моделью сцены. При том, что положение камеры было примерно известно, а ориентация камеры и параметры объектива — неизвестны вообще. В терминах конформных преобразований удалось найти довольно правдоподобную модель. Позже в той же задаче комплексные числа и функции использовались для поиска параметров объектива.
        Вот диффуры не использовались давно. Разве что для расчётов каких-то переходных процессов в электронике — с одной стороны, для подбора оптимального управления, с другой — для последующей компенсации их влияния на результаты измерений.
      • +1
        Дифуры применялись при моделировании электрических схем. Решались они, правда, численно. Но это + к численным методам, которые тоже надо изучать. ТФКП является важной составной частью цифровой обработки сигналов и изображений, которыми я также занимался.
  • +7
    У меня дежавю. Разве этой статьи не было на хабре ранее?
    UPD: ошибся, была похожая статья про профильное образование.
    • +3
      Судя по всему, оба видеосета сняли одновременно, т.к. одни и те же люди одеты в одинаковую одежду и находятся в тех же обстановках (сравните картинки с этой статьей).
  • +3
    Аналитический склад ума, обучаемость и базовое владение математикой. Всё остальноё придёт в процессе работы над задачами.
  • +47
    Некоторые разработчики Яндекса увы слишком высокого мнения о себе(
    А в целом основы знать конечно нужно.
    • –11
      Как бы это их мнение о себе подтверждено и подкреплено зарплатой работодателя… )
      • –2
        Да нет же, вы что. Мы-то уж точно не хуже их, просто нам это не интересно/впадлу/нет времени заниматься этим. А так бы не только в Яндексе 9 лет, уже бы на IPO выходил единолично, со своим бизнесом. Они все зазнайки, я ни чем не хуже, просто у меня еще все впереди. И получаю я чуть меньше 100к, и в метро я спускаюсь в 19:00. И не беда, что так же думают 90% людей в моем вагоне, и не беда, что я ничего не сделал в жизни такого, что бы могло удивить чуть больше чем десятерых моих друзей.
        Зато кидать говно в людей умеем. Почему ж тогда МатриксНет делают они, а не вы? Что вы сделали?
        • +1
          Вы кому отвечаете? Я нигде не писал, что кто-то, а тем более вы конкретно, хуже… Но я вижу вы хотите поговорить об этом. Я не очень силен в психоанализе, но давайте попробуем.
          Что заставляет вас думать, что вы можете быть хуже?
          Это какое-то внутреннее сомнение?
          Что является его источником?
          Что вы могли бы сделать для того, чтобы устранить этот источник сомнений?
          Какие внутренние ресурсы вам нужны для этого?
          Что вы можете сделать для этого прямо сейчас?

      • +1
        Посмотрите зарплаты Сбертеха или DB. Ну или гугла. Вы поймете, что у Яндекса зп, не сильно выше, чем среднерыночная, а может быть даже и ниже.
        • 0
          Не понял вашу мысль. Хотите сказать, что в гугл берут программистов без знания математики едва закончивших среднюю школу? 0_о
          Какой именно DB вы имеете ввиду я не знаю. А Сбертех это вообще другой рынок с другими зарплатами. Банковские программисты — это отдельная каста. Можно пойти и туда, если вам будет прикольно всю оставшуюся жизнь писать бухалтерские программы…

          Если сбертех берет разработчиков без базовой матподготовки, то это многое объясняет. Качество их софта — редкое г… Я наблюдаю это каждый раз приходя в Сбербанк…

          Мое первое место работы было в банке, поэтому знаю что говорю. Да, зарплаты хороши. Но унылее места работы для программиста найти сложно…
          • +2
            Моя мысль совершенно не об этом, я говорю о том, что зп не показатель.
  • +6
    Мне кажется такие темы и такие высказывания ключевых людей дают не очень правильное сообщение.

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

    Та же ситуация кстати с С++.
    • +1
      Когда сотрудник понимает что про него можно сказать что он «не знает математику», и когда знание является требованием, происходит внутренний конфликт и неуверенность. Сотрудник не будет озвучивать свои ошибки, он будет стараться подловить коллег на незнании чтобы обезопасить себя. Психологический климат пострадает.

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

      Брайан Голдман — Врачи ошибаются. Можем мы поговорить об этом?

  • +11
    Из списка:

    1) Математический анализ — без него просто никуда, основа всех численных моделей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    17) Теория чисел — аналогично теории конечных групп. В целом, встречается нечасто. Если, конечно, не считать современной криптографии…
  • +15
    А теперь можно этих же самых людей попросить решить математические задачи из разных разделов математики и сколерировать с их ответами?

    Так себе видео. Математика включает в себя слишком много специфичных вещей, чтоб можно было поставить такой вопрос.
    Нужно ли знать математику продавцу? Нужно ли знать математику бухгалтеру?
    • +1
      согласен, только «сколерировать» нужно замерить на «скоррелировать»
      • 0
        хорошо, спасибо)
  • +17
    Сейчас, уже и математику считают необязательной. А, вот в 18-ом веке рядовой программист не только знал лично Эйлера, но боксировал, фехтовал, знал стихосложение, химию, прекрасно рисовал или складывал мозаику, мог построить парусный ялик, заготавливал пушнину, скакал на лошади и свободно слагал фуги и токкаты. Причём иногда, он делал это всё одновременно.

    Если серьёзно, то холивар же и реклама яндекса. Впрочем, ни то ни другое не что-то плохое.
  • +10
    Можно поставить другой вопрос — каким программистам нужна математика. У меня получился такой список:

    — Разработчики научных или инженерных приложений
    — Те, кто занимается компьютерной графикой или компьютерным зрением
    — Те, кому по каким-то причинам не подходят существующие физические движки и нужны более специальные
    — Разработчики игр с нетривиальной математической моделью в основе
    — Специалисты по обработке и/или анализу больших объёмов данных
    — Специалисты по криптографии
    — Специалисты по экономике, биржевой торговле… (здесь я подробностей не знаю)

    Потянет это на 1% от общего числа программистов? Или я кого-то забыл?
    • 0
      Поддержу. Но знание логики и какой-то базы математики помогает мыслить и находить решения проблем в различных ситуациях, когда без базы и особого мышления было бы совсем туго.
    • 0
      Составляет ли количество художников в мире хотя бы 1% от количества маляров?
      • +4
        В наше время художников может оказаться больше, чем маляров. Кому охота возиться с этой масляной краской, когда перед тобой открывается великое искусство? Тем более, с развитием интернета, когда публиковать свои шедевры стало гораздо проще.
        • –1
          Это сарказм? Публиковать-то проще, но кто их купит? А речь-то идет о профессиональных художниках или малярах. Так-то любой может рисовать себе тихо в тряпочку после основной работы, например, дворником.
          • 0
            Зачем покупать? Да здравствует Open Source и свобода информации. Всё на благо Человечества! А зарабатывать будут, работая дворниками или истопниками. Как полагается богеме.
            Не сарказм, а вопрос (само)определения.
          • 0
            Публиковать-то проще, но кто их купит?

            Это сарказм? Современный художник — покакал на холст и продал его за триллиард.
      • +4
        Парень, который сказал фразу про художников и маляров в интервью слишком много о себе думает
        • +1
          согласен, даже если это правда, то публично так говорить явно не стоит
    • –5
      А можете ли вы привети пример программиста, который бы НЕ работал ни в одной из приведенных вами областей? Какого рода продукцию создает такой программист?
      • –3
        Я не могу. Это вопрос к тем, кто считает, что математика не нужна.
      • +9
        Пользовательский интерфейс, бухгалтерский софт, интернет-магазины, веб-сервисы, автоматизацию инфраструктуры, ядро операционной системы, драйвера устройств, да вообще многое полезное вокруг нас.
        • –6
          Вы правда так думаете? Не беря в расчёт плохих программистов, давайте подумаем где математика в типичном интернет-магазине:
          Индексы в БД, структуры хранения данных в памяти, разные алгоритмы для быстрой выборки и фильтрации (и нечеткие в том числе), синтаксический поиск весь на алгоритмах. В видео хорошо сказали, что можно бездумно применять инструменты, но понятное к чему это приведёт.
          • +2
            Это все крутится внутри фреймворков / сторонних решений. 95% разработчиков интернет-магазинов (и любых сайтов вообще) никогда и ни с чем из этого дела не имели.
            • –1
              Но начальник треда спросил про программиста, который не пользовался математикой. А любой нормальный программист даже бухгалтерского софта и уж тем более драйверов и ядра ОС должен знать и правильно выбирать где и что использовать из алгоритмов и структур данных.
              • +7
                Правильный выбор алгоритма и структур — не бином Ньютона
      • +1
        Отчеты для 1С: Предприятие 8.x
  • 0
    > Впрочем, ни то ни другое не что-то плохое.

    Да, но как-то нелепо слышать это со стороны публичной компании с мировыми амбициям.

    Программист — это же по сути устаревшее простонародное название.

    Настоящее название профессии — это Инженер, Архитектор, Дизайнер.

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

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

    Скажите честно — нам жалко денег на аналитиков, поэтому на собеседованиях разработчикам мы даем задачки про лошадей, колодцы и прочий булшит. А чтобы выглядеть хорошо, мы создаем вокруг этого квазиэлитарную ауру.
    • +2
      А то, что Вам давали аналитики — оно в каком виде было? Было ли оно вообще пригодно для перевода на язык программирования, или его требовалось доводить до нужного состояния хорошим напильником? Как проходит общение между программистом и аналитиком, это односторонняя передача информации, или диалог с разъяснением «что я хотел сказать» с одной стороны, и «почему это физически невозможно» с другой?
      Вопросы не просто так — я сейчас не могу себе представить, как бы я мог передать работу по написанию кода программисту, не знающему математики. На каком языке и в каком режиме пришлось бы с ним общаться.
      • 0
        В виде чудовищных скриптов на перле и питоне.
        • 0
          И эти скрипты можно было превратить в нужный для проекта код, совершенно не пользуясь своими знаниями математики?
  • +21
    Я бесконечно люблю и уважаю Яндекс, но… я бы больше обрадовлся интересной технической статье, чем очередной подборке субъективных мнений неизвестных мне людей на бесмысленные холиварные вопросы.
  • +5
    ИМХО, программисту нужно знать математику на базовом уровне (первые курсы университета, основы, общее представление об основных объектах — дифурах, матрицах, интегралах, рядах, векторах, множествах, графах и проч.) и методах (хватит названий основных методов\приёмов, напр., метод поиска минимального пути в графе), используемых в математике, и их предназначении — не углубляясь в то, как именно с этими объектами нужно обращаться (как решать дифуры, как вычислять интегралы, как работает тот или иной алгоритм на графе). Углубляться в специальные теории нужно только в случаях, когда это необходимо для оптимального решения конкретной прикладной задачи.

    P.S. Ненавижу людей, которые бухтят что-то вроде «ууу, математика — царица всех наук, её знать программисту просто обязательно, без этого просто никуда», «какой же ты специалист-программист, если не знаешь математику».
  • –2
    Практически всем программистам нужны следующие разделы

    Арифметика
    Алгебра
    Теория множеств
    Логика
    Комбинаторика
    Дискретная математика
    Теория вероятностей
    Теория графов
    Математическая статистика
    Теория массового обслуживания
    Системный анализ в той части, что касается математики

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

    Ну-ка, решите задачки:
    1. На сайт интернет-магазина пришло 10000 посетителей, а купили что-то только 100. Какая конверсия? (математическая статистика)
    2. Если цену снизить, количество покупок повысится? А если увеличить количество посетителей? (статистика)
    3. Говорят, что из 1000 контрольных сайтов позиции в поисковых системах лучше у тех, про которые больше упоминаний в социальных сетях. Стоит ли тратиться на продвижение некого абстрактного сайта в социальных сетях? (статистика, логика)
    4. Смогут ли на сайт прийти 1000 посетителей одновременно и получить свои страницы? (теория массового обслуживания, теория вероятностей)
    5. Спроектируй базу данных, по которой можно сделать выборку по следующим критериям: мужчины И возраст 18 лет И нет отмазки от призыва (теория множеств, нормальные формы)

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

    Много теоретической математики там, где есть прикладная математика: бухгалтерия, статистика — хочешь — не хочешь, а знать придётся.

    Вывод: Математика нужна. Математика важна.
    • +1
      Все ваши вопросы относятся к области аналитики. В нормальных компаниях, которые задают себе такие вопросы, есть как минимум один аналитик, который будет их решать, запрашивая у меня голые данные, из которых он достанет нужные ему результаты.
      Я ничего не имею против того, чтобы программист был еще и аналитиком (да пусть хоть певцом будет до кучи), но это все-таки не одно и то же.
  • +6
    Царица наук — арифметика. Она нужна абсолютно всем, без нее жизни нет.

    А насколько нужна вся прочая математика — зависит от задачи. Не о чем холиварить.
  • +7
    За всю свою карьеру никогда не приходилось применять что-то сложнее, чем формулы с базовыми операциями (+-*/). Сфера — web и enterprise ПО.
  • –6
    По-моему высказывание Григория Бакунова о молярах и художниках наиболее соответствует истине.
    • +2
      Знакомьтесь, моляр:
      image
      • 0
        Да, простите, глупейшая ошибка. Сам обычно ратую за грамотность, а тут так опростоволосился.
  • +2
    Ох, очередная избитая тема. Сколько ж можно холивар раздувать. Почему никто из видео акцентирует внимание, что не только программирование бывает разным, но и сама математика…
    • +1
      Холивар это лучшая тема для техномаркетинга, посты в которых есть холивар привлекают сильно больше внимания, чем те в которых нет, поэтому холивар должен быть раздут!
  • 0
    Закончил прикладную математику 2 года назад. Нормально учился, самостоятельные, контрольные, экзамены. Не без эксцессов, но в основном все было ОК. Были почти все перечисленные дисциплины, не все преподавали супер, но большая часть я бы сказал достойно. «Прикладывали» математику к научным и более практическим задачам, писали на С, Matlab, Mapple, чуток на Python. «Душили» нас не слабо, имхо. В общем мне кажется образование получил нормальное.

    И вот сейчас я ни черта не помню. Я думаю восстановить знания в нужной области не проблема — день-два и базу вспомню. Но извините, вы намекаете что я должен ВСЕГДА, ВЕЗДЕ знать ВСЕ области? Иначе вы будете называть меня маляром и неспособным общаться на «высокие» темы… Я все правильно понял?
    • 0
      Я думаю восстановить знания в нужной области не проблема — день-два и базу вспомню.
      На мой взгляд, этого достаточно, это почти то же, что и «знать математику». Главное, в нужной ситуации вспомнить, что «что-то такое было», и знать где найти — сначала правильные формулировки, а потом и подробности.
      • 0
        Вот я тоже так думаю. Но на собеседовании никто не будет ждать день-два и не будет давать время на «вспомнить». Как по мне странная ситуация, не находите? Ну то есть либо прямо с пылу с жару — из универа, либо вероятность попадания в компанию снижается до смешных значений. Не знаю, может так и задумано?
  • 0
    За 15 лет работы программистом, математика (в основном, тригонометрия) мне действительно понадобилась, только полгода назад и честно скажу, вспоминать хорошо забытое старое намного удобнее, чем учить новое.
    Ну а так по мелочи, она всегда нужна.
  • +3
    Спасибо, что убили мою самооценку:( Я вот математику забыл наглухо. Это все из-за прикладных задач. Ну вот, теперь я не программист
  • +3
    Как многие отмечают, надо уточнять, что за программист, что за задачи, что за раздел математики. Я бы еще добавил к этому списку необходимый «уровень знания».

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

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

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

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

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

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

    Еще хинт: полезно иметь друга — достаточно продвинутого математика, который решит вам задачи, на которые вы потратите часы, за 5 минут, просто за «спасибо».
    • +1
      Вывод: для многих областей программирования полезно знать определенные области математики, причем достаточно даже предельно низкого уровня...

      Да, наверное. Но между «незнанием» и «предельно низким уровнем знания» — пропасть, намного большая, чем промежуток между «предельно низким уровнем знания» и «неплохим владением». И потом, после того, как удастся «нагуглить прикладное решение», надо его ещё приложить к нужному месту, а для этого полезно знать не только как что называется, но и какими свойствами обладает, из чего состоит, и как термины, в которых дан ответ, связаны с терминами вопроса. Вряд ли нужный для этого уровень можно назвать близким к нулевому.
      • +1
        Может и правда, я прибеднился самую малость :) Вот самый недавний случай, когда я размял кости в математике: stackoverflow.com/a/25664877/648955
        • 0
          Хорошая разминка. Вот только догадается ли автор вопроса, что для определения среднего числа таких ячеек ему достаточно умножить вероятность на M — и ответ будет правильным. И что для «теоретического обоснования» формулу вероятности достаточно прочитать буквально
  • –4
    Да конечно нужна. Матан на мой взгляд вообще нужен всем, т.к. это основа основ. Позволяет понять очень многие процессы, происходящие в мире. Математика это по факту описание мира вокруг нас. А это никому не повредит. Она просто меняет мышление в нужно русло. И это особенно полезно для программиста. А холивар лишь из-за того, что некоторые не хотят/не могут ее учить. На самом деле выучить ее при желании может любой. Единственный вопрос за сколько времени. Кто-то за месяц, а кто-то за годы. В статистике вообще ничего сложного нет. По сути большая часть состоит из просто набора функций для анализа данных. Ничего сложного в ней не вижу.
  • 0
    А почему не ставят вопрос наоборот: нужно ли математику знать программирование? Или для математика это бессмысленно, так как элементарно: тут оператор «сложить», тут «умножить», тут «извлечь что-то», оп-па, а вот так функция получаецца, вот структурка, вуаля-заполнил. И возглас: «Какие-то убогие эти ваши языки! Хотя, CPUs считаютЪ быстро, но какое же убогое всё изначально...»
    • 0
      Потому что математикам известен ответ. Программировать можно только те задачи, алгоритм решения которых известен. Математику-теоретику, который работает над получением нового математического знания программировать обычно нечего. Хотя если задача сводится к перебору вариантов, здесь компьютер может помочь. У тех, кто занимается приложениями, иная ситуация. Есть же профессия программист-математик :)
  • 0
    А где можно подучить основы тому кто ни черта не знает? По учебникам как-то несподручно.
  • 0
    Лаконично и точно ответил на этот вопрос Андрей Райгородский (на видео 3:17, а в текстовой транскрипции почему-то его нет): «Если хочешь… не иметь вообще над собой никакого потолка, то математику совершенно необходимо знать».
  • 0
    Прочитал пост и все комментарии. Видно что понятие «знание математики» просто очень расплывчато!
    Одно дело знать как решать правильно поставленные математические задачи, со школы и института.
    А вот:
    • Уметь найти нужный математический метод решения поставленной задачи.
    • Уметь правильно поставить математическую задачу из имеющихся данных.
    • Уметь решить её, и изложить решение.
    • Уметь запрограммировать решения для общих случаев.

    Это уже совсем иное! Именно это нужно программистам, по моему опыту.
    Я не плохо работаю с комплексными числами, но не могу себе представить как их использовать в реальной жизни.

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

Самое читаемое Разработка