Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Должен ли продвинутый программист понимать в математике?

Какие разделы важны для роста, что нужно уметь? Где можно подучиться этому?
Вопрос задан в рамках подготовки материала для соцсетей и гипертемы. Подробности тут.
ТехнологииПрограммирование+3
  · 44,4 K
Веб-разработчик, геймер, специалист по этике  · 16 янв 2022
"Должен" ли он? Если честно, вряд ли. Разработка ПО как таковая, сам процесс написания и структурирования исходного кода программы, не требует знания математики, ни школьной, ни университетской. Всё зависит от задач, которые вы решаете. Понятное дело, если вы пишете физический движок для моделирования уравнений Навье-Стокса, то вам понадобится чуток больше и совсем других математических знаний, чем если бы вы занимались штамповкой продающих лэндингов на заказ и генерацией воронок продаж с них.
Если открыть книги безусловно продвинутых программистов - Мартина Фаулера, банды четырёх, Роберта Мартина, Джоэла Спольски, Эндрю Ханта и Дэвида Томаса, Кента Бека, Эрика Эванса и других - то мы не увидим в них математики. Самое большее, какие-то элементарные арифметические знания на бытовом уровне. Дроби, проценты, вероятности.
Однако, я могу осторожно предположить, что "продвинутый программист" ассоциируется с фразой "понимает в математике", потому что так получилось и потому что книги по алгоритмизации ассоциируются с математикой. Продвинутый разработчик ПО, безусловно, должен знать алгоритмизацию и структуры данных, а это относят к дискретной математике.
Опять же, "понимать в математике" - что это значит? Уметь самостоятельно вывести доказательство какого-то математического результата? Нафиг не надо. Уметь самостоятельно прочитать монографию по Банаховым пространствам, которые векторные нормированные, полные по метрике, порождённой нормой? Вообще не в кассу. Решать дифференциальные уравнения, вычислять криволинейные интегралы? Всё это уже один раз было решено, насмерть оптимизировано и больше с нуля выводить не рекомендуется.
Традиционно к математике, желательной в компьютерных науках, относят дискретку - булеву алгебру, теорию графов, теорию множеств - и теорию алгоритмов, которая к математике относится примерно так же, как химия относится к физике.
Я из своего университетского курса прикладной математики, который прошёл в 2006-2011 годах, сказал бы, что мне каждый день пригождается как раз булева алгебра, теория графов и теория множеств. Теория вероятности и матстат пригодились вообще в целом для общего развития, ну да их теперь аж в средней школе читают. И правильно делают.
В геймдеве, безусловно, очень нужна векторная алгебра и матрицы. Для некоторых специфических задач мне были бы полезны вещи из теории игр и динамического программирования, но мне не ставят такие задачи, а теория игр к математике относится примерно так же, как к теоретической физике относится сопромат.
То, что ожидается от действительно продвинутого программиста, отлично написано в Code Complete МакКоннелла, "Идеальном программисте" и "Чистом коде" Мартина, и в The Pragmatic Programmer Ханта и Томаса. Первые две книги есть на русском.
Чистая математика, полезная для алгоритмиста, собрана в книге Concrete Mathematics, которую составили Грэхэм и Кнут, на минуточку, автор буквально легендарного The Art of Computer Programming. TAoCP тоже включает в себя главу с перечислением необходимых, по мнению Кнута, математических знаний для программиста.
3 эксперта согласны
Вы случайно не Герман Греф? Просто его "философия". Математические дисциплины прежде всего тренируют мозг,... Читать дальше
Учёный, доктор наук, математика, информатика и экономика. Математические и инструментальны...  · 19 янв 2022
Конечно, должен. Математика это не интегралы и диф. уравнения - это инструмент, язык описания моделей явлений и процессов. Много алгоритмов разработали именно математики. Нужны те разделы, которые требует решаемая задача. Материалов в сети по математике достаточно и можно найти любую информацию. Но не все тексты просты и понятны. специальные курсы нет смысла проходить... Читать далее
Образовательная платформа Хекслет  · 28 окт 2022  · ru.hexlet.io
Достаточно большая часть задач повседневных задач, которые встают перед программистами решается без применения математики. Набросать страницу, создать небольшое CRUD-приложение (приложение где происходят базовые действия над сущностями: создание, изменение, удаление), поработать с БД или очередями. Всё это можно делать буквально по документации, не вдаваясь в то, что... Читать далее
Помогаем новичкам освоить профессию веб-разработчикаПерейти на ru.hexlet.io/webinars
программист  · 12 мая 2022
План такой: use-case когда математика нужна (для затравки) почему математика почти всегда не нужна (и что нужно) если нужна математика, то что наиболее часто теория графов, что типовое нужно Поехали. 1. В принципе некоторые разделы Software Engineering проще переоткрыть (и немного доделать напильником) самому, чем штудировать мануалы (в которых часто "за деревьями леса... Читать далее
Благотворитель, предприниматель, бизнесвумен, волонтер, капиталист, демократ, спортсменка-...  · 9 янв 2022  · it-life74.ru
Думаю, что должен. Ведь само программирование, это и есть 90% математика и геометрия цифр в пространстве. Без неё не инженерии , а программирование , лично для меня это инженерное образование.
Ваш друг Павла ХейнПерейти на it-life74.ru
2 эксперта согласны
Научные заметки о жизни: zen.yandex.ru/id/5c43498395753900ac66852d  · 10 мая 2022
"Программист" не профессия, а признак принадлежности к огромной отрасли с множеством разнообразных профессий. В этой отрасли есть свои ученые, инженеры, рабочие, подсобники, маркетологи и кустари-одиночки. И всех их называют программистами. В зависимости от конкретного рабочего места и функциональных обязанностей формируются и требования к работнику. Где-то достаточно... Читать далее
1 эксперт согласен
Yriy
подтверждает
10 мая 2022
Мышление программиста это креативный процесс познания мира алгоритмами, системами и обязательным тестированием для... Читать дальше
Геймдизайнер. Мастер дискуссии и срачей. Имею опыт обучения других геймдизайнеров.  · 13 мая 2022
Было бы странно, если б программист графики не знал, как работать с матрицами и кватернионами. Или программист ИИ не слышал бы про цепи Маркова. Или инженер высоконагруженных систем не владел бы комбинаторикой и матанализом.
1 эксперт согласен
Ответ реверсивный, но верный.
Увлечения: Аэродинамика, физика.  · 19 февр 2022
Вопрос скользкий и именно для нашей страны. Если программист живет и работает на западе, то не должен. В развитых странах существует такая профессия как: "Постановщик компьютерной программы". Это человек, который объясняет программисту как должна выглядеть программа и что она должна делать. А программист должен в совершенстве знать код своего языка программирования и... Читать далее
4 эксперта согласны
по большей части так и есть… ответ скорее верен...
Первый
Программист java, javascript. Люблю программировать как на работе, так и в свободное...  · 21 февр 2022
Программист для роста должен уметь учиться: бысто искать, обрабатывать и применять информацию из любой области.
Технологии меняются очень быстро. И что бы именно рости, надо успевать за потребностями рынка.
А математика как таковая - это тоже область знаний. Если требуется по ТехЗаданию, то надо быстро найти информацию, понять и применить.
3 эксперта согласны
Коротко и по делу. Согласен с каждым утверждением.
Член ММО - Московского математического Общества. Кстати, старейшего в мире. Л.М. Коганов.  · 13 мая 2022
Математика как профессия, весьма многогранная, в основе содержит формулировку и доказательство / условно - делание теорем. В том числе решение естественно возникших просто формулируемых, трудно доказываемых, многие годы стоЯщих задач. Раньше программированием занимались в основном математики - профи, как-то указанный Коллегами Д.Э.Кнут и лица, которых я знал. Проходят... Читать далее
3 эксперта согласны
Математика - царица наук. Да, я уже не помню очень многое, но черт подери, как же были увлекательны времена... Читать дальше