Информация
- В рейтинге
- 1 830-й
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность
Специализация
Фулстек разработчик, Разработчик баз данных
Ведущий
От 1 000 000 ₽
SQL
PostgreSQL
Linux
ООП
Nginx
Golang
Kubernetes
Высоконагруженные системы
Tarantool
Lua
сам мир существует ровно до тех пор, пока отображается (отражается) в сознании
язык - способ отражения мира, а потому во многом, если не во всём, это тот же самый мир и есть :)
да я не против поспорить (для того, очевидно, написана статья со столь вопиюще некорректным утверждением прямо в заголовке), но для того, чтобы спорить требуется оперировать одинаковыми и постоянными во времени (спора) терминами (первый закон логики), а потому, увы, как бы это ни было Вам неприятно, придётся принимать именно термины энциклопедии - общепринятые термины
Это именно так.
Вот что говорит нам энциклопедия
Межа между функциональным и императивным программированием лежит именно в мутабельности.
Ваша проблема, что Вы всё время пытаетесь сочинить новые термины взамен общепринятых. А это нарушение первого закона логики.
нет. Наоборот. CPU по определению императивен, поскольку содержит мутабельные регистры и набор мутирующих операций. То есть императивный код языка будет легче отображаться на инструкции CPU, чем функциональный код. Вывод: если говорить об оптимизациях, императивный язык проще оптимизируется.
всё остальное - сводится к ООП
констрейнты, которые некоторые по недоразумению зовут теоремами, не являются теоремами. В этом легко убедиться попробовав записать в where секцию теорему Ферма, например.
можно. АТД - это цирковой номер, позволяющий в одной переменной хранить значения множества типов. Этот номер следствие из двух самоограничений
отказа от динамической типизации (её реинкарнация)
отказа от исключений
Чем больше типов собирается в одном АТД, тем более сложный и запутанный код на выходе - с одной стороны, и тем ближе этот код к его аналогу с динамической типизацией - с другой. Просто то, что должен бы делать компилятор, теперь делает человек.
Вообще Функциональное программирование и типы - это перенос значительной работы с компилятора на человека.
да пожалуйста. я не выступал против юнит-тестирования. Там, где они удобны - их нужно применять. Однако я всегда утверждал, что интеграционные и системные тесты имеют больший индекс полезности на строку написанного в тесте кода.
и обращал внимание на то, что констрейнты в типах (по недоразумению называемые теоремами) тесты не заменяют.
ага. ООП включает в себя понятие "наследование", не слышали?
имея Integer можно унаследовать от него Unsigned просто наложив на первый констрейнт.
в хранении результата прямо в объекте промиса.
то. некоторые языки выделяют корутинам собственный стек. Таким образом, все определяемые корутиной переменные хранятся в одном месте.
неудачный термин выбран. сорри.
там была оговорка, что эта концепция является полной, а потому противоречивость — имелось в виду именно плохая стыкуемость с реальностью, а сама стыкуемость оговорена и не отрицалась
потому что мутабельная модель мутабельного же мира будет ближе к оригиналу, чем иммутабельная.
это как попытка изобразить деревья имея только желтую краску и не имея зелёной
здесь снова ошибка: да, такой компилятор возможен, но в этом месте он будет иметь набор эвристик. что-то получится, что-то — нет
то есть далеко не в 100% случаях на выходе будет мутабельность там, где она требуется
а она много где именно требуется
кроме прочего, там где мутабельность требуется (ии, графы и так далее) программист ФП вынужден писать нечто более сложное, а потому задача у компилятора ещё более тяжкая
в императивных языках есть АТД (Raku, Rust, и так далее), так что типы — не признак функционального программирования
и, кстати, АТД — ещё один костыль, растущий из наложенных на себя же ограничений — отказ от исключений вынуждает велосипедить и сюда пихают АТД
а так-то в среднем он не так, чтоб и нужен
основа функционального программирования (согласно энциклопедии) — отказ от мутабельности, а не работа с типами (что есть частный случай ООП)
мутабельные промисы.
мутабельные же корутины
(корутины вообще не свойство ФП опять же), иногда их даже делают стекфул - для явного определения переменных
да, того аккаунта больше нет, теперь этот :)
нигде не утверждал, что противоречит. нигде не утверждал, что функциональная модель не полная.
утверждаю, что функциональная модель менее оптимальна чем императивная.
мало того, императивная модель может включать функциональную (если удобно), а вот наоборот - с большим оверхедом/костылями.
да, но абстракция неудачная. Императивное программирование - более удобная абстракция в большинстве случаев.
эквивалентность != оптимальность.
ещё раз: многие алгоритмы будучи реализованы иммутабельно требуют до в бесконечное количество раз больше памяти, нежели если их реализовывть мутабельно (искусственный интеллект, раскраска графов, деревья и так далее).
Да, как абстракция иммутабельная модель позволяет запрограммировать любой алгоритм, но на практике любой лишь в идеале (или с существенным завышением требований к ресурсам).
Сравните:
бесконечный контекст для ИИ vs простая мутабельность
если слева у нас 10^9 нейронов (чатгпт) и справа у нас столько же нейронов
то слева у нас 10^9 плюс бесконечность памяти, а справа столько же памяти, сколько требует 10^9 нейронов, просто веса храним в переменных, а не константах.
не должен. и да, иммутабельный язык тоже может описывать мир.
но мы говорим о том, насколько подходит инструмент для задачи, мало того заявлено: "божественный уровень", то есть предполагается идеальное соответствие. И вот в этом месте мы имеем ошибку.
Мир - мутабельный, соответственно модели мира в общем виде должны тоже быть мутабельными. Да иммутабельные модели тоже возможны, но в ряде случаев они будут требовать бесконечных ресурсов (память, например) или бесконечных усилий (монады, например).
Лямбда исчисление пришло в программирование из математики. Математика = язык моделирования реальности. Программирование = другой язык, частично пересекающийся с математикой (функциональное программирование), а частично нет (императивное программирование).
Если говорить о божественном языке, то это будет именно императивный язык максимально приближенный к человеческому. Мало того, возможно с развитием ИИ такой язык даже никогда не появится, поскольку на каком-то этапе задачи начнут формулировать именно на человеческом языке и понятие "язык программирования" уйдёт в небытие.
популярность достаточно искусственная (много пиара, вроде вот этой статьи)
но функционального кода очень мало. на TypeScript, что Вы привели в пример, пишут в императивном стиле: циклы, переменные, объекты и вот это вот всё. А именно те места, что сделаны в функциональном стиле - являются узким местом JS: реактивность. Смотри, например habr vs 200+ комментов = требуется суперкомпьютер, чтобы просто отобразить их.
можно. я же сразу сказал: да, эта абстракция полная, но она неудачная.
смотрите: берём Искусственный интеллект. Что нужно, чтобы он стал сильным? Нужно сделать ему самообучение. Это самообучение уже запрограммировали в рамках функциональной парадигмы: Вы можете открыть чат с gpt, дать ему уравнение, он его решит с ошибкой, вы поправите его ошибку и последующие подобные уравнения он будет решать верно. Но это только в пределах контекста. Что нужно, чтобы ИИ стал сильным? Нужно контекст расширить до бесконечности (и найти устойчивое положение между сумасшествием и интеллектом, но это отдельная тема) - оставаясь в рамках Ф-парадигмы, либо просто перейти к мутабельности.
Мутабельность потребует столько же ресурсов сколько есть сейчас (а трудности будут только в обеспечении устойчивости, о которой, как сказано, это отдельная тема), а иммутабельность требует бесконечного количества памяти.
Итого, для огромного пула алгоритмов: искусственный интеллект, работа с графами, базы данных, деревья и так далее, функциональное программирование не подходит или подходит куда хуже, чем императивное.
Соответственно о нём нельзя говорить "божественный уровень", потому что рядовые инструменты, что есть (императивные языки) имеют уровень сходимости с реальностью выше.
Лямбда исчисление и функциональное программирование не может быть божественным языком, поскольку сам мир - мутабельная структура. Мутабельность мира определяется вторым законом термодинамики (и не только им).
А лямбда исчисление и функциональное программирование - просто неправильная (неудачная) абстракция. Да полная, да целостная, но неправильная (неудачная) - входящая в противоречие с миром.
Поэтому, максимальную популярность получили именно императивные языки программирования: на них банально проще описывать (моделировать) реальность. Ну и программирование ИИ - топчик исследований на сегодня - насквозь мутабельная магия.
А монады - это костыль, попытка что-то исправить, в неправильной (неудачной), противоречивой предпосылке которая называется "отказ от мутабельности".
примеры маугли это подтверждают
сход с ума при попадании в одиночное заключение (в том числе необитаемый остров) это подтверждают
не обязательно, но если он её не получает из общества, то он отстаёт от современного человека на миллионы лет
в пределах контекста - да.
контекст - это аналог мутабельности.
ещё раз: введя полную мутабельность придётся отыскать вариант получения интеллекта, который не будет разрушаться этой самой мутабельностью.
если посмотреть на человека, то в детстве его память максимально мутабельна (и человек легко изучает такие сложные вещи, как новые языки и так далее), а во взрослом возрасте способность к обучению частично замораживается. Почему так? Очевидно потому, что если обучабельность сохранять, то даже накопленные положительные знания/опыт будут утрачиваться: ребёнок помимо того, что быстро всё учит, быстро же всё и забывает.
то есть построить самообучающуюся модель можно, но нужно вот эти все константы подобрать.
думаю, дорога к этому будет следующая. Сперва ИИ научат обучать обычных человеческих детей. Сейчас есть уровень условно соответствующий "ИИ проводит урок", а когда-то это доразвивается (чисто экстенсивное развитие), что "ИИ проводит курс", затем "ИИ обучает целому комплексу предметов", затем "ИИ берёт на себя полностью образование каждого человека".
И вот в этом месте появится возможность экспериментировать с самообучающимися ИИ. как-то так
нет "следовательно" - Вы додумываете. Это не следствие.
Все три пункта независимы (не являются следствием соседних):
для построения человеком модели мира необходимо общество
человек получает модель мира из общества
человек так же может делать вклад в эту самую модель
если убрать общество, то человек сойдёт с ума и ни о какой модели мира речи уже не будет.
на некоторое время общество может быть заменено на интеллектуальные продукты, произведённые обществом.
попав в одиночное заключение (в том числе необитаемый остров) человек сходит с ума.
Почему? Потому что система "самообучения" (которая пока не включена на постоянку у ИИ) работает постоянно. При отсутствии валидных обратных связей неронные веса пересчитываются так, что работа нейросетей становится невалидной.
мотивация - следствие воли (субъектности). Сильный ИИ определяют как "ИИ с самосознанием". Конечно, слабый ИИ отличается от сильного ИИ: слабый (инструментальный) уже построен, а сильный пока нет.
перестанет быть человеком и станет chatgpt.
центральное ограничение растёт из субъектности. И необходимость общества растёт из него же.
субъект имеет желания, волю, сам себе расставляет приоритеты, а потому не является универсальным: у этого предрасположенность к музыке, а у того к математике
у них отсутствует субъектность, но выводить физические законы из наблюдений могут.
https://habr.com/ru/articles/890674/
многим открытиям в области ИИ менее десяти лет.
мы об интеллекте говорим. Маугли - люди, которые решили вопросы с питанием.
вот доля соотношения знаний которые он может получить сам и знаний, что получает от общества сильно близка к нулю.
он может технологически, но не может организационно. его нужно мотивировать, требуется педагогические усилия общества и т п
ограниченность длительности жизни
проблемы с мотивацией
мутабельность памяти (свойство "забывания")
в пределах контекста ИИ в себя отлично вкладывает.
вот даю ему уравнение - решает с ошибкой, поправляю, затем даю второе - решает уже без ошибки (но если дать новый контекст, будет решать с ошибкой)
так что самообучение уже моделировать умеют, вопрос в том, что длительное пока нет
но с длительным обучением и у человека проблема: мотивация мешает
примеры маугли показывают, что человек без общества не может ни-че-го. Если сегодня отключить интернет, человечество будет отброшено на сотни лет назад. А если отключить лет через пятьдесят - то на тысячи.
я несколько раз выше повторил, что человек получает знания от других людей, но и может работать над их (знаний) развитием.
не понимаю, почему Вы игнорируете этот момент.
нельзя противопоставлять одно другому
нет, одно дополняет другое.
львиную долю своих знаний средний человек получает от общества. некоторую долю развивает сам. у немногих учёных соотношение долей иное чем у среднего человека, но и что с того?
ещё раз: пример маугли показывает, что человек без общества не может построить модель равноценную общественной. человек без общества имеет уровень животного, отстаёт на миллионы лет развития.
как сделать, как раз, понятно. Проблема в том, что в таком случае ИИ начинает обладать теми же недостатками, что и человек: вместо директивных заданий требуется создавать условия, вместо прямого обучения требуется заниматься педагогикой итп (я об этом даже статью писал - ссылку выше приводил)
и получается, что слабый (или инструментальный) интеллект обладает "всезнанием" и универсальностью, а сильный (субъектный, самосознающий) этих свойств лишается именно из-за субъектности и мутабельной памти.
это справедливо и в переложении к среднему человеку, и даже к учёному.
с точки зрения познания структуры сознания, субъектности, воли, это, безусловно, надо
что значит не применяет? результаты труда ИИ точно так же используют в обучении ИИ и людей. Об открытых ИИ планетах теперь знает любой ИИ.
без общества. вон пример же с "маугли".
нет у человека "базовой модели", смотри снова на "маугли" (ссылка на энциклопедию выше).
я не понимаю по какой причине Вы противопоставляете.
здесь вместо "или" нужно писать "и", потому что речь об одной и той же модели.
нет противопоставления. Это тавтология.
я не понимаю мысль, которую Вы пытаетесь донести. Да у ИИ пока не включают самообучение на большой размер контекста. Да ИИ пока обучают условно-вручную.
Однако это не говорит о том, что ИИ работает вне модели мира:
логические связи он выявляет
открытия делает
экстраполяции выполняет
чего Вам не хватает? субъектности? самообучения? будет когда-нибудь и то и частично уже есть другое.
именно это я и хочу сказать. модель мира передаётся от человека к человеку при помощи текстов, образов, картинок.
и конечно человек (как и ИИ) может эту модель достраивать (несколько примеров достраивания при помощи ИИ - выше).
Я не понимаю в чём спор.
построить с нуля не может, только достроить. модель мира - общественная функция, равно как и разум вообще.
выше пример работ, выполненных ИИ: новые вещества, астрономические открытия и так далее. В чём отличие от человека? В том, что пока мало? Ну дык пока имеем начало пути
а что здесь не так? Вы в школе учились? Учебники с картинками же видели? И чем информацию в Вас вкладывали учителя? Словами и рисунками на доске.
Конечно, у человека есть органы восприятия, а у ИИ они пока радикально ущербные ("загрузить картинку" - не то же самое, что зрение). Но основные способы обучения как были так и есть: картинки и текст.
общества
нужно ещё важнейшее слагаемое - воля к этим действиям, а это слагаемое так же формируется обществом.
если Вы с этим согласны, то непонятно о чём мы спорим :)
без общества человек неизбежно сходит с ума и теряет адекватность. Тут уже не до построения моделей.
сейчас в пределах контекста уже может. просто если делать контекст огромным, то возникают две проблемы
вычислительные ресурсы растут с ростом контекста
"правильные" знания могут замещаться "неправильными", что ведёт к снижению полезности
трое (27, 24, 16)
я экспериментирую с обучением живых людей и знаю (экспериментально выяснил), что это обучение возможно автоматизировать. Например тупая-медитативная работа с anki карточками позволяет изучить (именно получить понимание, а не тупое зазубривание) раздел в научной дисциплине за минуты-часы. Такие вещи, как правила дорожного движения изучаются с их помощью всего за 3 часа так, что человек не просто правильно отвечает на 800 имеющихся вопросов, но и сохраняет эти знания многие годы (опять же результат моего экспериментирования).
могу рассказать больше, если интересно. Планирую про это очередной (таких много, но в основном упор на языки) бизнес запустить (но я не [только] языками собираюсь заниматься).
многие вещи человек не встречал, но может изучить.
вот здесь, например, описано довольно хорошо
дык модель строится интеллектом.
у кроманьонцев мозг такой же как у современного человека, но общество строило ту модель мира, что имеется десятки тысяч лет
отсутствие мотивации, источника знаний, способа валидации знаний итп
не вижу причин, почему не сможет. Другой вопрос, что как только мы включим такой системе самообучение, то с субъектностью у неё проявятся не только достоинства человеческого мышления, но и его недостатки. И в этом месте ИИ утратит всезнание и станет обычным э... интеллектом.