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

Я полагаю, что это зависит от точности базового объекта Float.

SymPy использует mpmath для предоставления чисел с плавающей запятой произвольной точности. Точность по умолчанию - 15 цифр, но вы можете установить любую точность. Похоже, что он использует научную нотацию, когда он не может представлять целое число с использованием заданной точности. Вы можете заставить заданную точность использовать, построив объект Float напрямую:

In [30]: Float('100', 3)
Out[30]: 100.

In [31]: Float('1000', 3)
Out[31]: 1.00e+3

Однако обратите внимание, что это повлияет и на другие вещи. Все цифры за три будут округлены.

In [32]: Float('1.23456', 3)
Out[32]: 1.23

Если вам не нужны дополнительные нули перед частью e+, вы можете передать настройку струнного принтера:

In [45]: from sympy.printing.str import StrPrinter

In [44]: StrPrinter({'full_prec': False}).doprint(Float('10000000', 5))
Out[44]: '1.0e+7'

Это изменяет строковый принтер, который используется для sstr или print. Похоже, что принтер LaTeX, который вы, вероятно, хотите использовать в ноутбуке, делает это автоматически.

Мы должны добавить более простой способ установить это, не изменяя точность. Параметры есть в mpmath, они просто не отображаются в принтерах SymPy. Я открыл https://github.com/sympy/sympy/issues/7847 для этого.

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

66 ответов

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

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

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

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

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

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

Я чувствую этот вопрос (который я получаю вполне немного), лучше всего отвечен с аналогией.

Многие из нас качаются. Почему? Это, потому что мы готовимся в течение того дня, когда мы становимся профессиональным тяжелоатлетом? Мы будем когда-либо встречаться с подъемом весов как требование задания?

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

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

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

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

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

Статистические методы машинного обучения становятся все больше важными.

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

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

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

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

Существуют некоторые положительные стороны к этому вопросу, по-моему.

, Поскольку David Nehme отправил здесь, информатика и программирование являются двумя совсем другими предметами.

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

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

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

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

Это не требуется намного, но...

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

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

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

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

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

при программировании веб-сайтов и баз данных Вам едва нужна алгебра 101.

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

Отвечать на вопрос: нет.

Математический талант и талант программирования: сильная корреляция, мало ни к какой причинной связи.

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

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

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

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

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

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

Оба... в зависимости от ситуации. Это не случай, "если Вы не с нами, Вы против нас".

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

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

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

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

я думаю, что вопрос действительно сводится к: " совершенствуется математика, необходимая для программирования?" и конечно, к то, что подвергают сомнению ответ, не..., если Вы не собираетесь начать входить в запись и/или взламывание алгоритмов шифрования (который является захватывающим предметом), или работающий с гидравлическими уравнениями как Mil системы указанного или управления потоком (как я имею в прошлом). Но я имел бы, добавляют, что, в то время как основная математика не может быть необходима , она сделает Вашу жизнь намного легче.

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

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

1
ответ дан Mike K. 2 February 2009 в 11:05
поделиться

Две вещи приходят на ум:

  • Контекст существен. Если Вы - игровой программист или в технической дисциплине, то математика может быть жизненно важной для Вашего задания. Я делаю базу данных и веб-разработку, поэтому математика уровня средней школы хорошо для меня.
  • Вы, очень вероятно, будете снова использовать чужой предварительно созданный математический код вместо изобретения велосипед, особенно в полях как шифрование и сжатие. (Это может также применяться, если Вы находитесь в игровой разработке с помощью стороннего инструмента физики или 3D механизма.) Наличие платформы проверенных на практике стандартных программ для использования в Ваших программах предотвращает ошибки и потенциальные слабые места безопасности - определенно хорошая вещь.
0
ответ дан Dave R. 2 February 2009 в 11:05
поделиться

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

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

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

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

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

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

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

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

я все еще рекомендовал бы лучший математический фон любому.

Дискретная математика очень полезна разработчику; у меня нет формального обучения в нем.

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

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

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

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

0
ответ дан Hans-Peter Störr 2 February 2009 в 11:05
поделиться
  • 1
    @dbau - Действительно. " Весь digits" не то же как " integer". – Rex Kerr 12 February 2014 в 07:55

Необходимый! = Достаточный

Прибывают в парней! в заголовке говорится" необходимый ", утверждал бы я, что это в лучшем случае достаточно условие быть в состоянии программировать хорошо. Точно так же, как их многие достаточные, но не необходимые условия: опыт 5 лет, Градус CS или любое научное образование.

