Вы должны быть хорошими в математике, чтобы быть хорошим программистом? [закрыто]


78

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

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


1
@ Марк Не обязательно. Изучение предмета и пристрастие к нему - две разные вещи.
Maxpm

3
Ты король? Или сиамские близнецы? Если нет, я предлагаю вам придерживаться "я", когда ссылаетесь на себя.
drxzcl

1
@jk - Вы правы , скорее всего physics.about.com/od/alberteinstein/p/einsteinpro.htm все еще думает , что есть хорошее количество техники для программирования; р
Гарет Claborn

3
Я думал, что никогда не любил математику. Позже я понял, что просто не доволен синтаксисом.
MrFox

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

Ответы:


83

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

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


6
Я хотел бы добавить, что я видел некоторых докторов наук по математике и физике, которые пишут ужасный код. Эти навыки частично совпадают, но они являются отдельными дисциплинами.
MrFox

133

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

Письмо - это общение, а математика / программирование - это процесс ясного, логического мышления (таким образом, что вы не можете делать ошибки; уравнение не уравновешивается, или программа не компилируется). В частности, это логическое мышление проявляется в:

  • Возможность оценить / понять различия между числами: O (n ^ 2) против O (lg (n)), интуитивно понятный смысл КБ против МБ против ГБ, насколько медленный диск по сравнению с оперативной памятью. Если вы не понимаете, насколько крошечный КБ по сравнению с ГБ, вы будете тратить время на оптимизацию вещей, которые не имеют значения.
  • Функции / функциональное программирование (есть ли совпадение, что уравнение f (x) = x ^ 2 так похоже на то, как вы написали бы этот метод? Слова «алгоритм» и «функция» существовали в мире математики задолго до Первый компьютер родился :-))
  • Базовая алгебра для создания и изменения ваших собственных уравнений, получения средних значений, базовой статистики

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


1
Математическое мышление против математического мышления: это как различие между знанием всех формул физики и возможностью точного отскока резинового мяча от щита на расстоянии 20 ярдов!
ТехШрик

9
Я добавлю, что многие хорошие программисты знают, как играть в шахматы или ходить :-)
xanatos

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

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

4
+1 Математика жизненно важна для понимания языков программирования, потому что это основа нашего ремесла. Большинство конструкций языка программирования, которые мы используем изо дня в день, взяты из математических дисциплин, таких как лямбда-исчисление.
MattDavey

53

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

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

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

Когда я был в школе в середине 80-х, когда домашние компьютеры были не очень распространены, я часто писал программы для решения домашних заданий по математике. Я часто не мог сделать это в своей голове, но я мог применить любую формулу, которая требовалась в качестве рутины программного обеспечения. Вам не нужно быть еще одним Пифагором, чтобы проработать самую длинную сторону прямоугольного треугольника, вам просто нужно уметь писать код a² + b² = h²на выбранном вами языке.


3
Финансы и бухгалтерский учет не что плохи, если вы не делаете варианты цены или что - то в этом роде.

5
Крис, у вас есть смысл, но даже с финансовыми приложениями вы, скорее всего, будете внедрять формулы, а не разрабатывать их.
Дэн Диплом

2
@Mark - Да, но я бы сказал, что понимание вопросов округления - это скорее вопрос знания правильного типа. Вам не нужно хорошо разбираться в математике, чтобы понять, что (например) десятичная дробь лучше, чем float для денежных значений. И я не думаю, что математик автоматически поймет, какой правильный тип данных использовать - это вопрос обучения.
Дэн Дипл

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

3
@Donal Fellows, формальная логика математика. И философы в любом случае признаны за их исторический вклад в математику, а также за математиков, которые мстили (например, изобретая некоторые странные вещи, такие как «монадология»).
SK-logic

30

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


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

1
Вы уверены, что вы хороший программист? :)
Рассел

17

Я думаю, что важно внимательно посмотреть, почему вы не любите математику.

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

Программирование! = Математика. Для меня это даже не «похоже» на математику (и я любил математику, несмотря на то, что к концу моего обучения в школе у ​​меня не получалось). Многие навыки, которые вы можете использовать в математике, полезны, необходимы даже в программировании, но многие программисты учат себя по большей части. Нелюбовь к математике в школе почти не влияет на ваши способности или удовольствие от программирования.


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

16

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


11
+1. Вам также понадобится математика, если вы хотите выполнять такие «высокоуровневые» вещи, как обработка сигналов, машинное обучение, компьютерное зрение, 3D-рендеринг, физическое моделирование, анимация, вычислительная геометрия, криптография и, возможно, многие другие области, которые я не могу придумать в настоящее время.
nikie

2
@nikie: Да, но это прикладная математика. Огромная разница. ^^
Габлин

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

14

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

Учтите также, что информатика - это подмножество математики: алгоритмы и формальная логика, на которых основано все программирование, являются в основном математикой .

Если вы ненавидите математику, вы будете ненавидеть программирование.


