Обновить
4K+
84
Linux Over@linux-over

Разработчик баз данных

1,7
Рейтинг
69
Подписчики
Отправить сообщение

Язык X, который описывает реальность, это описательная часть реальности, просто мета её часть. Язык Y, который описывает уже язык X, еще более мета-часть реальности и т.д.

сам мир существует ровно до тех пор, пока отображается (отражается) в сознании

язык - способ отражения мира, а потому во многом, если не во всём, это тот же самый мир и есть :)

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

«функциональная»-«иммутабельная» и «императивная»-«мутабельная» так, будто по разные стороны дефисов эквивалентные вещи (и, следовательно, функциональщина противоречит мутабельности). Это не так.

Это именно так.

Вот что говорит нам энциклопедия

Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний (в значении, подобном таковому в теории автоматов). При необходимости, в функциональном программировании вся совокупность последовательных состояний вычислительного процесса представляется явным образом, например, как список.

Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния (в отличие от императивного, где одной из базовых концепций является переменная, хранящая своё значение и позволяющая менять его по мере выполнения алгоритма.

Межа между функциональным и императивным программированием лежит именно в мутабельности.

Ваша проблема, что Вы всё время пытаетесь сочинить новые термины взамен общепринятых. А это нарушение первого закона логики.

Иметь общие, формализованные и обоснованные оптимизации для чистого ФП куда проще, чем для императивщины.

нет. Наоборот. CPU по определению императивен, поскольку содержит мутабельные регистры и набор мутирующих операций. То есть императивный код языка будет легче отображаться на инструкции CPU, чем функциональный код. Вывод: если говорить об оптимизациях, императивный язык проще оптимизируется.

Ведь кроме АТД типов нет, конечно.

всё остальное - сводится к ООП

констрейнты, которые некоторые по недоразумению зовут теоремами, не являются теоремами. В этом легко убедиться попробовав записать в where секцию теорему Ферма, например.

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

можно. АТД - это цирковой номер, позволяющий в одной переменной хранить значения множества типов. Этот номер следствие из двух самоограничений

  • отказа от динамической типизации (её реинкарнация)

  • отказа от исключений

Чем больше типов собирается в одном АТД, тем более сложный и запутанный код на выходе - с одной стороны, и тем ближе этот код к его аналогу с динамической типизацией - с другой. Просто то, что должен бы делать компилятор, теперь делает человек.

Вообще Функциональное программирование и типы - это перенос значительной работы с компилятора на человека.

вам придётся признать, что тестирование не существует без юнит-тестирования, против которого вы выступали

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

и обращал внимание на то, что констрейнты в типах (по недоразумению называемые теоремами) тесты не заменяют.

Лол, завтипы — это частный случай ООП, ясно.

ага. ООП включает в себя понятие "наследование", не слышали?

имея Integer можно унаследовать от него Unsigned просто наложив на первый констрейнт.

В чём там мутабельность?

в хранении результата прямо в объекте промиса.

Што?

то. некоторые языки выделяют корутинам собственный стек. Таким образом, все определяемые корутиной переменные хранятся в одном месте.

Следует из вашего комментария (если не начинать играть в слова).

неудачный термин выбран. сорри.

там была оговорка, что эта концепция является полной, а потому противоречивость — имелось в виду именно плохая стыкуемость с реальностью, а сама стыкуемость оговорена и не отрицалась

Почему конкретно?

потому что мутабельная модель мутабельного же мира будет ближе к оригиналу, чем иммутабельная.

это как попытка изобразить деревья имея только желтую краску и не имея зелёной

Компилятор ФП вполне может компилировать

здесь снова ошибка: да, такой компилятор возможен, но в этом месте он будет иметь набор эвристик. что-то получится, что-то — нет

то есть далеко не в 100% случаях на выходе будет мутабельность там, где она требуется

а она много где именно требуется

кроме прочего, там где мутабельность требуется (ии, графы и так далее) программист ФП вынужден писать нечто более сложное, а потому задача у компилятора ещё более тяжкая

Жаль только, что нормальных типов…

в императивных языках есть АТД (Raku, Rust, и так далее), так что типы — не признак функционального программирования

и, кстати, АТД — ещё один костыль, растущий из наложенных на себя же ограничений — отказ от исключений вынуждает велосипедить и сюда пихают АТД

а так-то в среднем он не так, чтоб и нужен

основа функционального программирования (согласно энциклопедии) — отказ от мутабельности, а не работа с типами (что есть частный случай ООП)

Только туда почему-то эту абстракцию завозят при каждом удобном случае. Промисы, async/await, корутины

мутабельные промисы.

мутабельные же корутины

(корутины вообще не свойство ФП опять же), иногда их даже делают стекфул - для явного определения переменных

@ednersky удалился, теперь вы вместо него? Тезисы и формулировки просто очень похожие.

да, того аккаунта больше нет, теперь этот :)

Мутабельность мира никак не противоречит лямбда-исчислению

нигде не утверждал, что противоречит. нигде не утверждал, что функциональная модель не полная.

утверждаю, что функциональная модель менее оптимальна чем императивная.

мало того, императивная модель может включать функциональную (если удобно), а вот наоборот - с большим оверхедом/костылями.

Монады — это просто абстракция

да, но абстракция неудачная. Императивное программирование - более удобная абстракция в большинстве случаев.

эквивалентность != оптимальность.

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

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

Сравните:

бесконечный контекст для ИИ vs простая мутабельность

если слева у нас 10^9 нейронов (чатгпт) и справа у нас столько же нейронов

то слева у нас 10^9 плюс бесконечность памяти, а справа столько же памяти, сколько требует 10^9 нейронов, просто веса храним в переменных, а не константах.

Интересное утверждение. Но ведь язык не должен и не может быть реальностью. Язык - это нечто, что только описывает реальность. И с этим лямбда-исчисление прекрасно справляется.

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

но мы говорим о том, насколько подходит инструмент для задачи, мало того заявлено: "божественный уровень", то есть предполагается идеальное соответствие. И вот в этом месте мы имеем ошибку.

Мир - мутабельный, соответственно модели мира в общем виде должны тоже быть мутабельными. Да иммутабельные модели тоже возможны, но в ряде случаев они будут требовать бесконечных ресурсов (память, например) или бесконечных усилий (монады, например).

Лямбда исчисление пришло в программирование из математики. Математика = язык моделирования реальности. Программирование = другой язык, частично пересекающийся с математикой (функциональное программирование), а частично нет (императивное программирование).

Если говорить о божественном языке, то это будет именно императивный язык максимально приближенный к человеческому. Мало того, возможно с развитием ИИ такой язык даже никогда не появится, поскольку на каком-то этапе задачи начнут формулировать именно на человеческом языке и понятие "язык программирования" уйдёт в небытие.

Я бы с этим поспорил. Сейчас функциональная парадигма очень популярна.

  1. популярность достаточно искусственная (много пиара, вроде вот этой статьи)

  2. но функционального кода очень мало. на TypeScript, что Вы привели в пример, пишут в императивном стиле: циклы, переменные, объекты и вот это вот всё. А именно те места, что сделаны в функциональном стиле - являются узким местом JS: реактивность. Смотри, например habr vs 200+ комментов = требуется суперкомпьютер, чтобы просто отобразить их.

Но ведь движение можно представить себе как смену неподвижных кадров.

можно. я же сразу сказал: да, эта абстракция полная, но она неудачная.

смотрите: берём Искусственный интеллект. Что нужно, чтобы он стал сильным? Нужно сделать ему самообучение. Это самообучение уже запрограммировали в рамках функциональной парадигмы: Вы можете открыть чат с gpt, дать ему уравнение, он его решит с ошибкой, вы поправите его ошибку и последующие подобные уравнения он будет решать верно. Но это только в пределах контекста. Что нужно, чтобы ИИ стал сильным? Нужно контекст расширить до бесконечности (и найти устойчивое положение между сумасшествием и интеллектом, но это отдельная тема) - оставаясь в рамках Ф-парадигмы, либо просто перейти к мутабельности.

Мутабельность потребует столько же ресурсов сколько есть сейчас (а трудности будут только в обеспечении устойчивости, о которой, как сказано, это отдельная тема), а иммутабельность требует бесконечного количества памяти.

Итого, для огромного пула алгоритмов: искусственный интеллект, работа с графами, базы данных, деревья и так далее, функциональное программирование не подходит или подходит куда хуже, чем императивное.

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

Лямбда исчисление и функциональное программирование не может быть божественным языком, поскольку сам мир - мутабельная структура. Мутабельность мира определяется вторым законом термодинамики (и не только им).

А лямбда исчисление и функциональное программирование - просто неправильная (неудачная) абстракция. Да полная, да целостная, но неправильная (неудачная) - входящая в противоречие с миром.

Поэтому, максимальную популярность получили именно императивные языки программирования: на них банально проще описывать (моделировать) реальность. Ну и программирование ИИ - топчик исследований на сегодня - насквозь мутабельная магия.

А монады - это костыль, попытка что-то исправить, в неправильной (неудачной), противоречивой предпосылке которая называется "отказ от мутабельности".

Ещё раз, откуда следует что это обязательный шаг?

примеры маугли это подтверждают

сход с ума при попадании в одиночное заключение (в том числе необитаемый остров) это подтверждают

С чего вы вообще взяли что человеку обязательно получать модель мира из общества?

не обязательно, но если он её не получает из общества, то он отстаёт от современного человека на миллионы лет

интегрировать выводы в самих себя они могут?

в пределах контекста - да.

только костыли в виде контекста тут работают

контекст - это аналог мутабельности.

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

если посмотреть на человека, то в детстве его память максимально мутабельна (и человек легко изучает такие сложные вещи, как новые языки и так далее), а во взрослом возрасте способность к обучению частично замораживается. Почему так? Очевидно потому, что если обучабельность сохранять, то даже накопленные положительные знания/опыт будут утрачиваться: ребёнок помимо того, что быстро всё учит, быстро же всё и забывает.

то есть построить самообучающуюся модель можно, но нужно вот эти все константы подобрать.

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

И вот в этом месте появится возможность экспериментировать с самообучающимися ИИ. как-то так

И? У вас логика следущая: "Для построения человеком модели мира, необходимо X, следовательно человек получает модель мира из X". Согласитесь, это бредовая логика.

нет "следовательно" - Вы додумываете. Это не следствие.

Все три пункта независимы (не являются следствием соседних):

  1. для построения человеком модели мира необходимо общество

  2. человек получает модель мира из общества

  3. человек так же может делать вклад в эту самую модель

если убрать общество, то человек сойдёт с ума и ни о какой модели мира речи уже не будет.

на некоторое время общество может быть заменено на интеллектуальные продукты, произведённые обществом.

Ну вот, я ж так и говорю, общество нужно не потому что оно должно передать некую модель мира которую человек никак не может получить сам, а по совсем другим причинам.

попав в одиночное заключение (в том числе необитаемый остров) человек сходит с ума.

Почему? Потому что система "самообучения" (которая пока не включена на постоянку у ИИ) работает постоянно. При отсутствии валидных обратных связей неронные веса пересчитываются так, что работа нейросетей становится невалидной.

Ну так вот именно, технологические ограничения совсем другие чем у ИИ.

мотивация - следствие воли (субъектности). Сильный ИИ определяют как "ИИ с самосознанием". Конечно, слабый ИИ отличается от сильного ИИ: слабый (инструментальный) уже построен, а сильный пока нет.

Уберите те ограничения что вы перечислили и человек

перестанет быть человеком и станет chatgpt.

центральное ограничение растёт из субъектности. И необходимость общества растёт из него же.

субъект имеет желания, волю, сам себе расставляет приоритеты, а потому не является универсальным: у этого предрасположенность к музыке, а у того к математике

С существующими ИИ не так, даже при отсутствии вышеуказаных ограничений они не могут САМИ выводить физические законы из наблюдений и интегрировать выводы в самих себя

у них отсутствует субъектность, но выводить физические законы из наблюдений могут.

https://habr.com/ru/articles/890674/

Ровно об этом и речь, что текущие технологии имплементируют только небольшой слой функциональности мозга человека.

многим открытиям в области ИИ менее десяти лет.

Да, так же как и без еды, сна, и ещё кучи других вещей.

мы об интеллекте говорим. Маугли - люди, которые решили вопросы с питанием.

Да, человек получает знания от других людей, но может и сам их получить, в отличие от текущих технологий ИИ.

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

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

он может технологически, но не может организационно. его нужно мотивировать, требуется педагогические усилия общества и т п

Чего это вдруг то, что мешает? Если человек может создать новый небольшой кусок модели мира, то что ему помешает создать кусок побольше?

  1. ограниченность длительности жизни

  2. проблемы с мотивацией

  3. мутабельность памяти (свойство "забывания")

Ну да, люди используют их, вкладывают эти модели в ии, а не само ИИ в себя.

в пределах контекста ИИ в себя отлично вкладывает.

вот даю ему уравнение - решает с ошибкой, поправляю, затем даю второе - решает уже без ошибки (но если дать новый контекст, будет решать с ошибкой)

так что самообучение уже моделировать умеют, вопрос в том, что длительное пока нет

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

Что "вон же пример с Маугли"?

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

А если знает, то как оно узнало, если единственный способ как вы говорите это получить эту модель от общества?

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

не понимаю, почему Вы игнорируете этот момент.

нельзя противопоставлять одно другому

В смысле? Это две разных позиции.

нет, одно дополняет другое.

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

В одной всё логично, один человек сам построил один кусок модели, другой сам построил другой кусок модели, после чего они все обьединили. В другой позиции человек сам вообще не может никакого нового куска модели построить, сидит ждёт пока другой человек ему всё "передаст".

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

Ну я бы сказал что это не то что "не включают" а "непонятно как сделать".

как сделать, как раз, понятно. Проблема в том, что в таком случае ИИ начинает обладать теми же недостатками, что и человек: вместо директивных заданий требуется создавать условия, вместо прямого обучения требуется заниматься педагогикой итп (я об этом даже статью писал - ссылку выше приводил)

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

Я говорил только о том что ИИ не сам построил свою модель и не умеет ее дорабатывать самостоятельно.

это справедливо и в переложении к среднему человеку, и даже к учёному.

Но насколько это нам нужно от ИИ это конечно вопрос сложный, может это нам и нафиг не надо.

с точки зрения познания структуры сознания, субъектности, воли, это, безусловно, надо

Нет там примеров, ИИ не применяет эти достроенные модели в своей дальнейшей работе, в отличие от человека

что значит не применяет? результаты труда ИИ точно так же используют в обучении ИИ и людей. Об открытых ИИ планетах теперь знает любой ИИ.

что такое построить с нуля?

без общества. вон пример же с "маугли".

Это эволюция а не какой то "человек" дала людям определенную базовую модель

нет у человека "базовой модели", смотри снова на "маугли" (ссылка на энциклопедию выше).

Так модель мира это что то, что строится сообща, где каждый вкладывает свой кусочек, или "модель мира передаётся от человека к человеку"

я не понимаю по какой причине Вы противопоставляете.

здесь вместо "или" нужно писать "и", потому что речь об одной и той же модели.

Вы уж определитесь какую точку зрения отстаиваете.

нет противопоставления. Это тавтология.

