Здравствуйте, alex_public, Вы писали:
_>Ну так в отличие от довольно мутного понятия "поддержка иммутабельности в языке" модель акторов имеет подробные описания... )
Не согласен. "поддержка иммутабельности в языке" понятие предельно ясное, а "модель акторов" — это скорее баззворд.
_>С чего бы это? Как раз мутабельной копирование не требуется.
Разумеется требуется. Создать версию мутабельной структуры без копирования не получится.
_>А что там этим примером? Ответ выдаёт неправильный или работает не быстро? )
Условиям задачи не соответствует. Код, работающий с вашей "иммутабельной" структурой, который неправильный ответ выдает — пишется тривиально, да и написан. Скорость не впечатляет, та же, что и у аналога на хаскеле.
_>Ну так если в дополнение к стеку будет разрешено делать ещё new/delete (только для больших данных) внутри классов (т.е. наружу не выходит и управляется через RAII и тот же стек), то уже будет достаточно для подавляющего числа задач.
У вас тут телега впереди лошади. "Подавляющим большинством задач" объявляются те, для которых достаточно "управления через RAII" — вот так вернее. Все остальные юзкейсы для программиста на низкоуровневом языке в "слепой зоне".
Как выяснилось из опытов с MLkit, управления даже с помощью менее ограниченной техники чем RAII — вывода регионов — для высокоуровневого кода недостаточно. О чем я уже писал.
_>В общем случае нет, в том смысле что мы не не можем написать что-то типа универсального сборщика мусора сразу для всех задач. Но мы без проблем можем это сделать в практически каждой конкретной задаче.
Реализация управления памятью для "практически каждой конкретной задачи" это совсем не то, что ожидается от высокоуровневого языка. Высокоуровневый язык — это абстрагирование от размещения и управление памятью, которое хорошо работает в общем случае.
_>Идея понятна. Но не понятен пример реальных разделяемых данных в каких-то редакторах. Я вот вспоминаю что Word, что Excel (про программистские редакторы вообще молчу), что графические, везде максимум ссылки между документами встречаются и никакого разделения.
10 правок дают 11 версий документов, разделяющих 90% данных. Речь, впрочем, была не про пользовательские документы, а про структуры данных, с которыми программист работает.
_>Может быть такие вот иммутабельные структуры решают очередную виртуальную академическую проблему? )
Иммутабельные структуры решают реальную проблему, которая называется "удобство программиста". Работать с персистентной версией структуры данных удобнее, чем с эфемерной как раз за счет версионности.
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll