• Критическая уязвимость серверов 1Cloud
    +3
    только я не вижу в этом комментарии ничего про шаблон c Windows?
  • Делаем «умный» контроллер для кондиционера на ESP8266
    +1
    за ближайшие 10 лет ни разу не видел сплит-систем, которые бы не умели держать температуру.

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

    Но максимальное использование встроенных в кондиционер возможностей должно позволить меньшими затратами жить на батарейке
  • Optane DC Persistent Memory — Optane в формате DIMM
    +1
    это хорошо показывает, как компания Intel относится по крайней мере к читателям Хабра.
  • Как начать писать код на Lisp?
    0
    Языки, на которых легко писать DSL, есть еще, это не только лисп.

    Наермиер, в рамках питона можно соорудить DSL поиск по «python dsl» вываливает кучу статей и даже видео. В той же группе, скажем и ruby.

    Из этого направления выпадает java, и может еще какие-то…
  • Как начать писать код на Lisp?
    0
    Кому-то нужен неигрушечный лисп в нотации json?

    Мне кажется, кому сейчас нужен современный клевый лисп — все на closure перешли.
  • Как начать писать код на Lisp?
    +2
    что такое «в нотации json»? Фигурные скобочки вместо круглых? Идентификаторы в кавычках?

    Кажется, что написать интерпретатор лиспа в любой нотации — это такой проект-на-выходные. Не удивлюсь, если внезапный 'npm install js-notated-lisp' вытащит пакет и установит. Хотя это скорее троллейбус из буханки хлеба…
  • Как начать писать код на Lisp?
    +1
    на вопрос «что писать на лисп?» ответ простой — всё.
    А вот «зачем?» — да, вопрос.

    Хорошо язык тем, что сам язык — суть AST, всё остальное сделано на нём самом же (ну, почти). Когда начинаешь «дмать на лисп», сначала обретаешь ясное понимание, как всё вокруг работает, и далее, если интересно — никаких ограничений.

    Ломать парадигмы в голове, на мой вкус лучше хаскелем (и потом на хаскеле тоже можно писать всё). По крайней мере, после сотен тысяч строк кода, что мне довелось читать за свою жизнь, очень хочется, что бы авторы были не ближе к машине, а ближе к сути прикладной задачи.
  • Создаем калькулятор с единицами измерений
    0
    оставлю это для пытливых
    github.com/typelevel/squants
  • Будьте осторожны, — Байкал-Т1! Или история одного проекта с попыткой применения «импортозамещения»
    +2
    очнуться от чего?
  • Будьте осторожны, — Байкал-Т1! Или история одного проекта с попыткой применения «импортозамещения»
    +3
    Меня тоже этот момент удивил, причем тут ключи от сейфа?

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

    — технический специалист прорабатывает тему.
    — по мере возникновения вопросов, или согласует с начальством, или сразу бумажную-формальную работу отдает коллеге, который (которая) вот эту часть сделает легко, быстро, и без ошибок.
  • Яндекс открывает Алису для всех разработчиков. Платформа Яндекс.Диалоги (бета)
    0
    майнер?

    — Алиса, посчитай найди для блока: 1213149287593485374563
    — Записывайте: 82762846284245
  • Яндекс открывает Алису для всех разработчиков. Платформа Яндекс.Диалоги (бета)
    0
    кстати, про голос.
    «Алиса, позови Бормотова» — и дальше мужским голосом. На фоне того, что в процессе общения с навыком, ни самой Алисы нет, ни других навыков, совсем другой голос наглядно бы показывал это.

    Воде же очевидный вариант кастомизации генератора речи, не?
  • Почему не стоит использовать двухуровневую архитектуру при разработке клиент-серверных приложений
    0
    «Как нужно делать» — сильно зависит от целей. От целей того, кто делает.

    Например, есть цель «заработать денег», а за написание вот такого кода платят больше — то нужно писать такой вот код.

    Хотя, конечно, можно «продать начальству» другой подход, показав на примерах, что если писать код по-другому, можно заработать еще больше денег.
  • Почему не стоит использовать двухуровневую архитектуру при разработке клиент-серверных приложений
    0
    > не стоит тратить время на подобные методы углубления в БД.

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

    > есть куда более важные вещи которые стоят внимания

    кроме способа оценки нужны метрики важности

    > основной массе стоит давать то, что сейчас очень востребовано на рынке.

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

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

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




    мне, например, регулярно приходится смотреть в сотни тысяч строк кода на Oracle PL/SQL, который до сих пор пишут. Среди основной команды разработки есть светлые головы, пишут они вполне себе современны код, насколько им позволяет инструмент и характер хадачи.

    Как-то в одном из подкастов обсуждали подходы к legacy, и человек сказал «за более чем 10 лет практики разработки софта, только один раз была возможность начать проект, всё остальное — работа с legacy». Помните об этом. 90% всего, что нужно — уже написано.

    Что бы эффективно выкидывать код написаный не в рамках концепции, которая вам нравится, нужно уметь хорошо такой код не только читать, но и понимать.

    В конце концов, PL/SQL — это просто еще один язык.
    У того же Оракла, например, есть ОО-расширение в PL/SQL. Подозреваю, что для кого-то это окажется открытием. Еще, например, есть ключевое слово deterministic, подсказывает компилятору, что функция чистая (привет, ФП!), и её можно использовать для построения индексов.

    Как бы то ни было, это всего-навсего один из способов записать ваши мысли. Важно учиться думать широко и уметь выбрать из множества способов тот, который в конкретном случае эффективнее.
  • Почему не стоит использовать двухуровневую архитектуру при разработке клиент-серверных приложений
    0
    видимо, вы очень мало занимаетесь разработкой.
  • Обзор системы Comindware Business Application Platform
    0
    2018 год, в разделе «Цены» — запросить цены?

    Это смешно.
  • Почему опытные разработчики пишут тупой код и как распознать новичка за километр
    0
    не понимаю в чем проблема.

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

    Чудес, к сожалению, в этом месте не бывает. Вот, у меня в списке дежурных фраз есть
    Тупые решения выигрывают у умных в 9 из 10 случаев. Будьте достаточно умны, что бы предлагать тупое решение

    Практически вся эта статья в одной фразе.
  • Почему опытные разработчики пишут тупой код и как распознать новичка за километр
    +9
    производительность процессоров растет быстрее, чем производительность людей.
    В тех 7% где не растет — будет не тупой код, и комментарий «не трогайте тут, выигрываем несколько тактов»
  • Meltdown: влияет не только на производительность
    +1
    «просадка будет значительная» — это прекрасное, неоспоримое доказательство.

    Да, я понимаю, что лично замеры не делали.
  • Meltdown: влияет не только на производительность
    +11
    Всегда будут люди, которым хочется показать фон рабочего стола, это понятно.

    Если человек хочет показать цифры, то он покажет цифры. Для этого даже скриншоты не нужны.
  • Визуальное программирование на языке ДРАКОН
    –1
    Проблема некоторых программистов, что они видят строки, то есть не очень далеко ушли от кодеров.
    Графическое представление алгоритма как раз и нужно для того, что бы наглядно логику алгоритма, то есть более высокий уровень.

    Не думаю, что есть готовый инструментарий, но посмотрите на пару-тройку-пятреку-десяток лет назад, сколько было удобный инструментов для JS? Сколько сейчас?
  • Визуальное программирование на языке ДРАКОН
    0
    нет никаких проблем отследивания зависимостей.

    Блок-схема (диаграмма итд) — это всего-навсего одно из представлений.
    Какие проблемы сделать diff?

    Есть же для xml diff, который не тупо строки сравнивает, а структуру документа, точно так же можно и для этого сделать. Если нужно, конечно
  • Перекрестное опыление: управляем Linux из-под Windows, и наоборот
    0
    простите, что немного оффтопик, но для меня было новостью, что microsoft умеет таки пакеты выкладывать в репозитории.

    Тогда еще большей остается загадкой, почему свои Linux Integration Services, они раздают через задницу в виде ISO'шника, с адовыми скриптами, и вот это всё.
  • Двойная бюстгалтерия* глазами программиста
    +1
    хочу сказать, что ваш начальный тезис — ошибочен.

    Везде говорят, что для минимизации ошибок нужно избегать дублирования информации,


    1. непонятно что такое «везде»
    2. вот я привел несколько примеров, когда наоборот — избыточная информация позволяет не только выявлять ошибки (CRC) но и корректировать их (ECC и прочие), или даже просто примитивное дублирование (RAID 1) повышает надежность хранения информации — то есть, в случае возникновения ошибок на этом уровне, это не приводит к ошибкам далее — используют ту копию, которая осталась целой.

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

    Что же касательно двойной записи в бухгалтерии, то судя по вашим комментариям к этой статье, вы не разобрались, и даже желания разобраться не видно.
  • Двойная бюстгалтерия* глазами программиста
    +1
    Избыточное кодирование — это все-таки не просто дублирование.


    RAID 1 — просо дублирование.
  • Двойная бюстгалтерия* глазами программиста
    +1
    Везде говорят, что для минимизации ошибок нужно избегать дублирования информации,


    В этом месте всем передает привет CRC, ECC, и прочие способы избыточно кодировать информацию, что бы было легко обнаруживать ошибки, корректировать и так далее.
  • НАСА предлагает избавить мир от угрозы Йеллоустонского супервулкана за $3 млрд
    0
    Билл Гейтс раздает деньги на полезные проекты, в больших количествах.
  • Хаос устраняет потребность в Мультивселенной
    0
    странно, что вы не дочитали буквально пару предложений
    что конкретно сделать — не очень понятно, а что получить — вот же, прямым текстом:

    Какое свойство человека делает его таким хорошим ситом?


  • Умный замок, взгляд параноика
    0
    кстати, ни слова не говорил о том, какой у меня уровень паранойи.

    Вопрос, не в том, проверен компилятор формально или нет. А в том, что заниматься проверкой «вот из этих исходников вот эти бинарники», имеет смысл только при условии, что вы доверяете «указанному компилятору», который сделает из исходников бинарники.

    Например, я могу доверять компилятору из кого-нибудь линукса. Или нет, линукс, это не достаточно параноидально. OpenBSD. То есть, нужно попросить автора прошивки, собрать свою прошивку вот этим компилятором. которому я доверяю, и выдать бинарники мне для проверки.
  • Умный замок, взгляд параноика
    0
    Берется такая же версия компилятора и линковщика, если полученный бинарник соответсвует представленному, занчит представленный собран из тех же исходников.


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

    К чему это я? Проверить, что вот эти бинарники из этих исходников получились имеет смысл только если процесс «получились» — уже проверен на безопасность.
  • Фантом: большая сборка мусора
    0
    В системе Фантом вы не видите никаких серьёзных проблем со ссылками, поэтому я предполагаю, что у вас в голове есть какая-то модель её функционирования.


    повторюсь: ОС Фантом на одном физическом хосте — это (грубо) одна копия jvm/.net или любой другой VM. А разные программы в ОС Фантом — это суть разные нити внутри этой самой jvm. Есть сейчас какие-то вопросы по управлению ресурсами внутри одной копии jvm? Примерно такой-же набор вопросов в ОС Фантом.

    Ключевое отличие от текущей ситуации с jvm:
    — если вы однажды сказали new SomeClass — вам не нужно предпринимать какие-то дополнитлеьные усилия по его сохранению/восстановлению между перезапусками самой системы — это делает ОС сама.
    — память-диск-сеть — для вашего процесса представляется единым API, который суть просто передать ссылку на объект.

    Само по себе persistance никакой не прорыв — есть в каком-то виде наверное вообще для всего.
    Сетевая прозрачность тоже давно известная штука, у jvm есть RMI, например. У того же erlang сетевая прозрачность вообще в базовой концепции. Наверняка можно найти еще примеров успешных промышленных реализаций в этом направлении для других популярных инструментов.

    Разница только в том, что в Фантом дадут всё это сразу, в удобном виде, как базовое API.

    Навскидку, если сейчас на jvm взять комплект akka + akka-cluster + akka-persistance, то можно с помощью напильника и какой-то матери получить примерно такую же среду выполнения как планируется в Фантоме. Список современных инструментов, у которых разное проникновение в промышленность, и для которых в виде библиотек реалихзована персистентность и сетевая прозрачность можно продолжать.

    ответы

    1. конечно, у каждого ресурса есть владелец
    2. при завершении процесса, сборщик мусора освободит все ресурсы, которыми владел процесс
    3. Очевидно, что если владелец передал ссылку на ресурс куда-то наружу, но не передал (разделил?) право владения, то возникает вопрос выбора — что с этим ресурсом делать.

    Сборку мусора по счетчику ссылок, в терминах владения можно сформулировать так: если объект получил у «системы» ресурс, и передал ссылку на него в другой объект — то в этот момент он разделил право владения ресурса с тем другим объектом. У ресурса число ссылок — суть число владельцев.

    Посмотрите на Rust, из того, что сейчас на слуху, это самое интересное место, где люди пытаются вот эти вопросы владения/передачи как-то красиво формализовать, что бы обеспечить автоматическое управление ресурсами.
  • Фантом: большая сборка мусора
    0
    как это копирование или некопирование данных влияет?

    Вы предлагаете каждому ресурсу добавить метку — PID владельца.

    это не я предлагаю. Вот, у меня windows вокруг, там есть такая утилита ProcessExplorer, которая залезает во внуренности системы, и показывает очень много чего. Мне, на самом деле, не важно технически, как именно это сделано, потому, что совершенно очевидно, всё это начинается со списка процессов, и далее там как-то к этим процессам подвязано.

    Вот есть документ в памяти, сейчас его владелец — ОС. Документ передали на редактирование какому-то приложению, что произойдёт?


    Отличный вопрос. Вот у вас есть в программе, в памяти объект. Вы вызываете некую функцию обработки, и передаете этой функции ссылку на этот объект. Что происходит?

    Процесс приложения при редактировании выделил у менеджера памяти пару новых блоков и добавил их в объект документа. Кто владелец новых блоков? Что с ними произойдёт при убиении процесса?


    Вот та функция внутри программы внутри jvm/.Net/итд (которой дали ссылку на объект) запросил еще памяти, ему выдали, что происходит? Кто владелец новых блоков?

    Могу сходу ответить на «что происходит после завершения функции» — если эти ссылки из этой функции никому больше не попали (функция не отдала эту ссылку в результатах своей работы), у них будет ref count = 0, и эти блоки освободит сборщик мусора.
  • Фантом: большая сборка мусора
    0
    я сходу не знаю какой-то одной ссылки, если dz знает — может сам выдаст.

    Запущенная программа имеет процесс, который владеет ресурсами ОС.


    «Процесс» — это такая запись в таблице процессов? А этот самый PID — это номер этой записи? Есть еще что-то важное? Область памяти в которую загружен код, какие-то стандартные дескрипторы stdin, stdout — это всё не важно. Это по сути тоже какие-то данные в той же таблице, которые можно узнать, зная PID.

    Что значит «владеет ресурсами»? Вот, в программе вызывают malloc(), что дальше происходит? Понятно, что основной результат — адрес блока памяти. Но что значит «владеет ресурсами ОС»?

    Если ОС память выдает, то в той самой «таблице процессов» находит PID откуда пришел malloc(), и записывает «выдано памяти, по такому-то адресу, такого-то размера». То есть, «процесс владеет ресурсами ОС» — это тоже тупо запись в каких-то структурах данных внутри ОС, связанных с этим PID?

    Что значит «освободила ресурсы»? Отправила программа в ОС «сообщение»" free()? Никто не заставляет программу освобождать память, перед тем как сказать system.exit()? Что в этом случае происходит? ОС смотрит в те самые таблицы-итд, находит там PID, находит все ресурсы с ним связанные, выполняет какие-то манипуляции с этими дескрипторами, размерами и так далее. Так?

    Что вообще такое «освобождение памяти»? Это отметка, что начиная с такого-то адреса, такой размер блока — свободен. Отметка, опять таки, в какой-то структуре внутри ОС. Как это сейчас принято делать, списки? Деревья?

    То есть, всё вот это — это просто изменение данных в системных структурах. Больше никаких физических действий не происходит.

    Что изменятся если у нас диск от ОЗУ неотличим? Правильно — ни-че-го.
    И это «неотличимо» работает давно, называется «виртуальная память». Если верить википедии, понятие «Вритуальная память» существует с 1956 года. На практике используется с 1969.

    То есть, какова бы ни была среда выполнения, ОС (эта самая среда),

    — запускает процессы
    — выделяет им ресурсы — malloc
    — умет освобождать конкретные ресурсы по просьбе процесса — free
    — умеет освобождать все ресурсы, по завершению процесса — я думаю, что сама запускает free по всему списку

    И мы только что разобрались, что всё это, просто суть данные в каких-то таблицах/списках/деревьяъ/структурах, как там оно реализовано.

    Что такое «протекаюзщая программа»? Программа, которая не вызвает free. Но с точки зрения ОС, это означает, что где-то там в её структурах, есть данные про эти куски памяти. И как только программа говорит system.exit() — ОС знает, все эти ресурсы свободны, и сама вызывает free.

    Кто или что помешает в ОС Фантом реализовать system.exit()?
  • Фантом: большая сборка мусора
    0
    На эту тему автор пишет уже больше десяти (двадцати?) лет, в разных местах.

    процессов в традиционном понимании в этой ОС нет


    Вот у вас сейчас, в классической ОС, программа — это такой файл на диске. Она «остановлена»? Что случается, если вы её «запускаете»? Просто подумайте. А теперь представьте, что диска как такового нет — всё некая память, которая не пропадает сама по себе. Как изменится ваш ответ на тему «запуск программы»?

    Разница между «запущенной программой» и «незапущенной», только в простом факте: «запущенная» программа получает некие события «извне», и может сама какие-то события генерировать, и куда-то там отправлять. Например запросить кусок памяти, обратиться по сети к какой-то другой программе.

    Что означает для программы «завершила работу»? Перестала обрабатывать события извне. По своей внутренней воле. И перестала сама генерировать события. Последнее событие, которое она сгененрировала — сообщила системе — system.exit(0)
  • Фантом: большая сборка мусора
    0
    Только программы периодически перезапускают.


    при невозможности рестарта процесса


    Любой объект можно создать когда нужно, а когда не нужно — убить.
    С чего вдруг какие-то процессы в Фантоме станут неубиваемые или неперезапускаемые? Кто запретит? Таки лично dz будет приходить и говорить, что грешно процессы перезапускать?

    Особенно странно звучит эта гипотеза в рамках концепции платформы, которая принципиально 100% managed.
  • Фантом: большая сборка мусора
    0
    этот мой «гипотетический пример» — он везде вокруг. По крайней мере, пока Фантом не начал массовый захват мира ;)

    Но вы опять по какую-то ОС — забудьте. В случае Фантома, если довольно грубо, то ОС — это современная программа. Программы Фантома — нити внутри современной программы. Нить возвращает программе стек? Остальные все ресурсы во владении самой программы? Вот так и будет в Фантоме. Нет никакого ни юзер- ни другого спейса. Прослойка VM и сразу железо.

    Если вы сейчас в программе запускаете нить, что бы она сделала для вас полезную работу, нить в ходе этого нажрала гигабайты памяти, что происходит?
    Либо, ссылка на эти гигабайты осталась в стеке, после освобождения стека протухла, и гигабайты подберет сборщик мусора, или нить отдала «полезное нажратое» вам в качестве результата — «на, слушай, сам выкинь, да!» (анекдот про бумеранг)
  • Фантом: большая сборка мусора
    0
    Разница в том, что при закрытии приложение освобождает утекшие ресурсы


    прошу еще раз посмотреть на аналогию. В случае фантома «закрытие приложения» — это суть «завершилась нить» в тех приложениях которые сейчас.

    Куда переносятся какие ресурсы из нити? Вот будет всё то же самое.

    Сейчас, например у jre память можно жестко ограничить при запуске, и процесс внутри, будет получать отлупы.
    Всё ровно то же будет происходить в Фантоме, никакой качественной разницы не будет.
    То, что условно памяти станет несколько ТБ, я заметной разницей не считаю ;)

    Попробую совсем тезисов: архитектура фантома не дает каких-то там заметных преимуществ в автоматическом управлении ресурсами. Наличие мозга у программиста всё еще требуется, аккуратность работы — всё еще важна важна. В то же время, каких-то заметных недостатков тоже нет — если программист с мозгом и аккуратен, на него не свалятся какие-то внезапные проблемы.
  • Фантом: большая сборка мусора
    0
    Сейчас утечка памяти живёт до закрытия приложения. Если файловой системы нет, утечки не на виду.

    Если утечка не на виду, может это и не утечка вовсе?

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

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

    Хотя, за счет более стройной архитектуры в целом, может оказаться, что инструментарий для мониторинга/анализа и может быть даже автоматических каких-то реакций в таких ситуациях, будет проще реализовать.
  • Фантом: большая сборка мусора
    0
    Возьмем, например, String. Это data class? Он может протекать?
    Возьмем, например, какой-нибудь BinaryTree. Это будет data class? Оно сможет протекать? Там будут виртуальные методы? Или, с другой стороны — нужно ли требовать где-то у таких классов отсутствие виртуальных методов?

    «Нет сериализации».
    Те же самые String и BinaryTree — их совсем нельзя будет сериализовать? Кто-то запретит мне из них сделать json или xml? Так и представляю, приходит dz и ufm, и грозят пальцем «ай-ай-ай, не сериализуй! Грешно! Будешь всю жизнь в SOAP долбиться!»

    Что сейчас происходит, если программист забывает какую-то ссылку внутри?
    Скорее всего в случае Фантома будет ровно то же самое. И просто «добавить персистентность» и «избавить от сериализации» на уровне системы, не сделает автоматически всех программистов умными.

    Как и «добавь вывод типов» — тоже. Как и «добавь зависимые типы» — тоже не сделает.
    Инструменты со строгой типизацией помогают человеку меньше ошибаться.
    Вывод типов компилятором — помогают меньше писать руками.
    Зависимые типы — позволяют исключить еще целый класс ошибок, и еще меньше писать руками. Чем больше вы добавляете мозгов/математики инструменту на уровне концепции, чем больше инструмент может проверить, по сути сужая область в которой программист может нафигачить — тем меньше ошибок.

    Но персистентность — это ведь ортогональная штука ко всему этому. Отсутствие сериализации — это просто выкидывание целого класса тупой работы. Это уменьшает количество ошибок, но не концептуально, а рутинно — меньше работы — меньше ошибок.
    Да и потом, давно уже всю сериализацию генерируют, не?
    javaxb, protobuf, и вот это всё.
    Но если у меня есть «документ», как суть, как понятие, он же как-то будет в системе представлен? Будет это data class, или будет это вполне себе smart class — у которого будет внутри какого-то метода while true, но не такой явный, который моймает компилятор, а заумный?

    Если человек хочет прострелить себе ногу — он её прострелит.
    Могу только повторить тот пример, с которого начал — представьте сейчас любую программу на managed платформе, у которой внутри запускаются отдельные потоки. Вот это примерно то же самое. Просто у современных программ есть какие-то отдельные концепции типа «файл», «база данных», «сеть», а Фантому эти концепции ненужны. И просто не нужно будет мне из какого-то BinaryTree, делать BinaryTreeJson, но не потому, что dz меня предаст анафеме, а просто с точки зрения здравого смысла — зачем заниматьая какой-то фигнёй, если можно прям сам объект отдать, и там всё правильно поймут?
  • Фантом: большая сборка мусора
    0
    «файл» — в данном случае, суть «документ», и конечно, есть же сейчас понятие data class?

    Не понимаю, как экземпляр data class может чо-то там сам решать, ну разве что только если у него будут в комплекте какие-то ACL, которые что-то там ограничат. В любом случае — он эе откуда-то взялся, его кто-то создал, и ссылку на него куда-то передал. Или вместе с понятием «владение» или просто, расрашил (полайкал, ретвитнул :)

    И вот этот data class — он сам по себе протекать не может. В него кто-то может че-то напихивать — да. Но ровно так-же, кто-то другой, должен уметь проверить, че там напихали, и лишние удалить.

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