Я занимаюсь программированием 8 лет профессионально, а с 12 лет - как хобби.
Математика не нужна, логика есть. Однако математика ужасно полезна: сказать, что в этом нет необходимости, все равно что сказать, что для убийства человека не нужно оружие, вы можете использовать нож. Что ж, это правда, но этот пистолет значительно упрощает задачу.
Есть пара голых минимумов, которые вы уже должны соблюдать. Вам необходимо знать основные алгебраические выражения и обозначения, а также общие компьютерные эквиваленты. Например, вам нужно знать, что такое экспонента (от 3 до 3 - 27), а обычное компьютерное выражение - 3 ^ 3. Общие обозначения алгебры действительно меняются между языками, но многие из них используют несколько унифицированную методологию. Другие (глядя на вас LISP) - нет. Вам также необходимо знать порядок действий.
Вам нужно понимать алгоритмическое мышление. Сначала это, затем это производит то, что используется в этом вычислении. Скорее всего, вы это понимаете или нет, и это довольно трудное препятствие, чтобы преодолеть его, если вы этого не понимаете; Я обнаружил, что это то, что вы «получаете», а не то, чему вы действительно можете научиться. И наоборот, некоторые люди не «понимают» искусство. Они не должны становиться художниками. Кроме того, в программе CS были студенты, которые не могли понять, почему это не работает: x = z + w; z = 3; у = 5; Дело не в том, что они не понимают сложения, а в том, что они не понимают требования однозначного выражения. Если они это понимают, компьютер тоже должен, верно? Если вы не видите, что не так в трех приведенных выше строках, не становитесь программистом.
Наконец, вам необходимо знать математику, которая относится к вашей области программирования. Бухгалтерское программное обеспечение могло бы остановиться на элементарной алгебре. Если вы занимаетесь программированием физики, вам необходимо знать физику (в общих чертах) и математику в трехмерной геометрии (евклидову). Если вы программируете программное обеспечение для архитектуры, вам необходимо знать тригонометрию.
Однако это идет дальше математики; в какой бы области вы ни программировали, вам необходимо хорошо понимать основы. Если вы занимаетесь программным обеспечением для анализа языков программирования, вам необходимо знать вероятность, статистику, теорию грамматики (несколько языков) и т. Д.
Часто определенные области нуждаются в знаниях, которые, как вы думаете, не связаны между собой, или могут извлечь из них пользу. Например, если вы программировали программное обеспечение для аудио, вам действительно нужно знать тригонометрию, чтобы работать с формами волны.
Величина тоже меняет вещи. Если вы сортируете набор финансовых данных из 1000 элементов, в этом нет ничего страшного. Однако, если бы это было 10 миллионов записей, вы бы очень выиграли от знания векторной математики и глубокого понимания сортировки на двоичном уровне (как система сортирует по алфавиту? Как она узнает, что 'a' меньше 'b ?)
Вы обнаружите, что как программист ваша общая база знаний резко возрастет, потому что каждый проект потребует большего обучения за пределами непосредственной сферы программирования. Если вы брезгливы или ленивы в отношении самообучения и вам не нравится идея тратить 10+ часов в неделю на выполнение «домашнего задания», не становитесь программистом.
Если вам нравятся мыслительные упражнения, если вам нравится учиться, если вы можете думать об абстрактных вещах, таких как математика, без калькулятора или дизайн без блокнота, если у вас широкие вкусы в жизни и хобби, если вы самокритичны и можете выбросить '' избранные идеи, если вам нравится совершенствовать вещи, то станьте программистом. Принимайте это решение не на основе математики, а, скорее, на способности логически мыслить и учиться. Это то, что важно; математика - это всего лишь побочный продукт.