Комментарии 84
Я понимаю, что статья ознакомительно-популярная, и её идея "смотрите, все эти страшные слова на самом деле вам знакомы, эндофунктор - это массив!". Но цельности не хватает, многие вещи упомянуты как важные, и тут же брошены без применения.
Операция над элементами полугруппы обязательно должна обладать свойством ассоциативности
Это нигде не применяется. И вообще объяснение полугруппы выглядит так, будто это такая штука, чтобы элементы поместить в массив и как-то схлопнуть.
Статья получилось разделённой на две не связанные части: одна про полугруппы, другая про функторы, а описание монады в конце осталось подвешенным, просто flatMap из Array. Хотя нужно совсем немного, чтобы сделать статью цельной и понятной: нужно объявить Array полугруппой, операцией будет конкатенация. Тогда fold будет соединять массивы в массиве, получится тот же flatMap. А монаду определить через fold, соединив функторы и полугруппы.
Пост получился и так очень длинным.
Мы писали, мы писали, наши пальчики устали!
нужно объявить Array полугруппой, операцией будет конкатенация. Тогда fold будет соединять массивы в массиве, получится тот же flatMap. А монаду определить через fold, соединив функторы и полугруппы.
Это правда. Можете развернуть это утверждение прямо здесь в комментариях в виде кода, пожалуйста? Думаю, читателям это будет полезно.
Лямбда исчисление и функциональное программирование не может быть божественным языком, поскольку сам мир - мутабельная структура. Мутабельность мира определяется вторым законом термодинамики (и не только им).
А лямбда исчисление и функциональное программирование - просто неправильная (неудачная) абстракция. Да полная, да целостная, но неправильная (неудачная) - входящая в противоречие с миром.
Поэтому, максимальную популярность получили именно императивные языки программирования: на них банально проще описывать (моделировать) реальность. Ну и программирование ИИ - топчик исследований на сегодня - насквозь мутабельная магия.
А монады - это костыль, попытка что-то исправить, в неправильной (неудачной), противоречивой предпосылке которая называется "отказ от мутабельности".
Интересное утверждение. Но ведь язык не должен и не может быть реальностью. Язык - это нечто, что только описывает реальность. И с этим лямбда-исчисление прекрасно справляется.
максимальную популярность получили именно императивные языки программирования
Я бы с этим поспорил. Сейчас функциональная парадигма очень популярна. Например, большая часть кода на тех же JavaScript/TypeScript пишется в более-менее функциональном стиле. А Rust привнес функциональщину в низкоуровневое программирование. Ну и вообще уж монады с их map/filter/flatMap в том или ином виде есть почти во всех языках программирования.
Лямбда исчисление и функциональное программирование не может быть божественным языком, поскольку сам мир - мутабельная структура
...
А монады - это костыль, попытка что-то исправить, в неправильной (неудачной), противоречивой предпосылке которая называется "отказ от мутабельности".
Но ведь движение можно представить себе как смену неподвижных кадров. А монады описывают такое представление о движении как нельзя лучше. Этот старый философский спор о природе движения идёт ещё со времен Зенона. Процитирую классика:
Движенья нет, сказал мудрец брадатый.
Другой смолчал и стал пред ним ходить.
Сильнее бы не мог он возразить;
Хвалили все ответ замысловатый.
Интересное утверждение. Но ведь язык не должен и не может быть реальностью. Язык - это нечто, что только описывает реальность. И с этим лямбда-исчисление прекрасно справляется.
не должен. и да, иммутабельный язык тоже может описывать мир.
но мы говорим о том, насколько подходит инструмент для задачи, мало того заявлено: "божественный уровень", то есть предполагается идеальное соответствие. И вот в этом месте мы имеем ошибку.
Мир - мутабельный, соответственно модели мира в общем виде должны тоже быть мутабельными. Да иммутабельные модели тоже возможны, но в ряде случаев они будут требовать бесконечных ресурсов (память, например) или бесконечных усилий (монады, например).
Лямбда исчисление пришло в программирование из математики. Математика = язык моделирования реальности. Программирование = другой язык, частично пересекающийся с математикой (функциональное программирование), а частично нет (императивное программирование).
Если говорить о божественном языке, то это будет именно императивный язык максимально приближенный к человеческому. Мало того, возможно с развитием ИИ такой язык даже никогда не появится, поскольку на каком-то этапе задачи начнут формулировать именно на человеческом языке и понятие "язык программирования" уйдёт в небытие.
Я бы с этим поспорил. Сейчас функциональная парадигма очень популярна.
популярность достаточно искусственная (много пиара, вроде вот этой статьи)
но функционального кода очень мало. на TypeScript, что Вы привели в пример, пишут в императивном стиле: циклы, переменные, объекты и вот это вот всё. А именно те места, что сделаны в функциональном стиле - являются узким местом JS: реактивность. Смотри, например habr vs 200+ комментов = требуется суперкомпьютер, чтобы просто отобразить их.
Но ведь движение можно представить себе как смену неподвижных кадров.
можно. я же сразу сказал: да, эта абстракция полная, но она неудачная.
смотрите: берём Искусственный интеллект. Что нужно, чтобы он стал сильным? Нужно сделать ему самообучение. Это самообучение уже запрограммировали в рамках функциональной парадигмы: Вы можете открыть чат с gpt, дать ему уравнение, он его решит с ошибкой, вы поправите его ошибку и последующие подобные уравнения он будет решать верно. Но это только в пределах контекста. Что нужно, чтобы ИИ стал сильным? Нужно контекст расширить до бесконечности (и найти устойчивое положение между сумасшествием и интеллектом, но это отдельная тема) - оставаясь в рамках Ф-парадигмы, либо просто перейти к мутабельности.
Мутабельность потребует столько же ресурсов сколько есть сейчас (а трудности будут только в обеспечении устойчивости, о которой, как сказано, это отдельная тема), а иммутабельность требует бесконечного количества памяти.
Итого, для огромного пула алгоритмов: искусственный интеллект, работа с графами, базы данных, деревья и так далее, функциональное программирование не подходит или подходит куда хуже, чем императивное.
Соответственно о нём нельзя говорить "божественный уровень", потому что рядовые инструменты, что есть (императивные языки) имеют уровень сходимости с реальностью выше.
Императивное программирование - это высокоуровневая реализация машины Тьюринга, которая полностью эквивалентна лямбда-исчислению. Это же буквально тезис Чёрча-Тьюринга.
эквивалентность != оптимальность.
ещё раз: многие алгоритмы будучи реализованы иммутабельно требуют до в бесконечное количество раз больше памяти, нежели если их реализовывть мутабельно (искусственный интеллект, раскраска графов, деревья и так далее).
Да, как абстракция иммутабельная модель позволяет запрограммировать любой алгоритм, но на практике любой лишь в идеале (или с существенным завышением требований к ресурсам).
Сравните:
бесконечный контекст для ИИ vs простая мутабельность
если слева у нас 10^9 нейронов (чатгпт) и справа у нас столько же нейронов
то слева у нас 10^9 плюс бесконечность памяти, а справа столько же памяти, сколько требует 10^9 нейронов, просто веса храним в переменных, а не константах.
А монады описывают такое представление о движении как нельзя лучше.
Проблема в том, что в императивном языке и реальном мире не нужно это описывать. Это есть само по себе. Трудно продать песок в пустыне.
Но ведь язык не должен и не может быть реальностью. Язык - это нечто, что только описывает реальность
Язык X, который описывает реальность, это описательная часть реальности, просто мета её часть. Язык Y, который описывает уже язык X, еще более мета-часть реальности и т.д.
Но ведь движение можно представить себе как смену неподвижных кадров
Возможно симметрия существует не только в физической реальности, но и в способах ее описания: дискретное-непрерывное, императивное-декларативное и т.д.
Язык X, который описывает реальность, это описательная часть реальности, просто мета её часть. Язык Y, который описывает уже язык X, еще более мета-часть реальности и т.д.
сам мир существует ровно до тех пор, пока отображается (отражается) в сознании
язык - способ отражения мира, а потому во многом, если не во всём, это тот же самый мир и есть :)
Вездесущие LLM сейчас наглядно показывают все ограничения данного подхода: чтобы описать весь мир словами, нужен какой-то нереальный словарный запас. Либо - мультимодальное сознание, которое способно оперировать не только словами, но и образами, звуками и т.п.
нет там ограничений.
большое количество слов нужно для того, чтобы вывести смысл всех слов и контекстов БЕЗ УЧИТЕЛЯ.
идея современных LLM, что смысл составляет не человек, а компьютер самостоятельно выводит его из 100500 текстов. Именно поэтому текстов требуется огромное количество. Это не ограничения данного подхода (под "данным подходом" понимаем языковое моделирование мира), а ограничение выбранного способа изучения языка.
Повторюсь: данный способ выбран не потому, что самый эффективный (скорее наоборот), а потому что позволяет учить компьютер языку без учителя (то есть чисто механистически).
Все же, чтобы LLM распознала либо нарисовала картину "корова на лугу", ей лучше скармливать не слова, а последовательности пикселей. Ведь ни какое хужественно-литературное описание не отразит всех нюансов визуального мира. Разумеется, пиксели это тоже слова (на алфавите из 0 и 1), которые потом превращаются в другие слова (эмбеддинги). Но все это уже как-то очень далеко от наших привычных естественных языков.
Все же, чтобы LLM распознала либо нарисовала картину "корова на лугу", ей лучше скармливать не слова, а последовательности пикселей.
так тоже делают, но то, что Вы описываете - обучение с учителем (учитель должен посмотреть на пиксели и описать что он видит).
А текущий механизм рассчитан на обучение БЕЗ учителя. То есть с учителем тоже есть, но самый минимум - фактически, уже стадия ДО-обучения.
@ednersky удалился, теперь вы вместо него? Тезисы и формулировки просто очень похожие.
Лямбда исчисление и функциональное программирование не может быть божественным языком, поскольку сам мир - мутабельная структура.
Мутабельность мира никак не противоречит лямбда-исчислению, потому что лямбда-исчисление никак не противоречит мутабельности. В чистом типизированном ФП основной смысл в том, чтобы все эффекты (включая «мутабельность») были видны в типе функции, не более.
Мутабельность мира определяется вторым законом термодинамики (и не только им).
Можете объяснить, как она им определяется?
Поэтому, максимальную популярность получили именно императивные языки программирования: на них банально проще описывать (моделировать) реальность.
Нет. Потому что для них проще сделать более-менее оптимизирующий компилятор. Хорошо оптимизировать ФП люди научились позже, чем средне оптимизировать императивщину.
А монады - это костыль, попытка что-то исправить, в неправильной (неудачной), противоречивой предпосылке которая называется "отказ от мутабельности".
Монады — это просто абстракция, как «числа» или «ассоциативные контейнеры». Костыльности в них не больше, чем в числах или в хэшмапах.
@ednersky удалился, теперь вы вместо него? Тезисы и формулировки просто очень похожие.
да, того аккаунта больше нет, теперь этот :)
Мутабельность мира никак не противоречит лямбда-исчислению
нигде не утверждал, что противоречит. нигде не утверждал, что функциональная модель не полная.
утверждаю, что функциональная модель менее оптимальна чем императивная.
мало того, императивная модель может включать функциональную (если удобно), а вот наоборот - с большим оверхедом/костылями.
Монады — это просто абстракция
да, но абстракция неудачная. Императивное программирование - более удобная абстракция в большинстве случаев.
нигде не утверждал, что противоречит
Следует из вашего комментария (если не начинать играть в слова).
утверждаю, что функциональная модель менее оптимальна чем императивная
Почему конкретно?
Компилятор ФП вполне может компилировать чистые иммутабельные функции в мутабельные циклы. И делать оптимизации ему проще, потому что компилятору видно, какие эффекты могут быть у выражений, а каких точно быть не может.
императивная модель может включать функциональную (если удобно)
Жаль только, что нормальных типов… а, вы ж ednersky, про типы с вами уже сто раз было.
да, но абстракция неудачная. Императивное программирование - более удобная абстракция в большинстве случаев.
Только туда почему-то эту абстракцию завозят при каждом удобном случае. Промисы, async/await, корутины, std::optional::and_then
, std::expected
тож чё-т похожее имел, растовский ?
, и так далее.
Следует из вашего комментария (если не начинать играть в слова).
неудачный термин выбран. сорри.
там была оговорка, что эта концепция является полной, а потому противоречивость — имелось в виду именно плохая стыкуемость с реальностью, а сама стыкуемость оговорена и не отрицалась
Почему конкретно?
потому что мутабельная модель мутабельного же мира будет ближе к оригиналу, чем иммутабельная.
это как попытка изобразить деревья имея только желтую краску и не имея зелёной
Компилятор ФП вполне может компилировать
здесь снова ошибка: да, такой компилятор возможен, но в этом месте он будет иметь набор эвристик. что-то получится, что-то — нет
то есть далеко не в 100% случаях на выходе будет мутабельность там, где она требуется
а она много где именно требуется
кроме прочего, там где мутабельность требуется (ии, графы и так далее) программист ФП вынужден писать нечто более сложное, а потому задача у компилятора ещё более тяжкая
Жаль только, что нормальных типов…
в императивных языках есть АТД (Raku, Rust, и так далее), так что типы — не признак функционального программирования
и, кстати, АТД — ещё один костыль, растущий из наложенных на себя же ограничений — отказ от исключений вынуждает велосипедить и сюда пихают АТД
а так-то в среднем он не так, чтоб и нужен
основа функционального программирования (согласно энциклопедии) — отказ от мутабельности, а не работа с типами (что есть частный случай ООП)
Только туда почему-то эту абстракцию завозят при каждом удобном случае. Промисы, async/await, корутины
мутабельные промисы.
мутабельные же корутины
(корутины вообще не свойство ФП опять же), иногда их даже делают стекфул - для явного определения переменных
> Почему конкретно [функциональная модель менее оптимальна чем императивная]?
потому что мутабельная модель мутабельного же мира будет ближе к оригиналу, чем иммутабельная
Вы снова всё время жонглируете терминами «функциональная»-«иммутабельная» и «императивная»-«мутабельная» так, будто по разные стороны дефисов эквивалентные вещи (и, следовательно, функциональщина противоречит мутабельности). Это не так.
здесь снова ошибка: да, такой компилятор возможен, но в этом месте он будет иметь набор эвристик. что-то получится, что-то — нет
Иметь общие, формализованные и обоснованные оптимизации для чистого ФП куда проще, чем для императивщины. Заменить map g . map f
на map (g . f)
вы можете всегда, без каких-либо эвристик, сэкономив проход цикла, а аналогичные трансформации в «императивном» мутабельном мире — неа, не работают без именно что эвристик. Есть и много других, куда более интересных формально обоснованных, не эвристичных оптимизаций (см. главу 3 здесь, например).
И это на самом деле настолько просто, что я в одно рыло писал подобные оптимизации в своём мини-недокомпиляторе мини-недо-ФП-языка, тогда как в императивном случае я сдох бы на эвристиках, крайних случаях и тому подобном, и всё было бы медленнее и хуже. А ещё мне надо было проверять корректность программ на этом языке, и в императивном случае я сдох бы дважды.
кроме прочего, там где мутабельность требуется (ии, графы и так далее) программист ФП вынужден писать нечто более сложное
…да, примерно на уровне среднего кода в императивных языках.
а потому задача у компилятора ещё более тяжкая
…да, примерно приближающаяся по сложности снизу к задачам перед компиляторами императивных языков.
Не уверен, что это аргументы в ту сторону, в которую вы пытаетесь их привести.
в императивных языках есть АТД (Raku, Rust, и так далее), так что типы — не признак функционального программирования
Ведь кроме АТД типов нет, конечно.
Типы позволяют выразить, что «у этой функции нет эффектов», «у этой функции эффекты только в модификации вот такого-то состояния», и так далее. Почему-то все языки с системами типов, позволяющими это выражать, почти исключительно из лагеря ФП (кроме ATS, но им не пользуются императивщики, да и функциональщики в его сторону не сильно смотрят).
и, кстати, АТД — ещё один костыль, растущий из наложенных на себя же ограничений — отказ от исключений вынуждает велосипедить и сюда пихают АТД
Вы сменили ник, но непонимание АТД у вас не прошло. Можно для окружающих зрителей, конечно, повторить цирковой номер «функциональщики пытаются объяснить ednersky, что такое АТД и зачем оно», но не уверен, что нужно.
основа функционального программирования (согласно энциклопедии) — отказ от мутабельности
Если вам охота свести этот спор к терминам и отсылкам к энциклопедиям, то
это скучно, и
вам придётся признать, что тестирование не существует без юнит-тестирования, против которого вы выступали (ведь в энциклопедии про это тоже написано).
Я же предлагаю разделять языки не по наличию/отсутствию мутабельности (она есть везде, в конце концов), а по степени контроля за семантикой функций на уровне типов. Кому нужно нетипизированное лямбда-исчисление в 2025-м году, в конце концов?
работа с типами (что есть частный случай ООП)
Лол, завтипы — это частный случай ООП, ясно.
мутабельные промисы
В чём там мутабельность? С одной стороны (где промис) вы вызываете функцию resolve
(или как её там у вас), с другой (где фьючер) — вы вешаете обработчик and_then
, или обмазываете сахаром из await
, неважно. Внутренней мутабельности промисов вы не видите с обеих сторон.
мутабельные же корутины
А вызов функций у вас не мутабельный сам по себе случайно?
иногда их даже делают стекфул - для явного определения переменных
Што?
«функциональная»-«иммутабельная» и «императивная»-«мутабельная» так, будто по разные стороны дефисов эквивалентные вещи (и, следовательно, функциональщина противоречит мутабельности). Это не так.
Это именно так.
Вот что говорит нам энциклопедия
Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний (в значении, подобном таковому в теории автоматов). При необходимости, в функциональном программировании вся совокупность последовательных состояний вычислительного процесса представляется явным образом, например, как список.
Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния (в отличие от императивного, где одной из базовых концепций является переменная, хранящая своё значение и позволяющая менять его по мере выполнения алгоритма.
Межа между функциональным и императивным программированием лежит именно в мутабельности.
Ваша проблема, что Вы всё время пытаетесь сочинить новые термины взамен общепринятых. А это нарушение первого закона логики.
Иметь общие, формализованные и обоснованные оптимизации для чистого ФП куда проще, чем для императивщины.
нет. Наоборот. CPU по определению императивен, поскольку содержит мутабельные регистры и набор мутирующих операций. То есть императивный код языка будет легче отображаться на инструкции CPU, чем функциональный код. Вывод: если говорить об оптимизациях, императивный язык проще оптимизируется.
Ведь кроме АТД типов нет, конечно.
всё остальное - сводится к ООП
констрейнты, которые некоторые по недоразумению зовут теоремами, не являются теоремами. В этом легко убедиться попробовав записать в where секцию теорему Ферма, например.
Вы сменили ник, но непонимание АТД у вас не прошло. Можно для окружающих зрителей, конечно, повторить цирковой номер
можно. АТД - это цирковой номер, позволяющий в одной переменной хранить значения множества типов. Этот номер следствие из двух самоограничений
отказа от динамической типизации (её реинкарнация)
отказа от исключений
Чем больше типов собирается в одном АТД, тем более сложный и запутанный код на выходе - с одной стороны, и тем ближе этот код к его аналогу с динамической типизацией - с другой. Просто то, что должен бы делать компилятор, теперь делает человек.
Вообще Функциональное программирование и типы - это перенос значительной работы с компилятора на человека.
вам придётся признать, что тестирование не существует без юнит-тестирования, против которого вы выступали
да пожалуйста. я не выступал против юнит-тестирования. Там, где они удобны - их нужно применять. Однако я всегда утверждал, что интеграционные и системные тесты имеют больший индекс полезности на строку написанного в тесте кода.
и обращал внимание на то, что констрейнты в типах (по недоразумению называемые теоремами) тесты не заменяют.
Лол, завтипы — это частный случай ООП, ясно.
ага. ООП включает в себя понятие "наследование", не слышали?
имея Integer можно унаследовать от него Unsigned просто наложив на первый констрейнт.
В чём там мутабельность?
в хранении результата прямо в объекте промиса.
Што?
то. некоторые языки выделяют корутинам собственный стек. Таким образом, все определяемые корутиной переменные хранятся в одном месте.
Есть стойкое ощущение, что вы очень хотите поспорить, и совсем не хотите понять (ну и на текущий момент не понимаете функциональщину). Из-за этого ваш спор сводится к цитированию википедии, апелляциям к "общепринятым терминам" и спорам о словах. Если вдруг захотите понять, то дайте знать, тогда будет смысл. А сейчас не интересно. Я поражаюсь терпеливости IU.
да я не против поспорить (для того, очевидно, написана статья со столь вопиюще некорректным утверждением прямо в заголовке), но для того, чтобы спорить требуется оперировать одинаковыми и постоянными во времени (спора) терминами (первый закон логики), а потому, увы, как бы это ни было Вам неприятно, придётся принимать именно термины энциклопедии - общепринятые термины
Да как вы уже задрали со своими телегами и чатгпт генеренным контентом. Не понимаю почему мне этот понос в новостной ленте пикселя предлагается регулярно.
Могу заверить, что этот понос, как вы назвали мой текст, я писал лично без использования ИИ.
Другими известными примерами TypeScript-монад могут служить Promise и Option, хотя все они как и Array сделаны в JavaScript не совсем правильно с математической точки зрения
Зато сделано логично. Разработчики ведь в курсе про теоркат и сознательно пошли другим путем.
JS это грязный императивный язык. Для композиции Promise в общем случае не может гарантироваться ассоциативность. Промисы выполняются жадно, скобки влияют на результат. А раз так, то все остальные параллели с монадами не имеют смысла - математика будет против. Т.е. здесь тот случай когда утка выглядит как утка, крякает как утка, но имеет пластиковый корпус и работает от батареек. Поэтому она является совершенно другим объектом. Не пытайтесь её жарить на сковородке - испортите и то и другое.
Черч с Тьюрингом почти сто лет назад расставили точки над i: пишите как удобнее - теоретически без разницы. ФП привносит формализм и предсказуемость. ИП - отладку по шагам, понятные стек трейсы, возможность по-быстрому накостылять решение и т.п. что мы все так любим. В общем здесь на первое место выходит практичность - выбор за инженером.
спасибо за очень интересную статью. Действительно предельное совершенство красоты как некой функции возможно лишь при возникновении оного из абсолютного ничто. То есть из множества всех возможных чудес, самое непостижимое это возникновение всего из абсолютного ничто, что и захватывало воображение как и пифагорийцев, упомянутых вами, так и других людей исследующих мир идей и основополагающих сущностей.
Действительно единица это и минимальное возможное, не имеющая размера но существующее, то есть точка, то есть минимальная идея.
Но в то же время единица описывает и всю реальность. как совокупность множества всех множеств численно, то есть мультивселенных много, но мультиверсума мультивселенных единица). И это отражено в идее о монаде, самое минимальное рождает самое всеобъемлющее.
В заключение я хотел бы сказать, что теория групп и теория категорий лежат в основе всей известной человеку математики, информатики и физики. Это буквально язык мироздания - самый выразительный и самый поэтически прекрасный. Его бы я выучил только за то, что им разговаривал Бог!
Это он вам сам сказал?) Не в курсе как в основе математики, но физика наука эмпирическая. Где взять средства на строительство всех этих новых суперколлайдеров, детекторов частиц, телескопов, и других экспериментальных мегаустановок. Как то эти мат. теории особенно не помогают в объяснении этого, а число проблем только растет. ТС, фактически мат. фреймворк, не оправдывает себя, хотя туда всего понапихали. Больше надежд на статистические методы в виде обучения ИИ на эмпирических данных, вроде решения этой задачи определения размерностей фазовых пространств сложных динамических систем не описываемых аналитически.
Тут, кстати, недавно аналогичная статья про ТК была. Автор даже какую-то методологическую базу под это пытался подвести, но от обсуждения этих вопросов уклонился.
ADD. В продолжение темы некой божественной эффективности математики в физике - критические замечания.
Теория категорий - это не стрелки, функторы и т.п. мелочи. Это естественные преобразования и еще более сложные построения. Кроме того, это инструмент для изучения общих свойств математических структур, которые понять могут 0.01% людей на планете. Остальным достаточно теории множеств (хотя таких тоже меньше процента, полагаю). Зачем это обычному программисту, какие общие свойства он сможет обнаружить...
Монады тоже утратили актуальность. Их покрывают алгебраические эффекты, которые гораздо понятнее и их польза очевидна.
это инструмент для изучения общих свойств математических структур
А эти самые математические структуры существуют в объективном мире или тоже были придуманы людьми?
Математическое "существует" обычно можно читать как "мы это описали и оно пока не привело к противоречию".
А правила наличия/отсутствия противоречий - они существуют в объективном мире или тоже были придуманы людьми?
Были придуманы, конечно. Придуманы много раз, как независимо, так и модификацией предыдущих. То, что сейчас является правилами наличия/отсутствия противоречий, описано и проверено, что они не противоречат использованию их в качестве таких правил. И путь этот не был простым и очевидным, Курт Гёдель не даст соврать :)
Да. Только эту стройную теорию слегка портит такое явление как "парадоксы". Ну там парадокс брадобрея и иже с ним.
Только эту стройную теорию слегка портит такое явление как "парадоксы". Ну там парадокс брадобрея и иже с ним
Что означает "слегка портит"? - Век назад математики поняли, что чтобы доказать непротиворечивость математики надо придумать "другую математику", которая это и докажет.
А чтобы доказать непротиворечивость этой "другой математики" нужно придумать "третью математику", в рамках которой доказать непротиворечивость "другой математики".
И так далее и так далее. - кстати, они это и сделали. Но на "второй математике" и остановились.
Когда математики это поняли (многие от этого офигели совсем) они остановились в этом "прогрессе доказательств" и переключились на придумыния "новых математик" (логик, геометрий) ... и попыток их применить хоть где-то "в быту" (в физике, на бирже).
Не столько "портит", сколько "надо учитывать". Ну да, не про любое "утверждение" в естественном языке можно говорить в терминах истинности/ложности, но были сформиулированы правила как строить такие утверждения формально. Ну, да, потом упомянутый Гёдель как раз показал что есть утверждения истинные, но недоказуемые и что они всегда будут в модели с арифметикой. Ну да, доказано, что непротиворичивость математики в математике не докажется.
Но это точно не "портит". Иррациональные числа не испортили рациональные. Мнимые числа не испортили действительные. Неизмеримые множества не испортили меру.
Но это точно не "портит".
не портит, но точно находится вне контекста "язык мироздания" и "божественный уровень" (см статью).
Человечество находится в постоянном поиске лучшего языка для моделирования реальности. Сперва (пока знания раскладывались только по бумажным носителям и головам) это была математика. Теперь появился новый язык, включивший математику в себя, но более подходящий для моделирования - программирование.
Программирование давно шире математики (и успехи в области ИИ это подтверждают). И вот на этом фундаменте наблюдается феномен: постоянно производятся попытки "подрезать крылья" этому новому инструменту, попытаться ограничить его, сводя к ненужной иммутабельности и сложным типам.
Теперь появился новый язык, включивший математику в себя, но более подходящий для моделирования - программирование.
Программирование давно шире математики (и успехи в области ИИ это подтверждают).
Не согласен. Программирование - это небольшой кусочек математики плюс немного инженерии и компромиссов с человеками. Ничего "шире математики" там нет. "Успехи ИИ" во-первых, все базируются на математике, во-вторых, не такие уж и успехи (особенно в части математики), в-третьих, к программированию имеют лишь косвенное отношение (где бы был инференс, если бы не SIMD/GPGPU? где бы были модели без математики?). И не понял вообще, кто и что пытается подрезать иммутабельностью и типами - что кто-то запретил ассемблер и Си?
Не согласен. Программирование - это небольшой кусочек математики плюс немного инженерии и компромиссов с человеками. Ничего "шире математики" там нет.
ИИ не описывается математическими формулами, но отлично программируется.
Вообще множество процессов окружающей нас действительности отлично моделируется программно без привлечения математики: доказательства теорем и так далее.
"Успехи ИИ" во-первых, все базируются на математике
это давно не так. математика почти не работает с мутабельными объектами, а успехи ИИ исключительно на мутабельности выращены :)
Успехи ИИ состоят в том, что люди заглянули в устройство живых нейронов и попытались программно смоделировать процессы, происходящие в них.
Программирование - это небольшой кусочек математики
ни в коем случае. математика максимум описывает недостижимый идеал.
и то, если его удалось описать.
а программирование:
включает симуляции, интерактивные среды, обратную связь, время, случайность,
работает на неполных моделях, эвристиках и обучении, а не на доказательствах.
многие задачи не решаются аналитически, а нужная модель тупо подбирается (или обучается): мало кто может сказать что значит число 1.27 в 327 элементе эмбеддинга размерностью 4096.
программирование позволяет строить модели, основанные на случайностях и неполноте знания!
никакая математика не объяснит почему GPT работает: в нём подобранных, эмпирически собранных механизмов больше всего остального.
И не понял вообще, кто и что пытается подрезать иммутабельностью и типами - что кто-то запретил ассемблер и Си?
постоянно видим статьи на тему теорий категорий и божественности функциональных языков (вот под одной из них мы общаемся с Вами).
но люди предпочитают Си и Питон Хаскелю. Почему? Потому что "божественность" - это рассчитанный на эмоции тезис, а теория категорий - это инструмент не столько нужный на практике, сколько позволяющий наводить тень на плетень :)
Самое полезное здесь - композиция. Это то, о чем авторы обычно пишут в самом начале, а читатели на полном ходу пролетают мимо - с нетерпением ожидая когда же начнутся забористые монады с эндофункторами. Ну что тут интересного, все ж банально:
f: A -> B
g: B -> C
g . f: A -> C
Однако вот эта еле заметная точка между g и f - бинарный оператор композиции - и есть самое главное. Композиция даёт возможность собирать решение из отдельных кусочков (как из "A" на входе сразу получить ответ "C", не связываясь в промежутке с неважными деталями "B"). А математические свойства подсказывют какие комбинации кусочков являются валидными. Не это-ли все, что нам требуется в повседневной жизни для написания сложных программ? Остальные навороты лишь частные случаи.
Торкат на хайлевел наглядно демонстрирует данный подход, отбрасывая лишние детали, об которые будешь неизбежно спотыкаться, изучая тот или иной конкретный раздел математики. У Бартоша Милевски про это есть классный курс для программистов.
Сижу вот читаю статьи автора (оссобенно про распределение IQ было сильно как и про язык мироздания), коментарии к ним где почему то минусуются коментарии с атеистическим и научным взглядом (ссылки на исследования и научные статьи). Вспоминаю встречу с программистами которые меня чуть было не побили когда я сказал что не верю в Будду или Аллаха а энергия вселенной на вас никак не влияет ей плевать на вас и ваши чувства (да да, не знаю как но люди умудрились еще и сравнять буддизм с исламом с бессмысленным красноречивым пиздежом)...Простите что не по теме просто треды там закрытые да очень хотелось поделиться мыслью...

