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


Оглавление (нажмите, чтобы открыть):

Математика в программировании

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

Математика, математика и еще раз математика! © Товарищ математик

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

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

  • аналитическая алгебра и геометрия
  • математическая логика
  • математический анализ
  • теория вероятности и математическая статистика
  • дискретная математика
  • линейная алгебра
  • численные методы
  • etc

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

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Москва. В Яндексе — 10 лет.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мастер Йода рекомендует:  Создаем тему WordPress на базе статического HTML Настройка заголовка

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

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

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

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

Я попытаюсь внести ясность в этот вопрос.
Дело в том, что программирование бывает разное.

Очень разное. Есть программисты микроконтроллеров и программисты веб-сайтов, есть разработчики 3D движков для игр, и есть создатели банковских форм. Есть программисты, разрабатывающие искусственный интеллект наподобие IBM Watson, и есть кодеры взломщиков КАПЧ.

Правда в том, что некоторым из них математика необходима, а некоторым за глаза достаточно математики на уровне 9 класса школы.

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

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

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

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

Если вам это нравится — делайте это. Если не нравится — не делайте. Работа найдётся для каждого.

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

Об авторе

Привет. Меня зовут Дима Стефанцов, этот сайт и все статьи здесь я делаю и пишу сам. Поэтому получается очень хорошо.

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

Помогает ли знание математики в программировании или программирование улучшает математические навыки?

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

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


Но многих при этом волнует – насколько для этого надо владеть математическими навыками.

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

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

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

Хотите знать разницу? Калькулятор выполняет арифметические операции, но он не может решать математические задачи.

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

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

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

Полезно ли программирование для математики?

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

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

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Пригодилось ли Вам как программисту математическое образование?

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

P.S. Я уже задавал вопрос «Применяли ли Вы математику в программировании?» на этом форуме. Этот вопрос создавался для опроса. Дело в том, что я хочу понять, какой процент программистов считает своё математическое образование ценным.
P.P.S. Я прекрасно понимаю, что, скажем, применение дискретной математики встречается довольно часто. Поэтому вопрос касается восновном таких «дебрей», как мат. анализ, дифференциальные уравнения и т. п.
P.P.S. Похоже на то, что на этом форуме к теме нельзя прикрепить опрос. В таком случае прошу вас просто писать своё мнение в сообщении.

30.12.2009, 14:29

Нужна ли математика/образование программисту
Создаю платиновый тред: нужно ли математическое образование программисту, если для работы в.

Для чего программисту 1С нужно высшее техническое образование.
Очень часто вижу в требованиях на вакансю программиста 1С «Высшее техническое образование». Мне.

Высшее образование как web программист дистанционно
Здравствуйте! Мне необходимо получить высшее образование как web-программист (web-master).

Как убрать изначальное образование строчек при создании проекта?
Начнём с того, что я новичок. При создании проекта также создаётся пара строчек, что очень сильно.

30.12.2009, 15:33 2

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

30.12.2009, 18:16 3

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

30.12.2009, 18:24 4
30.12.2009, 18:24
26.01.2010, 00:05 5
26.01.2010, 18:09 6
26.01.2010, 18:15 7
26.01.2010, 18:33 8
26.01.2010, 21:26 9

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

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

Что должен знать и уметь хороший программист?

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

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

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

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

  • Стремление быть лучше, знать больше – саморазвитие.

Без постоянного саморазвития не стать хорошим программистом. IT-сфера развивается неустанно: появляются новые языки, фреймворки и другие инструменты. Регулярное обновление своих знаний, сомнения в том, что вы знаете «как правильно» приведут вас к успеху в карьере и сделают настоящим профессионалом.

  • Любовь к программированию

Каждый день идти на нелюбимую работу, чтобы писать нудный код… Думаем, это страх каждого: делать то, что не нравится. Прислушайтесь к себе, действительно ли к программированию лежит ваша душа. Давайте делать только то, что нам нравится, потому что тогда, это будет получаться лучше.

Так, в общих чертах мы понимаем, кто такой «хороший программист». Давайте теперь разберемся, что нужно знать программисту.

Какие знания нужны программисту?

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

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

  • Алгоритмы и структуры данных.

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

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

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

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

Необходимые знания для программистов

