beldmit: (Программизм)
[personal profile] beldmit
"Чем заняться в программировании человеку, который не знает математику на уровне начальной школы?" спрашивает коллега.

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

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

Date: 2023-08-26 09:19 pm (UTC)
phd_ru: (Default)
From: [personal profile] phd_ru
Одобряю. ВотЪ я, например, программист неплохой. А математик никакой совсем.

Date: 2023-08-26 11:11 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Помню, работал я в Теленаве; там у китайцев с геометрией был швах. Включая тот самый загадочный blue screen, появлявшийся, когда карта стартует (сейчас в той точке Атлантики какой-то остров задекларирован). Когда я сокращал выражение, меня спрашивали, как это, что это, и зачем. Ну и, конечно, строить нормаль к кривой приходилось опять же. И конус всякий там.

Но насчет точки (0,0) я вот что скажу. Дело не только в географии. Дело в плохом подходе к программированию, в вере в "дефолтное значение". У джавщиков это повсюду. Категория Эйленберга-Мура.

Так что да, можно лепить вполне работающий код. Но чтоб понимать, что ты делаешь, нужно образование.

Date: 2023-08-26 11:30 pm (UTC)
vak: (Default)
From: [personal profile] vak
Алгоритмическое мышление штука близкая к математике. Но не идентичная.

Date: 2023-08-27 02:18 am (UTC)
From: [personal profile] zyxman
Хакерский образ мышления бывает полезен. В смысле, не верить что сепульку можно только так сепуление делать, а еще попробовать эдак и дополнительно пробовать разные способы креативить.

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

Date: 2023-08-27 04:54 am (UTC)
nataraj: (Default)
From: [personal profile] nataraj

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

У меня в нынешнем круге общения есть тетенька-архитектор. Так вот, проблемы у тех кто занимается там проектированием ровно наши. Только реализованные в бетоне и конструкциях:

"-- В аквариум к рыбам на первом этаже прет говно! -- Не должно... -- Но оно прет!! -- Сейчас приеду..."

Date: 2023-08-27 07:04 am (UTC)
redis: (Default)
From: [personal profile] redis
Для меня программирование - это скорее работа переводчиком.

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

Date: 2023-08-27 12:42 pm (UTC)
From: [personal profile] dedekha
Нужно иметь работающие мозги и в условиях позднего СССР изучение математики было вполне пригодным инструментом доя их развития (из этого не следует что это единственный инструмент).

Основной парадокс программирования с моей точки зрения: это простое и увлекательное занятие и удивительно много людей почему-то не способны программировать хорошо или are bored to death.





Date: 2023-08-27 10:15 pm (UTC)
ufm: (Default)
From: [personal profile] ufm
Программирование - это, в первую очередь, алгоритмизация. Это сложный процесс и этому нигде и никто не учит, как мне кажется. Если кто-то считает что это не так - пусть попробует написать алгоритм заваривания чая так, что выполняя его не просто дословно, а прямо добуквенно удастся таки заварить чай. И если вы начали свой алгоритм со слов "пройти на кухню, взять пачку чая" - не катит. По крайней мере до тех пор, пока не прописаны алгоритмы "пройти на кухню" и "взять пачку чая". И глубина алгоритмизации зависит от того, для какого исполнительного механизма вы пишете алгоритм. Для здорового человека - это одно, для больного - другое, для человека никогда не видевшего чая и не умеющего читать - третье, а для роботизированной тележки на ардуине - четвёртное.

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

Date: 2023-08-28 08:00 am (UTC)
chaource: (Default)
From: [personal profile] chaource
Программированiе сегодня - это ремесленничество, а не инженерное дѣло, несмотря на названiе "инженеръ-программистъ" ("software engineer"). Инженерное дѣло требуетъ знать и математику, и спецiальную около-математическую науку, разработанную для данной области. А ремесленникъ не долженъ ничего этого знать, онъ долженъ только "имѣть опытъ работы".

Нужно ли ремесленнику понимать "предметную область"? Сапожникъ можетъ сдѣлать сапоги для бизнесмена, а можетъ для математика. Тогда сапожникъ будетъ сначала спрашивать у бизнесмена, какiе ему нужны сапоги. Бизнесменъ что-то будетъ говорить, а сапожникъ "переводить на языкъ сапоговъ". Нѣтъ, сапожнику не нужно ничего понимать про инвестицiи или mergers & acquisitions. Сапожникъ долженъ дѣлать сапоги.

Даже когда предметная область касается математики, программистъ все равно пишетъ программу какъ ремесленникъ. Математикъ объясняетъ, что и какъ вычислить, на языкѣ математики, но программистъ "переводитъ это на языкъ сапоговъ" и получаются опять те же сапоги. Всѣ формулы правильны, но программа не работаетъ, потому что перепутано имя перемѣнной, а python молча дѣлаетъ новую перемѣнную съ такимъ именемъ. Ну или потому что написано data_training = data_validation = data_test = dict() и всѣ три указываютъ на одинъ и тотъ же dict().

Главный вопросъ - нужны ли сегодня инженеры-программисты (скажемъ, для 100% verified compiler) или достаточно имѣть ремесленниковъ.

Мой отвѣтъ - инженеры не нужны, потому что сегодня падаетъ ожидаемое качество работы программистовъ. Поэтому скоро chatgpt 5.0 сможетъ ихъ замѣнить.

Примѣръ изъ функцiональнаго программированiя. "Надо ли знать монады"? "Надо ли знать систему типовъ Hindley-Milner?" "Надо ли знать, что такое лямбда-калькулусъ?" Отвѣтъ - если этого не знать, программистъ-ремесленникъ напишетъ программу гораздо хуже и будетъ мучаться съ ея отладкой. Но сегодня это не важно, потому что качество результата мало кого стало интересовать. (Вчера это тоже было неважно.)
Edited Date: 2023-08-28 09:44 am (UTC)

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

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

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

Profile

beldmit: (Default)
Dmitry Belyavskiy

May 2025

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 02:17 am
Powered by Dreamwidth Studios