Нужна ли математика для программирования? [закрыто]

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

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

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

117
задан 4 revs, 4 users 62% 2 February 2009 в 11:05
поделиться

48 ответов

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

я начал программировать, когда мне было приблизительно 9 лет, и это будет фрагмент, чтобы сказать, что я изучил много математики тем этапом. Однако с небольшим количеством усилия я смог понять переменные для циклов, операторы перехода (простите мне, я был ОСНОВНЫМ Vic 20, и я еще не считал Dijkstra), и базовая координационная геометрия для помещения графики на экран.

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

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

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

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

111
ответ дан 3 revs, 3 users 91% 2 February 2009 в 11:05
поделиться
  • 1
    Спасибо сэр. I' ll делают, как Вы предполагаете. Теперь я просто должен выяснить, как иметь те хосты состояние доли среди себя, с помощью или активно-активного или активно-пассивного вида подхода. Это смотрит на меня как I' ll должен создать это и хотеть удостовериться I' m не создающий что-то that' s уже сделанный и готовый использовать в Akka, который вышел из моего уведомления. – Unoti 12 September 2010 в 08:47

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

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

4
ответ дан MusiGenesis 2 February 2009 в 11:05
поделиться

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

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

, Но быть профессиональным программистом в течение почти 10 лет (и еще 10 лет любитель) "более высокая математика" не является чем-то, в чем я нуждался regularily. Приблизительно в 99,8% всех случаев это только плюс, минус, разделение и умножение в некоторых интеллектуальных комбинациях - в большинстве случаев это об алгоритмах, не математике.

4
ответ дан BlaM 2 February 2009 в 11:05
поделиться

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

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

4
ответ дан Lucas Oman 2 February 2009 в 11:05
поделиться

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

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

5
ответ дан DrPizza 2 February 2009 в 11:05
поделиться

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

5
ответ дан Jimoc 2 February 2009 в 11:05
поделиться

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

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

, Математика поможет Вам к точке, но только к точке.

5
ответ дан Unsliced 2 February 2009 в 11:05
поделиться

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

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

5
ответ дан Oak 2 February 2009 в 11:05
поделиться

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

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

3
ответ дан Lehane 2 February 2009 в 11:05
поделиться

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

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

5
ответ дан WalkingRandomly 2 February 2009 в 11:05
поделиться

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

, Если Вы - разработчик игр и должны работать с физикой много - понимание математики крайне важно. Если Вы работаете с усовершенствованными визуальными средствами управления - Вы не могли бы сделать многого без геометрии. Если бы Вы планируете сделать некоторые финансовые вычисления - это ДЕЙСТВИТЕЛЬНО помогло бы иметь основательное знание статистики.

, С другой стороны, за прошлые 5 лет у меня было только 2 или 3 проекта, где ЛЮБАЯ сумма математики требовалась вообще. Из них было только 1 возникновение, когда поиск Google не помог.

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

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

6
ответ дан Ilya Kochetov 2 February 2009 в 11:05
поделиться
  • 1
    +1. Я не соглашаюсь с дополнительным дискомфортом уровня абстракции. Любой делающий многопоточность должен, конечно, знать, что блокировка взаимного исключения является дорогостоящей операцией там. Дополнительный уровень абстракции не составит почти ничто по сравнению с самой блокировкой. – David Rodríguez - dribeas 22 March 2010 в 22:15

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

Однако при контакте с жестким материалом, таким как:

  • Вычисление траекторий для управления роботом
  • Создающие подобные АЙ приложения для поддержки неуверенности и автоматического обоснования
  • Проигрывание с 3-D движением и графикой

Некоторое усовершенствованное знание математики могло бы пригодиться. И это не похоже, они - "out-of-this мировые" проблемы.

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

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

9
ответ дан rshimoda 2 February 2009 в 11:05
поделиться
  • 1
    Я думаю, что Вы неправильно поняли статью, единственная причина, что volatile ключевое слово используется, из-за того, что это подразумевает во время компиляции, не во времени выполнения. Во время времени выполнения все использование (что компиляция) удаляет volatile спецификатор прежде, чем воздействовать на экземпляр: нет никакого volatile в скомпилированном коде, поскольку все использование проходит const_cast - указатель редактора в LockPtr, который является энергонезависимым – David Rodríguez - dribeas 22 March 2010 в 22:19

Какое программирование?

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

Компьютерная графика требует большой суммы усовершенствованной математики. Большое академическое программирование требует усовершенствованной математики.

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

я надеюсь, что этот слабый ответ помогает.

8
ответ дан 2 revs, 2 users 70% 2 February 2009 в 11:05
поделиться
  • 1
    От статьи Вы связываетесь с, " Hans Boehm указывает, что существует только три портативного использования для volatile". Hans Boehm ошибается (хотя не способом он должен стыдиться) - Alexandrescu представил четвертое использование энергозависимых, которое должно полагаться на его стиль константы заразное поведение, а не на его семантике, касающейся доступа к памяти. – Steve Jessop 22 March 2010 в 23:13

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

14
ответ дан Kibbee 2 February 2009 в 11:05
поделиться
  • 1
    Я ненавижу долгие вопросы, которые имеют вводящий в заблуждение заголовок;-) – Malkocoglu 27 March 2010 в 00:23

Это зависит от того, что Вы делаете. Если Вы делаете большое 3D программирование, знание 3D геометрии, конечно, необходимо, разве Вы не соглашаетесь?;-) Если Вы хотите создать новый формат изображения как JPG или новый формат аудио как MP3, Вы также довольно потеряны, если Вы не можете понять косинус или преобразование Фурье, поскольку это основы, наиболее сжатие с потерями на основе. Много других проблем могут быть разрешены лучше, если Вы знаете свою математику скорее хорошо.

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