Ну блин, в том что эта не та модель которая находится ВНУТРИ самого ИИ, та модель меняется только человеком но не самим ИИ.

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

Однако это не говорит о том, что ИИ работает вне модели мира:

  • логические связи он выявляет

  • открытия делает

  • экстраполяции выполняет

чего Вам не хватает? субъектности? самообучения? будет когда-нибудь и то и частично уже есть другое.

Вы хотите сказать что вы не имели ввиду "модель мира передаётся от человека к человеку и никак иначе"?

именно это я и хочу сказать. модель мира передаётся от человека к человеку при помощи текстов, образов, картинок.

и конечно человек (как и ИИ) может эту модель достраивать (несколько примеров достраивания при помощи ИИ - выше).

Я не понимаю в чём спор.

И так понятно что человек может получить модель мира от другого человека, но может и сам ее построить

построить с нуля не может, только достроить. модель мира - общественная функция, равно как и разум вообще.

этим он отличается от существующих ИИ которые модель мира получают только от человека и не в силах построить ее самостоятельно

выше пример работ, выполненных ИИ: новые вещества, астрономические открытия и так далее. В чём отличие от человека? В том, что пока мало? Ну дык пока имеем начало пути

с вашим заявлением что модель мира "передаётся от человека к человеку таким же примерно способом, каким она передаётся от человека к ИИ - текстами и картинками".

а что здесь не так? Вы в школе учились? Учебники с картинками же видели? И чем информацию в Вас вкладывали учителя? Словами и рисунками на доске.

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

Какого такого источника знаний и способа валидации знаний?

общества

Мир и возможность с ним экспериментировать это и есть источник знаний, эксперимент это и есть валидация знаний.

нужно ещё важнейшее слагаемое - воля к этим действиям, а это слагаемое так же формируется обществом.

А то что другие люди нужны для поддержания психики человека, так это само собой

если Вы с этим согласны, то непонятно о чём мы спорим :)

без общества человек неизбежно сходит с ума и теряет адекватность. Тут уже не до построения моделей.

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

  • вычислительные ресурсы растут с ростом контекста

  • "правильные" знания могут замещаться "неправильными", что ведёт к снижению полезности

Думаю, у вас нет детей.

трое (27, 24, 16)

Иначе бы вы знали, что модель мира не «передается текстами и картинками».

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

могу рассказать больше, если интересно. Планирую про это очередной (таких много, но в основном упор на языки) бизнес запустить (но я не [только] языками собираюсь заниматься).

И кстати, я думаю, что детей типа Маугли вы тоже не встречали.

многие вещи человек не встречал, но может изучить.

вот здесь, например, описано довольно хорошо

Эффект мауг­ли

Те, кто жил в обществе животных первые 3,5—6 лет жизни, не могут освоить человеческий язык[2], ходить прямо, осмысленно общаться с другими людьми, несмотря даже на годы, проведённые в последующем в обществе людей, где они получали достаточно заботы. Это показывает, насколько важными для развития ребёнка являются первые годы его жизни. При от­сут­ствии вос­пи­та­ния и об­ра­зо­ва­ния в ран­нем дет­стве, ни­ка­кие по­сле­ду­ю­щие уси­лия не дают результата.

речь о построении модели мира, догадываться что вы имеете ввиду под интелектом неинтересно

дык модель строится интеллектом.

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

у кроманьонцев мозг такой же как у современного человека, но общество строило ту модель мира, что имеется десятки тысяч лет

Что помешает?

отсутствие мотивации, источника знаний, способа валидации знаний итп

Да при чём тут "выхлоп", вопрос в том может ли она вот это вот всё что вы перечислили САМА интегрировать с себя

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

Информация

В рейтинге
1 830-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Разработчик баз данных
Ведущий
От 1 000 000 ₽
SQL
PostgreSQL
Linux
ООП
Nginx
Golang
Kubernetes
Высоконагруженные системы
Tarantool
Lua