Алгебра и программирование
Aug. 18th, 2021 03:18 pmЧитал у кого-то, кажется, у
juan_gandhi, что программирование надо основывать на алгебре, а советская школа все более основывается на матанализе, и из этого все проблемы. За вторую часть не скажу, некомпетентен, а вот в первой целиком и полностью согласен.
Нес тут в некотором объеме линейку в студенческий мозг. И мальца офигел. Осознать, что C[a, b] есть линейное пространство над R - это был почти разрыв шаблона. Его бесконечномерность была вторым разрывом шаблона.
Доехать до того, что многочлены степени не выше n являют собой конечномерное линейное пространство - это было полбеды, а вот то, что оператор формального дифференцирования линейный (и вообще оператор) - это был вторичный треск шаблона. Вот полное ощущение, что человек на каком-то очень глубоком уровне решил, что любое линейное пространство - это R**n, а все, что не R**n - это от лукавого.
Минут 15, наверное, было убито на концепт аннулирующего многочлена, причем не столько на аннулируемость, сколько вообще на концепт, что многочлен может быть не только от числа. Матричная экспонента произвела... ну вы поняли, очередной треск шаблона.
При этом я вот распинаюсь, а товарищ далеко не из худших - он честно старается понять, ичсх въезжает, пусть не всегда сразу. Но наблюдается какая-то фундаментальная проблема в понимании абстрактных структур и принципов, причем я его могу списать хотя бы частично на недостатки преподавания (товарищ-то въезжает потихоньку).
И вот тут у меня вопрос: вот если люди очень условно понимают, что многочлен можно брать не только от чисел, то как они будут понимать всякие там первоклассные функции и прочие jump table, не говоря за Duff's device и корутины?
Так что, да, алгебра нужна, причем не только ради полей Галуа и криптографии, но и "потому что ум в порядок приводит".
Нес тут в некотором объеме линейку в студенческий мозг. И мальца офигел. Осознать, что C[a, b] есть линейное пространство над R - это был почти разрыв шаблона. Его бесконечномерность была вторым разрывом шаблона.
Доехать до того, что многочлены степени не выше n являют собой конечномерное линейное пространство - это было полбеды, а вот то, что оператор формального дифференцирования линейный (и вообще оператор) - это был вторичный треск шаблона. Вот полное ощущение, что человек на каком-то очень глубоком уровне решил, что любое линейное пространство - это R**n, а все, что не R**n - это от лукавого.
Минут 15, наверное, было убито на концепт аннулирующего многочлена, причем не столько на аннулируемость, сколько вообще на концепт, что многочлен может быть не только от числа. Матричная экспонента произвела... ну вы поняли, очередной треск шаблона.
При этом я вот распинаюсь, а товарищ далеко не из худших - он честно старается понять, ичсх въезжает, пусть не всегда сразу. Но наблюдается какая-то фундаментальная проблема в понимании абстрактных структур и принципов, причем я его могу списать хотя бы частично на недостатки преподавания (товарищ-то въезжает потихоньку).
И вот тут у меня вопрос: вот если люди очень условно понимают, что многочлен можно брать не только от чисел, то как они будут понимать всякие там первоклассные функции и прочие jump table, не говоря за Duff's device и корутины?
Так что, да, алгебра нужна, причем не только ради полей Галуа и криптографии, но и "потому что ум в порядок приводит".
(no subject)
Date: 2021-08-18 02:37 pm (UTC)У меня тоже был разрыв шаблона от логарифма матрицы, причём сильно после института. Ну то есть теперь-то понятно, что при желании можно возвести e в степень матрицы, разложив в ряд Тейлора, и наоборот. Но в первый раз было удивительно, типа а что, так тоже можно?
И это совершенно не мешало разбираться с jump table и Duff's Device.
Советская школа основывалась на анализе потому, что большинство прикладных дисциплин основывались на анализе. Механика - сплошь дифференциальные уравнения, сопромат - всякие интегралы, радио - преобразование Фурье и так далее. Это сейчас можно абстрагироваться от реальности и думать в битах или в абстрактных классах, а не вольтах с килограммами.
(no subject)
Date: 2021-08-18 02:41 pm (UTC)Весь этот анализ - мода 19-го века, я думаю. Недаром Коши отшил Галуа. Не понимали.
(no subject)
Date: 2021-08-18 03:06 pm (UTC)(no subject)
Date: 2021-08-18 03:02 pm (UTC)Но штука именно в том, что все течет и все изменяется. Сейчас (через 50 лет с гаком) я соглашусь с тем, что современное программирование (которое все более про решающую машину, а не про счетную) должно более опираться на алгебру и дискретку.
(no subject)
Date: 2021-08-18 03:14 pm (UTC)(no subject)
Date: 2021-08-18 02:40 pm (UTC)Может, вообще алгебраической геометрии людей учить? Чтоб знали, что идеал многообразия идеала равен радикалу этого идеала? (Ну и теорию групп не забывать, она же простая.)
(no subject)
Date: 2021-08-18 03:06 pm (UTC)(no subject)
Date: 2021-08-18 07:09 pm (UTC)-
Не отрицая того факта, что математика ум сначала в порядок приводит, а затем (где то в районе третьего курса задрот-анализа) уводит в конечную дурку высокого уровня абстракции - то как часто приходится брать многочлен не от числа?
И как это связано с говнокодингом уровня "отсюда взяли строку и вон туда пихнули" ?
(no subject)
Date: 2021-08-18 07:26 pm (UTC)- Вот есть 100500 лет развития математики - от определения интеграла до матана сейчас, который надо долго раскуривать даже сейчас, и который иногда даже применяется.
- на другой N-мерной фигуре находится вчера упавший Ил-112. Что, при его конструировании не применялась математика ? Вроде применялась, тогда где ошиблись в расчетах? (я уж не говорю, что несмотря на дичайший матан - современные двигатели все равно строят в макетах)
- И на еще одном M - мерном поле находится ну скажем ситуация с рисками с subprime mortgage и последующие события. Казалось бы, вот математическая задача - слева заемщики, справа риски, посередине платежи - но икалось всему миру 4 года. И чего тут где матан?
(no subject)
Date: 2021-08-18 08:58 pm (UTC)А вот если надо не совсем говнокодить, то уже нужна всякая херня вроде типов, инвариантов цикла, конечных автоматов, структур данных и прочей по**ени. И вот вся эта по**ень намного прямее выводится из алгебры, а не из матана.
Далее, программирование (реальное, а не говнокодинг) - это все-таки работа с очень абстрактными структурами. А если это, оужас, плюсы или новомодный Раст, то с писец абстрактными (STL и Boost, мне кажется, вполне достаточны для иллюстрации). Одно с другим напрямую не связано, но имею мнение, что без некоей свободы мышления, которая, например, позволяет уверенно формально рисовать многочлены от всякой фигни и спокойно говорить, что 2 есть корень квадратный из нуля над Z/4Z очень сложно рассматривать темплейты от темплейтов от темплейтов и так далее.
Далее, если мы говорим про матан в программировании, то он, в основном, там нужен в численных методах и дифурах (хотя вот разностные схемы, которыми все дифуры решаются, это кондовая линейка, на самом деле). То есть он очень хорошо готовит к счету, и совершенно никак - к современному именно решающему, а не счетному, программированию.
А что до вопросов про Ил и экономику - я в них не вкурил, надобно бы пояснить.
(no subject)
Date: 2021-08-19 04:38 pm (UTC)-
Математика, алгебра, и так далее решают вполне определенные задачи бизнеса и общества, в том числе "как бы нам дешево решить задачу здесь и сейчас". Совершенно не понятно, почему текущее развитие математики не позволяет решать насущные прикладные задачи.
(no subject)
Date: 2021-08-19 04:46 pm (UTC)-
хз откуда она выводится - такие вещи как паскалевский record (который уже дерево) учат в 8-9 классе
type < имя _ типа >=record
<имя_поля1>: тип;
<имя_поля2>: тип;
………………….
<имя_поля K >: тип
end ;
И все эти темплейты отлично себе живут. (Ну или у нас преподаватель был немного лучше среднего школьного)
(no subject)
Date: 2021-08-20 09:53 am (UTC)Вполне позволяет. Речь о том, на какой математике делать акцент при преподавании.
> такие вещи как паскалевский record (который уже дерево) учат в 8-9 классе
Ну или эквивалентный ему сишный typedef struct (я не паскалист, сорри, хотя один чужой курсач на Паскале я написал). Давай я тебе пару аналогичных вещей приведу:
"такие вещи как производная учат в 10 классе"
"такие вещи как законы Кеплера учат в 9 классе". Более того, иногда даже на пальцах пишут d2x/dt2 = -kx и дают для этого вполне себе дифура систему решений (с синусом, косинусом и фазой) - а дифуры-то материал второго курса.
Я не знаю, какой у тебя был преподаватель, но вот когда я, вооруженный двумя годами сишки, начал вгружаться в STL, я страдал. Да я в концепт декоратора въехал далеко не сразу, и до сих пор немного побаиваюсь их писать.
Ну и я всю школу радостно писал циклы, не зная, что такое инвариант цикла. А вот когда начал кодить всякую жестокую фигню год назад, мне оно очень пригодилось, потому что это сурово понижает процент ошибок в сложных циклах, а дебаг корутинового кода... ну такое, врагу не пожелаю.
Можно ли кодить без всей этой алгебры и дискретки? Можно. Можно ли гнать рабочий код сотнями SLOC в день без всего этого? Можно, но уже, внезапно, сложно. По сути, кодеру это все нафиг не надо, а вот если у тебя претензия на программиста, то все эти структуры данных, конечные автоматы и прочая "нафиг никому не нужная теория" тебе внезапно очень зайдут.
(no subject)
Date: 2021-08-20 03:21 pm (UTC)-
То есть проблема в разрыве между "где дают" и "когда оно надо". Ну да, есть такое.
(no subject)
Date: 2021-08-18 07:13 pm (UTC)Так что бы их применять понимание их внутренней работы не требуется
(no subject)
Date: 2021-08-18 08:49 pm (UTC)Так победим и побеждаем уже.
(no subject)
Date: 2021-08-18 09:40 pm (UTC)