14
ответ дан 2 revs, 2 users 67% 2 February 2009 в 11:05
поделиться
  • 1
    Причина использования volatile вместо тега состоит в том, что система типов может использовать это во время компиляции для установки флага недопустимых доступов. Теперь, когда Вы упоминаете это, я должен был бы думать, могло ли что-то на основе тега работать... – David Rodríguez - dribeas 3 February 2011 в 05:50

Я буду идти вразрез с мелкой частицей здесь и говорить "Да"

, я переключаюсь от Гражданского строительства до программирования (Бетон Сосет!). Мое математическое образование состоит из обычного первого материала года, второе и третье Исчисление года (Различный EQ, интеграция объема, Ряд, преобразования Фурье и преобразования Лапласа) и Числовой Аналитический ход.

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

14
ответ дан Chris Cudmore 2 February 2009 в 11:05
поделиться
  • 1
    Я попробовал столько, сколько я не мог для введения в заблуждение, но трудно записать надлежащий заголовок для этого. I' ll берут предложения, если у Вас есть кто-либо. – David Rodríguez - dribeas 3 February 2011 в 06:04

информатика! = программирование

хорошо, серьезно, я знаю хороших и плохих программистов, которые были англичанами и студенты Психологии и некоторые, которые были студентами Информатики. У некоторых очень известных парней, которыми я восхищаюсь как разработчики, не было фона CS. Larry Wall (Perl), например, был лингвистом. С другой стороны, это помогает знать что-то о домене, Вы продолжаете работать, потому что затем можно, по крайней мере, видеть, имеют ли данные смысл, и помогите клиенту/пользователям выполнить развертку к тому, что они действительно хотят. И да, существует проблема вычислительной сложности и эффективных структур данных и правильности программы. Это - материал, который Вы изучаете в Информатике, и это полезно для знания почти в любом домене, но это не необходимо и не достаточно.

39
ответ дан 3 revs 2 February 2009 в 11:05
поделиться
  • 1
    Если Вы прочитаете статью и кодируете тщательно, то Вы будете видеть, что переменная, когда используемый, не volatile (спецификатор удален через const_cast). Это - просто прием времени компиляции. Целая потокобезопасность, как @Malkocoglu указывает, правильно обрабатывается через взаимное исключение. Я предполагаю, что беспорядок является большим недостатком подхода – David Rodríguez - dribeas 22 March 2010 в 22:21

Я соглашаюсь с Chris. Я сказал бы "Да", также. Но это зависит от Вашего рынка как указано выше. Если Вы просто создаете некоторые основные "стандартные" приложения или пишете инструменты для помощи повседневной работе... затем математика не почти как важная.

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

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

6
ответ дан MaTT 2 February 2009 в 11:05
поделиться

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

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

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

26
ответ дан Jon Skeet 2 February 2009 в 11:05
поделиться
  • 1
    - 1: Я колебался downvoting это, но в конечном счете я сделал, потому что энергозависимый не используется в статье или этом сообщении, чтобы удостовериться, чтобы выполнения с изменением последовательности произошли certian способом. Его используемый для усиления compiler' s система типов, таким образом, Ваше сообщение не относится к вопросу. – John Dibling 23 March 2010 в 00:40

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

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

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

56
ответ дан Jarrett Meyer 2 February 2009 в 11:05
поделиться

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

5
ответ дан Manrico Corazzi 2 February 2009 в 11:05
поделиться

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

3
ответ дан Jim C 2 February 2009 в 11:05
поделиться

Программирование является инструментом информатики.

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

<час>

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

3
ответ дан 2 revs, 2 users 63% 2 February 2009 в 11:05
поделиться

Бизнес-программирование: арифметика, некоторая алгебра

Разработка: числовой анализ

Научное программирование: небо предел

0
ответ дан 2 revs, 2 users 75% 2 February 2009 в 11:05
поделиться

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

0
ответ дан jm4 2 February 2009 в 11:05
поделиться

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

Информатика, будучи математической дисциплиной, конечно, требует большого количества математики. Но немного заданий программирования являются производными науки аккомпанемента, CS является очень определенной дисциплиной. Существует причина, почему школы IT теперь имеют Разработку программного обеспечения как отдельную дисциплину от CS. Они - совсем другие поля.

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

2
ответ дан Scott Alan Miller 2 February 2009 в 11:05
поделиться

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

Думают о нем как автомобиль. То, сколько математики/физики делают Вы думаете, находится позади вещей как торможение ABS и регулирование тягового усилия? Партии. Сколько математики необходимо знать для использования тех инструментов? Ни один.

РЕДАКТИРОВАНИЕ: Одна вещь добавить. Промышленность, вероятно, важна здесь. Программисту, работающему в исследовательской фирме или пишущему встроенные противобуксовочные системы для того автомобиля, вероятно, намного более вероятно, будет нужна математика, чем Ваш средний программист бизнес-инструмента.

2
ответ дан CodeRedick 2 February 2009 в 11:05
поделиться

См. также , Programmng == Математика? от stackoverflow.

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

0
ответ дан 2 revs 2 February 2009 в 11:05
поделиться

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

0
ответ дан Jeff 2 February 2009 в 11:05
поделиться

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

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

(Если Вы делаете 3D игровое программирование или некоторое другое определенное поле программирования, Вам, возможно, каждый день понадобился бы он Вы)

0
ответ дан Martin Liesén 2 February 2009 в 11:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: