Подтвердить что ты не робот

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

Это не "математика, необходимая для программирования"? вопрос.

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

и т.д. Различные из них требуют различных уровней и аспектов математики.

Ответ 2

Игра и симуляция - очевидные ответы. Математика не сложна, но она явно там.

Например, скажите, что вы хотите создать какую-то игру астероидов. Вам нужно будет выяснить положение вашего космического корабля. Это вектор. Теперь вы хотите, чтобы корабль путешествовал в определенном направлении в определенном направлении в каждом кадре. Вам нужно добавить какой-то дельта-x в x и delta-y в y, поэтому ваше движение - это еще один вектор:. В игре с астероидами вы ускоряетесь в направлении, о котором вы указываете, поэтому всякий раз, когда вы нажимаете клавишу "тяги", вам нужно вычислить дельта dx и dy или вектор ускорения

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

Но это не все. Если вы сейчас действуете, я заберу несколько триггеров. Обычно вы считаете движение и ускорение как угол и расстояние (r и тета), но язык программирования обычно нуждается в этих значениях в формате dx, dy. Здесь, где вы будете использовать некоторый триггер: dx = r * cos (theta) и dy = r * sin (theta)

Но, скажем, вы хотите иметь планету с гравитационным тяжестью? Вам нужно будет приблизиться к гравитации таким образом, чтобы вы могли вести себя по орбите (эллиптические орбиты, стрельбы изменяли высоту другой стороны орбиты и т.д.). Это проще всего сделать, если вы понимаете закон всемирного тяготения Ньютона: f = ((sqrt (m1 * m2))/d ^ 2) * G. Это говорит о том, насколько "планетарная" сила добавляет к вашему кораблю каждый кадр. Многозначно это значение обозначается нормализованным вектором, указывающим с космического корабля на планету, и добавьте это как новый вектор движения.

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

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

Извлеките это, и вы создали сумму Римана, основную идею интеграции (и фактически исчисления)

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

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

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

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

Ответ 3

Здесь несколько общих мест:

  • Графика
  • Криптография
  • Статистика
  • Сжатие
  • Оптимизация

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

Ответ 4

Любой вид численного анализа, например, в геофизике или разведке нефти.

Я когда-то создавал инструмент для исследователей, требующих многого тригонометрии.

В коммерческом программировании не столько математика, сколько арифметика.

Ответ 5

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

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

Существует довольно известное эссе Эдсера У. Дейкстры, которое он пытается ответить на ваш точный вопрос. Он называется: О взаимодействии между математикой и программированием.

Ответ 6

Игровое программирование (особенно 3-D, как вы упомянули) имеет много "более продвинутых" математиков. В любом случае, любые проекты, в которых вы моделируете систему (например, физическое моделирование).

Crypto также использует разные формы математики.

Ответ 7

Робототехника требует хардкорных матриц, а ИИ требует всех видов математики.

Ответ 8

Довольно много комплексной (иш) математики в финансовом секторе. Помимо этого и Trig for 3d я не могу честно думать о многом.

Я уверен, что есть некоторые.

Ответ 9

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

Ответ 10

Цифровая обработка сигналов и AI/имитация/агенты - это другие.

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

Ответ 11

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

(!something) && (!otherThing)
!(something || otherThing)

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

Ответ 12

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

Ответ 13

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

Ответ 14

Статистика широко используется в компаниях, осуществляющих контроль качества и анализ качества. Моя первая работа по разработке заключалась в контракте в Министерстве сельского хозяйства США; они были стандартными приложениями "бизнес-бизнеса", за исключением того, что их бизнес-бизнес вызвал большой статистический анализ!

Ответ 15

Программирование - математика. (В большинстве случаев это очень простая математика, но она всегда математика.)

Ответ 16

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

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

Ответ 17

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

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

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

Ответ 18

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

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