Ответ на этот вопрос немножечко двоякий. Можно сказать, и «Да» и «Нет» и быть правдивым и в том и в другом случае.
Давайте посмотрим почему люди верят, что математика нужна всем программистам и нужна им всегда. Дело в том, что компьютерная наука как таковая весьма молодая наука. Поэтому исторически так получилось, что когда университеты создавали кафедры компьютерной науки или кафедры для инженера-программиста, компьютерные инженерии и так далее, то они создавали их на базе одной из двух кафедр. Это было либо – кафедра математики, либо – кафедра инженерии.
У первых математика вообще является очевидным: математика – это то, что они изучают. Естественно, получилось так, что большинство преподавателей преподавали программирование исходя из математики. Они говорили про математические модели, они выстраивали математические формулы, даже подходили к разработке программного обеспечения с точки зрения математика, а не с точки зрения программиста. С другой стороны, если они делали их на базе инженерии, то там математика все равно была везде, потому что инженерия как вы понимаете для математика – теоретическая, прикладная и так далее. Но всем математика была нужна и если спросить: «Нужна ли математика инженеру?» звучало весьма странно. Естественно нужна. Даже посмотрите на само слово «Инженер-программист». То есть по какой-то причине исторически так получилось, что программистов приписали к инженерам.
Но ведь это не совсем правильно. Если мы подумаем об этом, то можно было бы приписать их ко многим другим. К примеру, я могу сказать, что лингвистика очень сильно помогает программисту. Именно в этом есть ключ. Нужна ли программисту математика? Да, она нужна, если мы говорим о том, что, если она поможет программисту в решении определенных задач. Какие задачи вам поможет решить математика? В основном задачи, которые решены за вас какими-то библиотеками. Например, вы хотите написать на ассемблере для самого процессора какую ту библиотеку, к примеру библиотеку, которая будет высчитывать вам что-то. Естественно, вам нужна математика. В процессоре ограниченное количество операций и вам нужно все остальные операции суметь выразить теми операциями, которые делает процессор. У процессора нет квадратного корня и многих других задач. Вам нужно выразить одну вещь которую вы уже знаете, к который вы привыкли, как например на калькуляторе, она занимает всего лишь одну кнопку. Здесь вам придется ее выражать другими какими-то возможностями этого процессора. Поэтому вам нужна математика и какие-то ее знания. Или, например, вам надо занимать чем-либо, что связанно с 3D-графикой. Это проекция 3D-мира из одно геометрии в другую. Геометрия – это часть математики. Таким образом в этом случае вам нужна математика. В том случае, если вы не находитесь в первых рядах тех людей, которые делают что-то, что еще не было решено конкретными библиотеками, то в этом случае математика вам не нужна. Ведь все, что вы будете делать – это вызывать уже готовые библиотеки.
Возьмем, например, процедуры шифрования. Вам не стоит их реализовывать, потому что скорее всего вы программисты, вы не математики. Вы не знаете всех нюансов математических функций. Намного лучше вызвать уже написанную функцию за вас, а потом использовать результат того, что вы получаете обратно. Математика вам будет не нужна. Вам нужно будет знать, как программисту то, какие функции использовать, в какой последовательности. Вам нужно просто знать, что что-то там есть в этой библиотеке. Вам нужно знать, что шифрование без одностороннего ключа обратить нельзя. Вам нужно понимать, что есть слабое, сильное шифрование. Вы знаете, эти вещи, но реализовывать вы их не будете, потому что, математика вам не нужна. Таким образом, нужна ли математика программисту? Да, математика вам может помочь. Нет, математика вам не обязательна.
Тем не менее есть одна вещь, где математика помогает всем программистам. Это, например, математика, которая связана со сложностью алгоритма. Но что происходит там? Она там настолько простая, что если вы закончили шесть классов школы, то вы уже должны понять ее. Зачем вам изучать всю математику, если она вам не нужна? Естественно, ее понимание вам поможет. Если сказать, что вы знаете всю математику, то она вам поможет. Это тоже самое, если вы знаете лингвистику, то она вам поможет в программировании. Если вы знаете что-нибудь, например, о строении человеческого глаза и вы делаете обработки рисунков, то вам это поможет. Естественно это вам поможет. Любые знания вам помогут. Любые знания — это хорошо, но это не обязательные знания. Вы сможете построить, не зная всей математики, модель перевода из одной координаты в другую и создание проекции. В любом случае, если вы можете, вам стоит продвигаться вперед. Каким-то образом изучать математику. Каким-то образом изучать другие науки, если это вам интересно, оно вам поможет. Если вы считаете, например, что вам нужно знать всю математику, чтобы программировать обычные веб-приложения скорее всего вы сами себя обманываете. Вам намного лучше потратить немножечко времени на изучение парадигм программирования, разных способов программирования, разных способов создания прототипов и так далее. Вам это поможет лучше.