Нет ничего странного в том, что кто-то помимо математики увлекается философией (или наоборот). Если копнуть в историю - то внезапно окажется, что все науки растут из философии, а само слово "философия" и означает "наука о жизни". Исторический философ - это человек, которому не интересно было просто жить. Ему было интересно размышлять о сути бытия. Со временем эти размышления вылились в том числе и в математику.
Но математика не покрывает все аспекты человеческого бытия и окружающего мира. В реальном мире 1+1 может быть равным 3 (ребёнок от двух родителей) или -1 (город в результате ядерного взрыва). Ну а религия - явление не просто древнейшее, а до сих пор живее всех живых и скидывать её со счетов рановато. Вот и автору интересно искать параллели между религией, математикой и прочим, а не просто.
слово "философия" и означает "наука о жизни".
Слово "философия" означает "любовь к мудрости" (от греч. philo — любовь, sophia — мудрость). Это это форма мышления а не наука, направленная на осмысление мира. А ваше "наука о жизни" — это уже вольная интерпретация, не соответствующая ни истории, ни академическим определениям.
Если копнуть в историю - то внезапно окажется, что все науки растут из философии, а само
философия дала старт многим наукам — например, физике, логике, этике. Но со временем наука отделилась, обзавелась методологией и перестала быть частью философии.
В реальном мире 1+1 может быть равным 3 (ребёнок от двух родителей)
Опять ошибочка. Математическое выражение 1+1=2 работает в рамках чисел, но не в метафорах. А в вашем примере будет точнее 2(родителя) +1(ребенок) =3 но никак не 1+1.
религия - явление не просто древнейшее, а до сих пор живее всех живых
Это просто ваше утверждение но не факт. Таким же макаром я могу выкинуть что наука правит всем
Нет ничего странного в том, что кто-то помимо математики увлекается философией
Увлекаться это одно, а подавать людям красноречивый философский псевдонаучный бред под соусом это другое. Все слишком сложно и не однозначно чтобы вот так вот просто рассуждать о мире и людях, о тупых и умных, IQ ссылась на Савватеева или 4chan.(повторяю мой коментарий не имеет отношения к данной статье, просто там трэды закрытые).
Слово "философия" означает "любовь к мудрости"
Ну а если почитать дальше, то "Мудрость в философии — один из измерителей степени познания окружающего мира, обсуждаемый, как правило, в контексте стремления к углублению этого познания". Вполне соответствует моему, более краткому, определению.
Опять ошибочка
Это не ошибочка, вы просто не поняли суть примера. А она в том, что математика статична, в то время как жизнь динамична.
Это просто ваше утверждение но не факт
Если вы отрицаете существование религии в современном мире как факт - не вижу смысла с этим спорить.
Увлекаться это одно, а подавать людям красноречивый философский псевдонаучный бред под соусом это другое.
Имеет право, как и все другие люди, живущие в стране со свободой слова. Ну и многие современные научные концепции и технологии когда-то давно тоже считались бредом (или сказками).
При всем уважении, вы выдаете художественное мышление за логику, играете словами и метафорами, но местами просто уходите в красивую болтовню, по сути — смесь философского фанфика и бытовой софистики.
математика статична, в то время как жизнь динамична
Да, это так и это правильно! Потому что математика - это правила жизни, и было бы странно, если бы они менялись. Ну а программирование тогда (в том числе ИИ) это и есть жизнь.
Вот и автору интересно искать параллели между религией, математикой и прочим, а не просто.
Религия— система верований, основанная на откровениях, духовном опыте и вере. Математика— строгая формализованная система, построенная на логике, доказательствах, абстракциях. Все остальное от лукавого)
А что насчет "И прочим, не просто"? прочим чем, а не просто что?
Все остальное от лукавого
"Лукавый" - одно из имён Сатаны, а не понятие из математической логики. Похоже, религиозное мышление вам не так уж и чуждо.
А что насчет "И прочим, не просто"? прочим чем, а не просто что?
Та фраза выглядит незаконченной, потому что так и было задумано.
"Лукавый" - одно из имён Сатаны, а не понятие из математической логики. Похоже, религиозное мышление вам не так и чуждо.
а при чем тут математика или Сатана? я про тех кто пытаеться связать несвязуемое💁 А религиозное мне не чуждо, это наша культура, история хомосапиенс, но умиляют попытки связать ее с наукой... А я всегда при себе ношу бритву Оккама🥱
Та фраза выглядит незаконченной, потому что так и было задумано.
На то воля божья💁
умиляют попытки связать ее с наукой... А я всегда при себе ношу бритву Оккама🥱
Хм. Но ведь Уильям Оккам был английским монахом-францисканцем, философом-схоластом, апологетом и теологом, родившимся в Оккаме, небольшой деревне в графстве Суррей.
То есть он не был учёным, не был физиком, не был математиком - зачем вы, вооружились бритвой того, чьи "основные интересы были натурфилософия; метафизика; эпистемология; теология; логика; онтология; политика; теологический волюнтаризм."?
Потому что идея оказалась универсальной:
"Не следует множить сущности без необходимости."
(лат. Entia non sunt multiplicanda praeter necessitatem.)
Изначально это значило что не осложняй если можно проще (сорян я утрирую но все же).А потом пришли учёные...
"Начиная с Нового времени, учёные и философы эпохи рационализма (Декарт, Ньютон, позже Лаплас, Поппер и др.) подхватили идею:
чем проще гипотеза — тем лучше она для начала проверки. Бритва стала инструментом научного мышления, а не метафизической максимой." (С)
Бритва стала инструментом научного мышления, а не метафизической максимой
Интересно, почему же это произошло!
Или иной пример, - "универсальность принципа наименьшего действия Мопертюи обосновывал достаточно туманными рассуждениями метафизического характера с помощью телеологических и теологических аргументов".
И снова "теология" (мысли о Боге) привели к "инструменту научного мышления".
Совпадение?
Да нет просто обычное стечение обстоятельств.💁 Когда то религия была актуальна в таких вопросах в силу отсутсвия знаний и технологий, сегодня ей приходиться разве что как то оправдывать ее изначальную цель. Это делает ее не плохой не хорошей а просто неактуальной. Но да вклад был сущевственный с чем я и спорить не собираюсь.
Религия— система верований, основанная на откровениях, духовном опыте и вере. Математика— строгая формализованная система, построенная на логике, доказательствах, абстракциях.
Хватает в религии абстракций.
Хватает в религии строгости.
Аристотель (и его логика) очень почитаем у христиан. Его логика позволяет сражаться с ересями не только силой, авторитетом и криком.
Формализма в религии полно.
Вера? - ну вот выше вспоминают Гёделя и вам остаётся в математике верить местами(!) в истину при невозможности её доказать и верить местами, что что-то есть ложно, при невозможности и это доказать.
Без веры никак. - Ни в религии ни в математике.
И если вы атеист, то Гёдель вам в помощь.
P. S. Встретил один математик выражение которое нельзя ни доказать ни опровергнуть. И решил он что оно истинное.
А другой математик решил что это выражение ложно.
И каждый из них пошёл своей дорогой.
Встретил один математик выражение которое нельзя ни доказать ни опровергнуть. И решил он что оно истинное. А другой математик решил что это выражение ложно.
А третий решил, что оно не имеет смысла в булевой алгебре и изобрёл 3-значную логику.
Без веры никак. - Ни в религии ни в математике.
Ну раз мы копируем из гпт в коменты то я тоже так умею, смотрите:
Нет. Это разные "веры", хотя слово одно и то же.
В религии вера — это доверие без доказательства, основанное на духовном опыте, откровении, традиции, авторитете.
Пример: «Бог существует, потому что я это чувствую» или «Писание — истина».В математике "вера" — это доверие к аксиомам и логике, но она:
Явно формулируется
Может быть проверена внутри системы
Поддаётся сомнению и пересмотру в рамках метатеории (см. Гёдель)
То есть в математике нет слепой веры — есть допущения, на которых строится строгое логическое здание.
Ну раз мы копируем из гпт в коменты то я тоже так умею
Нет. ChatGPT так не отвечает. Тут вы так же не правы как и выше.
В математике "вера" — это доверие к аксиомам и логике
Мы не про "веру в аксиомы". Мы про веру в то сама математика не противоречива. - век назад, во времена электричества и пара, математики попробовали доказать что математика не противоречива, но это им не удалось. Да, Гёдель.
Так что, занимаясь математикой, да и физикой, да и любой наукой иначе как без веры нельзя. Просто никак нельзя.
И это мы ещё не обсуждали суеверия при занятиях особо опасными проектами - типа запуска космических кораблей. Читая о том, что самым суеверным человеком на Байконуре был Королёв, понимаешь что ракеты летают на керосине и суеверии. Иначе никак.
Так что, занимаясь математикой, да и физикой, да и любой наукой иначе как без веры нельзя. Просто никак нельзя.
Спорное высказывание. И да вы кажется путаете веру в бога и "веру в научные открытия" (утрированно). Выше я написал про разницу.
математики попробовали доказать что математика не противоречива, но это им не удалось. Да, Гёдель.
А можно поподробней? я пока не видел противоречий(да и на практике их пока нет, если есть аргументы прочту с радостью). То что математика не может доказать свою непротиворечивость не значит что она противоречива.
Так что, занимаясь математикой, да и физикой, да и любой наукой иначе как без веры нельзя. Просто никак нельзя.
Наука опирается на эмпирические проверки и логическую строгость а никак не на веру. Она допускает пересмотр теорий в отличии от религий и слепой веры. Вам бы ознакомиться сначала с научной методологией.
Читая о том, что самым суеверным человеком на Байконуре был Королёв, понимаешь что ракеты летают на керосине и суеверии. Иначе никак.
Улыбнуло но ок)) Ракеты летают не на суевериях, а на точных инженерных расчётах.
я пока не видел противоречий(да и на практике их пока нет, если есть аргументы прочту с радостью)
Если я вам приведу пример где вы можете выбрать, и пойти дальше, либо то что некое математическое утверждение есть истина или оно же ложь, и доказать, истина оно или ложь, нельзя и, мало того, доказано что нельзя это доказать вовсе, - то что вы тогда на это "на практике" скажите то?
То что математика не может доказать свою непротиворечивость не значит что она противоречива.
Это верно. Но это значит, что может оказаться противоречивой. Как ни крути.
Наука опирается на эмпирические проверки и логическую строгость а никак не на веру
Так выше же мы уже выяснили, что "логическая строгость математики" может оказаться противоречивой. Остаётся верить в то что она не противоречива. Так что без веры никак нельзя.
Она допускает пересмотр теорий в отличии от религий и слепой веры.
Да религия постоянно пересматривает свои основы, порождая при этом и новые ветви и новые ереси. Что такое "слепая вера" я не знаю. Я знаю что у математиков есть точно "слепая вера" в то что математика не противоречива.
Ракеты летают не на суевериях, а на точных инженерных расчётах.
Дело в том что ещё никто не пробовал успешно запустить ракету без применения суеверия при запуске. И в СССР было и в России и в США- полно своих суеверных ритуалов при запуске, которые никак не основаны на инженерных расчётах, но без которых никто не летает вовсе и не рискует летать.
Стрелкой (или морфизмом) в теории категорий называется связь между двумя категориями - соответствие каждого элемента первой категории какому-либо элементу второй.
Вы морфизм с функтором путаете. Морфизм соединяет объекты внутри одной категории по определенным правилам. А функтор отображает одну категорию в другую, сохраняя структуру морфизмов в определенном смысле.
Мне вот интересно, зачем Эверест Галуа оную теорию групп придумал? Ему было нечем заняться, и он от скуки решил что-нибудь изобрести? Или он хотел решить какую-то реальную проблему?
Не "зачем", а "почему". Потому что ему это было интересно. Как кому-то разгадывать кроссворды или смотреть сериальчики.
Очень крутой вопрос! История с Эваристом Галуа — это не просто "учёный придумал что-то из скуки", а целая драма с героизмом, трагедией и научной революцией.
Кто такой Эварист Галуа?
Французский математик, жил в начале XIX века. Прожил всего 20 лет, погиб на дуэли. За свою короткую жизнь успел заложить основы теории групп и теории Галуа, которые кардинально изменили математику.
Зачем он всё это придумал?
Короткий ответ:
Он пытался решить конкретную проблему:
Когда у алгебраического уравнения можно найти решение в радикалах?
Чуть подробнее:
С античных времён люди пытались найти формулы для решения уравнений вида:
axn+⋯+c=0ax^n + \dots + c = 0
Формулы были известны для уравнений 2-й, 3-й и 4-й степени.
Но для 5-й степени и выше — тупик. Никто не мог понять, почему.
Галуа выяснил, что:
Некоторые уравнения в принципе нельзя решить с помощью корней (радикалов).
Чтобы это понять, он создал новый язык — группы перестановок корней.
И теория групп родилась как способ анализировать симметрию решений уравнений.
Он решал реальную задачу.
Причём не просто «от нечего делать», а потому что:
Ему был интересен предел человеческого знания
Он знал, что до него над этой задачей бились веками
Он написал свои идеи накануне дуэли, в письме другу, будто знал, что не выживет
Итог:
Он не только решал реальную математическую проблему, но и создал абсолютно новый раздел математики, который сегодня используется везде — от квантовой физики до криптографии. (c) GPT
0 - a
1 - aa
2 - aaa
3 - aaaa
...
ААААА!!!!! Почему F(0) !=""?! Вы так не получите ""a".repeat(number)
"
Это и правда ошибка. Извините, описался.
И начать стоило с того, что в таком виде это не функтор. И хоть бы одна собака хрюкнула! После отмены Душкина и 0xDEADF00D-а хреновато на Хабре с математикой.
Edit: ошибся в нике, правильно 0xd34df00d.
помню его, много с ним спорил в своей предыдущей жизни.
Но вот сам момент его отмены не помню (вероятно, в это время я тоже был в отмене).
За что его-то отменили? Он же ратовал за теоремное программирование, статей у него было с десяток, и карма больше сотни...
За что его-то отменили?
Кажется за что-то политическое. По крайней мере, последняя его активность была в политической ветке.
Кажется за что-то политическое
типичная история для нашего времени, увы.
Современные политики даже не осознают какой урон они наносят будущему. Пройдёт ещё лет 10-20 и о нашем времени можно будет судить только по цифровым артефактам: записи в форумах, музыка в архивах, фильмы.
Придёт какой-нибудь ИИ учиться в эти ветки, собирать данные о культуре 202x, а ему на вход: подкрашенное, подрезанное, подправленное. Пойдёт он аудио слушать на яндекс-музыку, а там в результате судов вырезаны треки и целые альбомы разных групп/исполнителей. Пойдёт он кино смотреть и там та же фигня...
Эх
Кажется за что-то политическое.
Вот и у меня такие воспоминания, но фактов не имею. У него есть не очень активный блог, и весьма активный github, по нику гуглится.
0xd34df00d никто не отменял, он самоудалился по собственной инициативе, попросив админов удалить его аккаунт.
Язык мироздания — теория групп и теория категорий