Программирование – это обширная область знаний, в которой могут потребоваться абсолютно разные знания. Вам может пригодиться не только математика, но и инженерия. В программировании существует множество областей, в каждой из которых нужны свои знания. Какие основные области программирования можно выделить?

  • Создание и отладка сайтов.
  • Разработка программ и приложений.
  • Тестирование.
  • Базы данных.
  • Системное администрирование.
  • Hardware программирование.

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

  • Базовый уровень подразумевает под собой изучение алгоритмов, основ ЭВМ, арифметических основ (логические операции, операции с числами), а также языков программирования. Эти знания по большей части являются своеобразным «скелетом» для более сложных дисциплин. Без них программирование невозможно.
  • На первом уровне вам могут понадобиться такие знания, как основы ASM, системный анализ, знание баз данных, языка C и C++, а также основных операционных систем.
  • Второй уровень предполагает изучение таких дисциплин, как анализ данных, знание языков Java и C#, а также компьютерных сетей. Не лишним будет научиться работать с нейронными сетями и ИИ.
  • Третий уровень – это «высший пилотаж», который считается самым объемным и непосредственно связан с разработкой ПО. В него входят интерпретируемые ЯП (Python, Ruby и др.), распределенные системы, веб-технологии, разработка интерфейсов пользователей, управление проектами.

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

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

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

    Но на вопрос о том, нужна ли программисту математика, сложно ответить однозначно. Одни утверждают, что в знании точных наук нет необходимости. Другие утверждают, что без математики невозможно стать настоящим профессионалом. Кто же прав? Как часто бывает, доля истины есть в каждом мнении.

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

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

    Опыт программистов

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

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

    В связи с этим возникает следующий вопрос – на каком уровне достаточно знать математику? Должен ли быть это уровень общеобразовательной школы или знания высшей математики, полученные в высшем учебном заведении?

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

    Алгоритмы вместо математики

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


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

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

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

    Дискретная математика

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

    Дискретная математика является одной из самых применимых областей в программировании. Дополнительным «бонусом» для разработчиков компьютерных игр станет знание линейной алгебры и геометрии.

    Как применяется дискретная математика в программировании? Основной областью считается применение графов, которые считаются одной из основных структур данных. Граф — это представление множества объектов как взаимосвязанных элементов. Сфера применения графов очень обширна, в нее входят и алгоритмы, которые помогают найти самое простое решение. Чаще всего графы используются в компиляторах и при создании поисковых систем. Например, при создании перекрестных ссылок, вам потребуется матрица смежности этих ссылок. Если вы захотите создать систему подсчета рейтинга, то также будет не обойтись без знания графов.

    Статистика

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

    Чаще всего знание статистики требуется в области Data Scientist. Не нужно бояться того, что от вас во время собеседования потребуют идеальных знаний предмета и нескольких десятилетий, посвященных этой теме. Нужно будет скорее продемонстрировать базовое понимание этого предмета. Математическая статистика в программировании нужна для создания отчетов и тестирования систем, а также для обработки данных и построения рабочих процессов. Некоторые части этих процессов есть во многих областях, поэтому знание статистики добавит вам бонусных баллов на собеседовании. В каких еще областях может понадобиться знание основ статистики?

    • Анализ производительности вычислительных систем.
    • Роботы для биржи.
    • Компьютерное зрение.
    • Нейросети.
    • Data mining.
    • Крипто-анализ.

    Какие предметы нужны для поступления на программиста

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

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

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

    Знание информатики и физики могут проверить на личном собеседовании или запрашивать результаты ЕГЭ. Для того, чтобы поступить в университет, нужно набрать не менее 30-40 баллов по каждому предмету. Это обеспечит вам минимальный необходимый балл. Но лучший результат будет гарантировать вам поступление в наиболее престижные вузы. На данный момент оптимальными считаются результаты по 65-75 баллов за каждый предмет. Выбор учебного заведения также очень важен. Но чересчур много внимания этому уделять тоже не стоит – в университете вам дадут необходимую базу, но большинство навыков придется получать самостоятельно.

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

    Как стать программистом самостоятельно

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

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

    • Если вы хотите работать в Front-end, то вам для работы потребуется знание баз данных, тестирования систем, дизайна, HTTP и CSS.
    • Системному программисту необходимо в совершенстве знать C++, Ассамблер, уметь разрабатывать ПО и знать английский язык.
    • Если вы хотите стать администратором базы данных, то нужно будет изучить способы оптимизации, теорию алгоритмов и научиться работать с SQL.
    • Тестировщику нужно знать Html, CSS и SQL. Также нужно выучить Python или Java.
    • Прикладной программист должен знать системы сборки, ООП, паттерны, ведение документации, вспомогательные библиотеки.
    • Для работы в области разработки веб-приложений нужно знать Javascript и уметь делать интерфейс, дружелюбный для пользователя.

    Нужна ли профильная математика на программиста? Для самостоятельного обучения, особенно на первых порах, это не требуется.

    Какие еще навыки могут потребоваться

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

    • Знание технического английского языка является обязательным для работы программистом. Ведь весь код и все программы пишутся именно на английском языке, да и по работе зачастую приходится общаться с иностранными коллегами.
    • Коллективная работа. Как ни удивительно, но многим кажется, что программирование — это одиночная работа, на которую лучше всего идти интровертам. Но это совсем не так. Для решения серьезных задач необходима командная работа, хорошие отношения с коллегами и взаимопомощь. Без этих качеств вы вряд ли сможете добиться значимых результатов.
    • Главное умение для программиста – это отнюдь не языки или знание математических законов, а навык пользоваться поисковыми системами. Без умения «гуглить» вы вряд ли сможете оперативно решать поставленные задачи, а всего на свете не может знать ни один человек.

    Что нужно сдать, чтобы стать программистом? Отнюдь не обязательно быть гением и сразу после университета иметь все перечисленные навыки. Большинство из них отлично нарабатываются со временем, главное, иметь желание это делать.

    Как приобрести первый опыт

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

    Самым тяжелым в начале карьеры для многих становится получение первого опыта. Зачастую компании не хотят брать новичков и требуют опыт не менее 2-3 лет. Но где же его взять, если устроиться на работу официально так сложно?

    • Начинайте писать свои строки кода как можно раньше. Не стоит дожидаться окончания обучения или даже первой главы книги. Чем раньше вы начнете, тем больше практики у вас будет. А там вы и сами не заметите, как код сложится в первые небольшие программы, а они – в проекты.
    • Если вы хотите набраться опыта, то можно податься и в open source. Там всегда нужны новые люди, даже не особо разбирающиеся пока в программировании.
    • Первые проекты можно найти на биржах фриланса. Выполняя небольшие проекты, вы не только получите первый опыт и деньги, но и научитесь работать во многих сферах программирования.

    Итоги

    При обучении на программиста нужна ли профильная математика? ЕГЭ при поступлении в высшее учебное заведение предполагает такие знания. Если же вы самостоятельно изучаете программирование, то достаточно будет узнать только определенные области. К ним относятся теория алгоритмов и дискретная математика.

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

    Как-то Dan Luu, разработчик железа в Google (работал научным сотрудником в Университете Техаса и во многих исследовательских лабораториях) услышал фразу: «Зачем учить матан и линейную алгебру, если уже есть Вольфрам Альфа «.

    Эти слова поначалу смутили Дэна — ведь он никогда не сожалел об изучении курса высшей математики в университете.

    Однако, когда первые эмоции сменились трезвым взглядом на вещи, Дэн задумался: а действительно, может ли знание высшей математики быть одним из главных критериев успешности в работе программиста? И может ли программист быть хорошим специалистом, не имея этих знаний?

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

    из девяти преподаваемых в университете математических дисциплин только три дисциплины я использовал постоянно (дифференциальное и интегральное исчисления, линейная алгебра, теория рядов и многомерных интегралов);

    три дисциплины из девяти несколько раз пригодились для решения краткосрочных задач (комбинаторика, корректирующие коды, теория вычислительного обучения);

    одна из девяти дисциплин мне бы пригодилась, если бы у меня не было под руками Интернета (матричный анализ);

    одна из девяти дисциплин мне пригодилась один раз (математическая экономика);

    и одна из девяти дисциплин мне не пригодилась ни разу (действительный анализ).

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

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

    Линейная алгебра: и пусть я мог обходиться без неё годами, сложно представить мою жизнь без неё и без матриц общего вида.

    Теория рядов и многомерных интегралов: см. Дифференциальное и интегральное исчисления.

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

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

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

    Действительный анализ: не могу вспомнить, где я его применял, но он полезен для понимания теории меры.

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

    Математическая экономика: однажды она мне пригодилась, когда проблему решило применение множителей Лагранжа.

    Итак, восемь из девяти дисциплин сослужили мне неплохую службу. Недурно.

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

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

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

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

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

    ∀ x, y, z

  • Главная ≫ Инфотека ≫ Информатика, компьютерные науки ≫ Насколько программисту нужно знание математики?

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

    Павел Емельянов, архитектор в департаменте серверной виртуализации Parallels. В середине 90-х и позднее — самый плодовитый генератор идей и кода в mainstream ядро Linux из России в целом и Parallels в частности. Завсегдатай тусовок (в том числе «только по приглашению») Linux community в режиме реального времени.

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

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

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

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

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

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

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

    Сергей Терлецкий, менеджер по работе с образовательными учреждениями в компании Embarcadero. Имеет более 12 лет опыта на ИТ рынке, начав свою карьеру как разработчик на C++. Ранее отвечал за крупные проекты в образовании в компании Softline, включая Федеральный проект «Первой помощи», проект по модернизации образования в Калужской области.

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

    Сергей Зефиров, программист с широким опытом работы: от микроконтроллеров, до кластеров с GPGPU. В настоящий момент занят работой над хранилищем для объектно-ориентированной БД. Имеет опыт программирования 23 года. Haskell использует уже 17 лет. Ведёт свой блог.

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

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


    Роман Юферев, руководитель направления ИТ-Менеджмент и Мониторинг в компании VIAcode. Работает с такими заказчиками как Microsoft, Amazon, McDonalds. Докладчик конференций: Agile Days, Pragmatic PM, Software People, CodeFest, SQA Days, Microsoft TechEd, Microsoft Management Summit, System Center Universe

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

    Василий Кобзарь, преподаватель GeekBrains. Системный администратор с 2002 года, работал среди прочего в Яндексе и Мастерхосте. Имеет широкий опыт и кругозор, специализируется на администрировании Linux. Занимался как эксплуатацией, так и разработкой. Следит за новыми технологиями и применяет их в своей работе.

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

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

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

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

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

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

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

    Олег Горшков, руководитель отдела системной интеграции ecommerce-студии Simtech Development (преподает курсах по программированию на PHP, 4 года подряд курирует и судействует номинацию по программированию на PHP самой крупной в Поволжье олимпиады по информационным технологиям «Волга IT»).

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

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

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

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

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

    Алексей Михайлишин, руководитель отдела разработки ПО компании ОС3. Один из основателей сообщества «Типичный программист».

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

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

    Андрей Ситник, веб-разработчик в Evil Martians («Злые марсиане», разрабатывает проекты для eBay, Groupon, РенТВ, RocketBank ). До этого работал в компаниях InSales, Тематические медиа. Докладчик IT-конференции «Стачка».?

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

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

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

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

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

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

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

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

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

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

    Владимир Голованов, ведущий разработчик Java Центра Финансовых Технологий.

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

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

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

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

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

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

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

    Скажите, господа программеры, насколько важно знание математики для программиста?

    У нас тут спор возник по этой теме, интересно узнать новые точки зрения.

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    2mav. Приятно слышать интиллигентного человека. Но есть законы психологии и педагогики и не нужно о них забывать. Если бы человек сразу попадал в состояние взрослое и трезвое, то многое в обществе было бы по другому (возможно хуже чем есть). К тому же не все способны понять аргументы без задевания эмоциональной стороны (нужно учитывать причины по которым человек сюда написал, а понять их не так уж и сложно). Кстати, если мне не изменяет память, то именно Вы решили сказать новое слово в увеличении числа графических библиотек и, возможно, будь аргументы против поострее, то могли бы передумать (просто нет смысла сильно флеймить человека реально что-то делающего, хоть российский менталитет и не имеет мягких способов лечения искривленных понятий — только вместе с головой. Читай: русского нельзя переубедить словами, а другими способами очень больно :-).

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Уважаемый anonymous! Перечитайте ещё раз мои сообщения на соседнем форуме и укажите пожалуйста где именно я указал на якобы существующие у меня проблемы с Линуксом. Заодно укажите, если не трудно, где именно я хоть раз косо посмотрел на эту Вашу любовь. Не забудьте указать на моё хвастовство этим. Если вы о звуковом монтаже, то мне кажется Линукс действительно, в отличие от BeOS для этого не предназначен, за что глубокое Сорри! Мои мнения по математике: 1. Прикладникам без определённой математической направленности математика не нужна. 2. Только человек, профессионально владеющий и занимающийся исключительно одним делом и может называться профессионалом. 3. Элементарная вежливость никогда никому ещё не вредила. А лично Вам желаю поменьше врать или внимательнее прочитывать тексты, и уж в любом случае не переносить обсуждение из одного форума в другой.

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    : Вот уж что действительно никому, кроме разработчиков железа не нужно,
    : так это знание железа. Слишком оно все разное, чтобы тратить силы на
    : разборки с чем-то конкретным.

    А уважаемый мною (и Вами, я думаю) Дональд Эрвин Кнут очень даже подробно
    рассматривает особенности железа в своих книгах. И ради этого не спешит
    переходить с машины MIX на языки высокого уровня.

    : Ответ не принят. Иди читай про машину Тьюринга. С твоим определением
    : ты никогда не сможешь доказать, к примеру, конечность времени исполнения
    : алгоритма, или же стоимость его относительно другого алгоритма.

    Вы делаете ЭТО именно при помощи машины Тьюринга? По-моему, на практике
    хватит и «функций декремента» циклов и рекурсии. Да и для оценок
    сложности, которые мне приходилсь делать, машина Тьюринга пока еще не
    пригодилась (Кнуту в его книгах, пока что тоже). Но теоретические исследования
    проблемы сложности лучше делать на ней, не спорю.

    Сергей Короп, skor@dux.net

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Когда некоторые утверждают, что им нужны для программирования не
    все разделы математики, а лишь некоторые, это свидетельствует
    о непонимании сути дела. Нужен ли программисту анализ алгоритмов?
    По-моему, нужен. А какой главный инструмент? Теория вероятностей.
    А как можно заниматься теорией вероятностей без навыков работы
    с рядами? А ряды — это матанализ. По-моему так. Вывод: матанализ
    программисту нужен.(И справочник не поможет, если все-таки нужно не
    просто оценить сходимость, а вычислить сумму ряда в замкнутом виде.
    Только практика, которой у меня, к примеру, увы, недостаточно.)

    Более того, программист должен в совершенстве (если он претендует
    на ответственные задачи) знать многие специфичные разделы математики.
    Например, можно быть прекрасным «чистым» математиком, не владея численным
    анализом. Программист *должен* хотя бы знать о его существовании и
    уметь воспользоваться в нужный момент. Не сделаешь этого — упадет
    очередная ракета (авария «Ариана» в 1996(?) году была вызвана неверной
    программой обработки показаний датчика).

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

    Мое мнение: нужно уделять максимум внимания классическому фундаменту
    (алгебра, матанализ, теория вероятностей и т.п.) и «околокомпьютерным»
    прикладным разделам (анализ алгоритмов, матлогика, теория КА, численные
    методы, сети Петри, графы, формальные грамматики, исследование операций,
    реляционная алгебра и т.д.), а остальное (кластер-анализ, ТВР,
    распознавание образов, . ) — по возможности, чтобы применить, если
    потребуется.

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

    Насчет отсутствия нужных предметов. Зачем сваливать все в кучу?
    Цель высшего образования — научить искать информацию самому.
    Библиотеки для того и существуют, чтобы в них работать.
    Книг хороших сейчас маловато, конечно. Но чисто математических
    вполне достаточно.

    Теперь по поводу увиденного (от разных авторов).

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

    Вы не задумывались о том, что Марковские цепи и алгоритмы Маркова — не
    совсем одно и то же?

    А может, вы слышали, что доказана алгоритмическая эквивалентность
    машин Тьюринга и алгоритмов Маркова (и с ними — частично-рекурсивных
    функций)?

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

    А как насчет тезиса Маркова о том, что *всякая* вычислимая функция представима
    алгоритмом Маркова?

    Сергей Короп, skor@dux.net

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Читаем последнее письмо товарища McFris. С одной стороны он призывает к корректности и в том же письме ведет себя некорректно «Элементарная вежливость никогда никому ещё не вредила. А лично Вам желаю поменьше врать » — слово «врать» несет психологически оттенок наезда. Психология говорит, что раз есть емоция, значит тут больное место в философских представлениях (есть проблемы с окружающей действительностью). К сожалению, изучение психологии не входит в сферу интересов нашего настоящего профессионала (вместе с математикой). Поэтому общение пойдет на доступном ему уровне. Кстати, следующая цитата тоже полна «вранья» и «отсутствия элементарной вежливости» — » обсуждении предыдущих статей уже описывал систему работы типичной фирмы и используемые в ней программы и соответственно ОС. Место для Линукс нашлось на 10%, с напрягом на 20%. Я думаю все здравомыслящие согласятся. А вот упомянуть про свою домашнюю систему в прошлый раз забыл. А это как раз BeOS. У неё нет наследственности, дикая скорость, 64бит файловая система, идеальный интерфейс которому не нужен любой коммандер или проводник. Настройки отделены от программ, нет тупого реестра, нет диска С. В ней нет бездарной расхлябоннасти Линукса в плане» Типичный диагноз: самолюбование, мания величия (эта эээ. «редиска» считает, что его ‘открытия’ здесь кому-то интересны и несут какую-то правду), потеря памяти, неспособность сделать логический вывод из посылок (как следствие отсутствия математической культуры). Профессионалу нужно быть культурным человеком, и не в смысле «Моцарта читала, марш у койку». Культура для технаря — это прежде всего математика, физика, философия науки и т.п. Я согласен, что все это лишнее в 95% рабочего времени. Но наступает момент когда оставшиеся 5% решают все. Когда нужно понять что и как делать, оценить ‘а стоит ли вообще этим заниматься’. Характерный пример поясняющий данный тезис: Гитлер высмеял своего чиновника из почтового ведомства, когда тот принес ему документы по атомной бомбе (ну не хватило ему технической культуры понять, что за этим что-то стоит).

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Дык в том и дело, что систему комманд процессора я за железо не считаю 😉 Железо — это всякие там порты/прерывания/тайминги.

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Doh. Конечно я перепутал, я имел в виду алгоритмы, а сказал цепи ( хорошо еще не процессы ). Меня знаете-ли недавно только по ОЦО отымели, вот я и заговариваюсь. Ну эквивалентны они, ну и что ? И что я сказал не так ?

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Господа! Все о чем Вы пишите это не математика, а информатика. Математика это нечто другое. И знать ее Вам необязательно, как, например, химию. А Ваши ряды, цепи Маркова, функ. анализ это, увы, только общеобразовательная программа 2 курса любого вуза.

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Вот это умник. Ты че думаешь, тут в институте что-ли не учился никто ? Ну какая это информатика ? И тем более это не общеобразовательные предметы. Это самая что ни на есть математика, и что-бы ее знать надо отучиться хотя-бы «2 курса», и не в любом, а в специальном ВУЗ’е. И вопрос здесь по моему идет о том, стоит ли тратить время на ее обучение.

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

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

    Re: Скажите, господа программеры, насколько важно знание математики для программиста?

    Ммммммм. прочитав все высказывания у мня появилось такое впечатление, что здесь стоит вопрос о первичности материи или сознания. Я думаяю, что информатика это наука, предмет которой, ни как не сопостовляется с предметом математики. И на мой взгляд «использование математики» в программировании это все равно, что «использование физики» в задачах химии. (понятия масса, объем и тд.). Но тем немение химия считается самостоятельной наукой. народ упомянал о матрицах в 3D. и тем самым ссылался на математику. а по моему понятие матрицы есть и в инормарике и такоеже как и в математике. кто виноват в том, что большинство людей (даже программеров) в первые получили знания о матрицах из мат. курсов?! народ так же упоминал о каких-то спец. прик. программах, в которых математика просто необходима. СОГЛАСЕН! . например прог. пакеты для мат. вычислений. НО. В создании таких программ учавтвует группа специалистов, как математиков, так и программистов. ВОПРОС в том, что была ли нужна математика программисту в создании еаких программ. Короче говоря — математика программисту не неужна. Ряды, матрицы и тд в математике матиматика а в информатике это информатика! А всем привержинцам обратного хочу сказать ВЫ НЕ ПРАВЫ. не обижайтесь за максимализм. это мое личное мнение.

    Мастер Йода рекомендует:  Падение стоимости акций Google будет недолгим
    Добавить комментарий