beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2023-08-26 10:56 pm

Программирование и математика

"Чем заняться в программировании человеку, который не знает математику на уровне начальной школы?" спрашивает коллега.

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

Но да, площадь треугольника или прямоугольника - методически годная задача. И проверять удобно. Как, например, все 100500 тригонометрических уравнений, которые я в школе решал - легко сгенерить, можно проверить, никакого практического смысла.
gul_kiev: (Default)

[personal profile] gul_kiev 2023-08-28 01:06 pm (UTC)(link)
Обычно человек под "математикой" понимает те области математики, которые представляют для него хоть какую-то трудность, а то, что "само собой разумеется", он не замечает.
Например, если под математикой понимать неопределённые интегралы, ряды Тейлора и Жорданову форму матриц, то да, в программировании это пригодится очень вряд ли. А чтобы соваться в криптографию, вряд ли кому-то окажется достаточно уже имеющихся знаний математики и не потребуется отдельно изучать варианты доказательства с нулевым разглашением, постквантовые алгоритмы и т.п.

Но я сталкивался с тем, что для людей (программистов) становится проблемой логарифмический масштаб (потому что слово "логарифм" воспринимается примерно как "мартингал", т.е. непонятный и пугающий математический термин) или оценка сложности алгоритма или прикинуть необходимый размер для очереди запросов, если известна частота в пике, продолжительность пика и скорость обработки, или посчитать сумму чисел 1+2+3+...+n (бывает такое в программировании), или посчитать среднее значение для массива (или, тем более, медианное или персентиль)... То есть, люди спотыкаются там, где человек с базовыми знаниями математики проходит и не замечает.

Хотя, например, знание английского для программиста намного важнее, чем знание математики.
livelight: (starlight)

[personal profile] livelight 2023-08-28 01:47 pm (UTC)(link)
При попытке сложить много каких-нибудь запросов в очередь есть две самых страшных проблемы: если очередь переполнится, и если она НЕ переполнится :)

А в остальном математика - это примерно вот это всё: https://www.youtube.com/watch?v=OmJ-4B-mS-Y
Она не исчерпывается арифметикой, даже если это высшая арифметика (ака Теория Чисел), или арифметика над матрицами с комплексными числами.