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-27 03:21 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Вот это и любопытно. Сформулировать, что входит в "программирование без математики". Ну вот манипуляция текстами, например. Весь UI, весь REPL, API design (по идее), "топология" (в кавычках, конечно), эксплуатация AI.

Много чего.

[personal profile] here, есть еще что добавить в опись? (Я написал в стиле слака - а, оказывается, а) такой юзер есть; б) дрим вставляет линк!) (ничего, что скобки не парные?) :)

Edited Date: 2023-08-27 03:22 pm (UTC)

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

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

Там еще такой особый фактор - нюх нужен в программировании. Это тоже способность мозга, но как бы совсем не математическая, а скорее игровая.

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

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

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

проверяя что будет если например пальцы в розетку сунуть.

Делал я тут внезапное kill -9 -1 из программы...

Эффект крайне забавный... Когда по твоему действию с твоей же программой единомоментно падает вся система. Буквально я что-то нажал и всё упало...

Date: 2023-08-27 05:34 am (UTC)
From: [personal profile] zyxman
Осторожно, так могут принять за специалиста по бездне. Будут просить переустановить бездну, итд..

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

Отсылки не понял, но я и так специалист по бездне, так что не страшно...

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

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

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

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

Date: 2023-08-27 03:31 pm (UTC)
nataraj: (Default)
From: [personal profile] nataraj

Ты думаешь что у них там чем-то лучше чем у нас?

Такой же бардак.

Только по критичным местам регламентов побольше, что спасает...

Edited Date: 2023-08-27 03:32 pm (UTC)

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

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

Date: 2023-08-27 08:30 am (UTC)
van_der_moloth: (Default)
From: [personal profile] van_der_moloth
"при всей лексической бедности последнего"

Ты видимо давно с представителями заказчика не общался. Иначе сказал бы "при всей лексической бедности первого".

Date: 2023-08-29 05:00 am (UTC)
ypq: (Default)
From: [personal profile] ypq
так это проблема в переводе с человеческого заказчика, на человеческий разработчика!

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

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





Date: 2023-08-27 03:50 pm (UTC)
From: [personal profile] zyxman
> Основной парадокс программирования с моей точки зрения: это простое и увлекательное занятие и удивительно много людей почему-то не способны программировать хорошо или are bored to death

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

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

Цель может быть, например, стать владельцем квартиры в столице, или стать начальником.

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

Date: 2023-08-28 01:12 am (UTC)
From: [personal profile] dedekha
Я имел ввиду совсем тривиальное - вполне нормальные со всех сторон а получается не очень здорово.

Date: 2023-08-28 02:12 am (UTC)
From: [personal profile] zyxman
Ну а половина популяции не способна родить ребенка без особо сложных манипуляций (говорят, что мужчине могут вшить матку и потом конечно кесаревым он родит).

Но что это разве значит что обычный мужчина ненормальный? - Я думаю это не значит.

А значит это, что была такая глупость в совке и многие люди ее до сих пор как наследие совка тянут, считать что "в человеке всё должно быть прекрасно", в смысле в совке считалось, что ВСЕ люди одинаковые, и конечно все должны быть способны делать ВСЁ.

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

Но цена этого идиотизма, хорошо описывается анекдотом, про то что японцы сделали автоматическую бреющую машину, человек спрашивает "но как вам удалось, ведь у всех людей разная форма головы!?" - "да, конечно разная, но только первый раз".

Задумайтесь, как людей реально калечит эта между прочим НАСИЛЬСТВЕННАЯ подгонка под этот мифический стандарт.

В странах G7 такой ерундой не занимаются, у них просто банально в школах отменяют плохие оценки, или говорят (Франция), что человек должен СДАТЬ только французский язык и математику, а всё остальное учить или нет, как он захочет.

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

А в США элиту учат в лиге Плюща.

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

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

Date: 2023-08-29 05:06 am (UTC)
ypq: (Default)
From: [personal profile] ypq
целиком - не учат, но читать - учат. ходить - учат. учат: "кухня - там, а туалет - там". учат, что надо руки мыть. и поэтому никому нет нужды детализировать алгоритмы до совсем уж квантовых операций.

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 (бывает такое в программировании), или посчитать среднее значение для массива (или, тем более, медианное или персентиль)... То есть, люди спотыкаются там, где человек с базовыми знаниями математики проходит и не замечает.

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

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

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

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. 7th, 2025 12:54 pm
Powered by Dreamwidth Studios