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

Математика для программиста

Вступление

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

Основная мысль

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

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

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

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

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

Вполне логично. Однако стоит подумать про одну важную деталь, которую почти никто никогда не озвучивает. Дело в том, что ведь все компьютеры и ЭВМ работают с помощью математики. И что у истоков всего программирования стоит математика.

Вся программная арифметика связана с числами. В компьютерах используется бинарный код (1 и 0). Именно на этом коде и работают системы, начиная от операционных и заканчивая нейронными сетями. Всё, что связанно с вычислениями, всегда взаимодействует и цифрами.

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

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

Поэтому зачастую все стараются избежать изучения С/С++, Java и других подобных языков, а предпочитают уходить в веб-разработку, где процесс понимания направления и технологий более легкий, и платят не хуже.

Вывод

Задумайтесь, все сложные вещи пишутся на низких языках и включают математические знания. Конечно, нет необходимости учить весь курс вышмата, но если вы серьёзно захотите создать, например, свою ОС, написать крутой фреймворк, или уникальный искусственный интеллект, то без хороших математических знаний и соответствующих навыков в ЯП это будет сделать почти невозможно.

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

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

Источник

Математика для программиста

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

Нужна. А, кроме неё, нужна сферическая геометрия, география, музыка и банковское дело. И я сейчас не шучу.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Первое решение, которое может прийти в голову — это с помощью метода map собрать другой массив, массив ростов этих людей, а потом с помощью метода reduce посчитать их сумму и поделить на количество.

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

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

Итого: учите всё подряд, что попадётся вам под руку. Для начала изучите дискретку, потому что она будет вашим основным инструментом в работе, а потом сосредоточьтесь на задачах вашего бизнеса и вы откроете для себя очень много нового в бизнесе, математике, строительстве и медицине.

Источник

Математика для программиста: советы, разделы, литература

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

«Незнание математики грозит кашей в голове.»

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

Статья разделена на несколько частей:

Советы

Математика для программиста: основные разделы

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

Школьная программа:

Вузовская математика:

Источник

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

Авторизуйтесь

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

главный архитектор Virtuozzo

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

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

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

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

менеджер по работе с образовательными учреждениями в компании Embarcadero

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

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

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

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

руководитель отдела программных разработок и поддержки компании «ГЭНДАЛЬФ»

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

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

руководитель отдела разработки ПО компании ОС3

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

веб-разработчик в Evil Martians

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

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

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

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

Чем важна математика в программировании. Смотреть фото Чем важна математика в программировании. Смотреть картинку Чем важна математика в программировании. Картинка про Чем важна математика в программировании. Фото Чем важна математика в программировании

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

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

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

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

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

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

Источник

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

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