13

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

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


11

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


11

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

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

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

Результатом вышеизложенного является то, что вам должно быть удобно с числами - вы, безусловно, должны понять, почему «в мире есть 10 типов людей, тех, кто понимает двоичный код, и тех, кто не понимает». Но вы, вероятно, извините "2 + 2 = 5 ... для очень больших значений 2".


+1, это действительно удручает; Я на самом деле смеялся над этой шуткой.
Бен

10

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

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


9

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

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

Правда была в том, что программирование научило меня алгебре, потому что практически все это просто алгебраическое выражение.

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


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

7

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

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

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

Потому что независимо от того, как вы смотрите на это, на самом низком уровне все, что вы делаете, сводится к математике.


7

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

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

Точно так же понимание лямбда-исчисления было бы неоценимо для архитектора ОС или дизайнера языка.


7

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

В конечном счете, что хорошо для великого программиста, так это тот, кто способен понимать логику, рабочие процессы, может учиться на собственном примере и готов искать решения. Кроме того, вы ДОЛЖНЫ УЧИТЬСЯ БИЗНЕСОМ, для которого предназначены ваши заявки. Я ненавижу программистов, которые не любят бухгалтерский учет, но пишут приложения для учета. Они всегда делают неверные предположения и действительно замедляют развитие.

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

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

Я работал над системами учета и выставления счетов - и мне никогда не приходилось разбираться в Log (x), SIN, COS и т. Д. Для обработки главной книги или разрешения ввода данных. «Aging Journal» - это не «высокая математика», но критически важный для оценки проблем AP.

Если подумать, я никогда не встречал бухгалтера с научным калькулятором на своем столе!


5

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

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

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


5

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

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

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

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

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


1
Думать обо всех значениях как о цветах почти имеет БОЛЬШЕ смысла. Когда вы заходите слишком далеко от одного конца спектра, вы
попадаете

Градусы (как в 0 - 360, кроме 0 - 256) иногда тоже помогают =) Вам не нужно думать в числовом смысле о цветах или градусах настолько, насколько это «полное» значение.
Гарет Клаборн

5

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

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

Карри-Говард Корреспонденция показывает , что я имею в виду: в основном, в нем говорится , что математические доказательства и некоторые компьютерные программы «изоморфные», то есть, они разные способы написать то же самое. Конечно, на самом деле все сложнее, но я не математик, так что это лучшее объяснение, которое я могу дать. Надеюсь, это не слишком далеко от цели.

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


4

Это очень трудный вопрос, и он, вероятно, вызовет много споров.

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

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

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


4

Да, безусловно.

Даже обычное программирование бизнеса требует определенных навыков в математике.

Бизнес-программирование на заводе требует навыков работы с базами данных. Чтобы быть хорошим программистом баз данных, необходимо понимать, как работают базы данных, и какие алгоритмы использует процессор запросов при преобразовании ваших запросов. Без понимания пределов и производных (или даже базового понимания того, что линия y = x дважды пересекает линию y = x ^ 2), невозможно точно сравнить план запроса внутреннего соединения с хеш-соответствием и объединением с вложенным циклом план запроса.

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

Я бы сказал, что в какой-то момент нужно было иметь некоторый опыт со следующим:

  1. 3 семестра кальций
  2. Diff Eq
  3. Линейная алгебра
  4. Современная Алгебра
  5. Основная вероятность, подсчет и статистика

4

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

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


4

Я всегда считал , программирование не должно быть ничего , но математики.

Это просто не похоже на алгебру средней школы.


4

Математика - это зал программирования.

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

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

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


4

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

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

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

Программирование - это искусство. Математика - это искусство. Если вы объедините их обоих, вы станете лучшим художником.


Программирование - это просто прикладная логика, а на самом деле математика - это просто прикладная логика.
Рибальд Эдди

3

Нет.

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

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


3

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

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


3

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

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


3

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

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

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

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


3

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


1
Я полностью отношусь к вашим математическим оценкам. На самом деле я чувствую, что я не плохой программист и не ужасен в математике, но по какой-то причине я не могу преодолеть «среднюю» оценку по курсам по математике, как бы я ни старался.
Брайан Харрингтон

@ Брайан, я могу относиться к этому
Джейсон

3

Могут ли люди, которые не любят математику, стать хорошим программистом?

Нет, нет-нет, нет, да и нет!

Нет, потому что часто тебе это нужно.

(! (a | (! (b && c) || d) && (! e)))

Почему это не работает?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

это может быть переписано более абстрактным способом?

968 мс больше или меньше 0,7 с? Сколько МБ вам нужно, сколько ГГц у машины, будет достаточно байта - математика - это повседневная часть работы. Иногда явно и выше математика.

Всегда неявно ниже математика.

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

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

Однако - поскольку я не могу решить большинство из них (около 2/3 к настоящему времени), значит ли это, что я не люблю математику?

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.