Некоторые могли даже утверждать, что быть Поэтом или английским майором могло сделать Вас хорошим разработчиком API или что Художник мог быть способным к UI/веб-программированию.

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

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

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

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

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

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

Суть в том, что я верю в силу воли. Если вы хотите научиться этому, вы можете и хотите, это очень просто. Вам не нужно посещать занятия или тратить много денег, например, linux и qemu могут занять вас довольно долгое время, разные языки asm и т. Д.аварийные среды для разработки ядра, встроенные и т. д. Вы не ограничены этим, но я не верю, что вам нужно убегать и брать какие-либо классы, если вы не хотите. Если вы хотите обязательно взять несколько классов ee, несколько классов cs и несколько классов математики ..

4
ответ дан 24 November 2019 в 02:00
поделиться

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

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

Также убедитесь, что вы знаете, как вычислить что-либо в любой базе, особенно в базе 2, 8 и 16.

Кроме того, одним классом, который действительно принес мне некоторые концепции, был этот класс предварительного программирования. Нас учили объединениям, пересечениям и прочим счастливым вещам, и это почти в точности соответствует побитовой математике. И мы очень подробно рассмотрели булеву логику. Что я считал наиболее полезным, так это то, когда мы научились сокращать сложные логические операторы. Это было очень удобно:

(x|y) & (x|z) & (x|foo)

можно упростить до

x | (y & z & foo)

, что я раньше не совсем понимал.

4
ответ дан 24 November 2019 в 02:00
поделиться

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

Например, в теории планирования и оптимизации, которая лежит в основе многих планировщиков в современных ОС, есть много CS. Это пример того, что потребует некоторой математики, но не чего-то сверхсложного.

Но, честно говоря, для большинства вещей математика не нужна. Все, что вам нужно, - это научиться думать по основанию 2 и 16, например, уметь мысленно выполнять операции OR/AND. Например, если у вас есть байт, и в этом байте есть два 3-битных поля и 2 пустых бита, знание того, какие биты в каких полях активны, когда значение байта что-то вроде 11, сделает работу немного быстрее, чем использование ручки и бумаги.

4
ответ дан 24 November 2019 в 02:00
поделиться

По моему опыту, математика необходима в программировании, от нее никуда не деться. Все программирование основано на математике.

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

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

И не забывайте о родстве математики, логики и философии. Логика поможет вам эффективно использовать операторы case или switch . Философия поможет вам понять мышление человека, написавшего код, который вы изменяете.

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

6
ответ дан 24 November 2019 в 02:00
поделиться

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

13
ответ дан 24 November 2019 в 02:00
поделиться

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

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

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

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

29
ответ дан 24 November 2019 в 02:00
поделиться

Мой ответ абсолютно нет. Я был / являюсь (сейчас безработный, спасибо Индии) программистом более 25 лет. И за всю свою карьеру я НИКОГДА не сталкивался с программой LOGIC, которая требовала бы чего-то большего, чем базовые математические навыки. Если вы не работаете каждый день с математикой, которая выходит за рамки базовых математических навыков, необходимость в продвинутой математике отпадает. На корпоративном уровне любая сложная математика БУДЕТ передана статику или математику, который предоставит программисту необходимый псевдокод, и оба будут сотрудничать в тщательном тестировании конечного продукта. В конце концов, все дело в суде математического ботаника. На любом уровне, если вы не математик / статик / старший программист, мысль о том, что программист будет отвечать за ожидаемые результаты сложной математической компьютерной программы, абсурдна и очень безрассудна.

1
ответ дан 24 November 2019 в 02:00
поделиться

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

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

1
ответ дан 24 November 2019 в 02:00
поделиться

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

1
ответ дан 24 November 2019 в 02:00
поделиться

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

1
ответ дан 24 November 2019 в 02:00
поделиться

Я работаю игровым программистом в команде с художниками, дизайнерами игр, дизайнерами уровней. и т. д.

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

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

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

1
ответ дан 24 November 2019 в 02:00
поделиться

В университете мы читаем книгу Кнута, Грэма и Паташника «Конкретная математика». Это книга по математике с выбранными темами для студенты информатики. Несколько лет спустя я снова проверил книгу и заметил, что использовал каждую отдельную тему в книге хотя бы один раз (за исключением чисел Стирлинга).

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

0
ответ дан 24 November 2019 в 02:00
поделиться
Другие вопросы по тегам:

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