Здравствуйте, Sinclair, Вы писали:
V>>В смысле "спорное утверждение"?
S>В прямом. И про то, что это — ошибки, и про овердохера миллиардов.
Сказал же — нарушение LSP.
V>>А как же принцип подстановки Лисков?
S>Прекрасно. А что с ним не так?
Ты его нарушаешь через явный if.
С этим сразу на пересдачу, почему нельзя так делать. ))
V>>Это сразу на пересдачу...
S>Ну так приходите на пересдачу, если завалили. Пока я вижу, что вы не понимаете терминов, которыми пользуетесь.
Это всё вода на киселе ни о чём.
Ты давай конкретней, плиз, а то сии эмоции "я очень-очень считаю, что вы очень-очень неправы" — позиция безумца.
Где аргументы? Выкладки? Конкретика?
S>Например, у вас есть какие-то заблуждения о совместимости алгебраических типов с LSP.
Фуф... Ты на моей памяти делал эту ошибку уже много раз, и продолжаешь совершать одну и ту же ошибку — у тебя тут НЕТ чистой алгебраической системы типов, коль ссылочные типы данных отделяются явным образом от нессылочных из-за мутабельности данных и отсутствия GC.
Сосредоточься, плиз: в иммутабельной алгебраической системе типов с GC ссылочная семантика неотличима от семантики значений! А раз нет ссылочной семантики, то неоткуда взяться null!
А в обсуждаемой системе типов имеем хренвам — отсутствуют любые гарантии и "хорошие практики" относительно алгебраических типов.
Плюс
система типов открыта, т.е. даже полноту диспетчеризации ПМ в общем случае гарантировать невозможно.
В итоге, привет
костыли, выполненные в механике IoC — в прошлые годы я тебе показывал
единственный валидный способ работы с такими типами в указанных ограничениях, но ты и там плохо понимал, почему именно IoC является единственно корректным способом работы в этих ограничениях:
http://www.rsdn.org/forum/philosophy/8956284.1
Ругался на эту элементарщину зачем-то, чем сильно удивил.
Так и не разобрался до сих пор?
Ну так спроси коллегу novitk, он такие вещи понимает очень хорошо и у него на таких как ты больше терпения.
В общем, в этих ограничениях ты можешь полагаться только на абстракции ссылочных данных в сочетании с абстрагированием ф-ий через те или иные разновидности диспетчеризации ф-й: явные указатели на них, объекты-функторы, встроенные таблицы виртуальных ф-ий в языках со встроенным ООП и т.д. — все перечисленные (или аналогичные) подходы пригодны для реализации IoC механики над этими недоалгебраическими типами, где по ссылке я показал корректный способ работы с такими типами. И там ведь хорошо видно, что это банально неудобно, блин!
V>>Дык, программисты прошлого придумали концепцию абстрактного итератора, чтобы не нарушался принцип подстановки.
S>Да, точно. Смысла слов вы не понимаете, продолжаете фонтанировать чушью.
Т.е. опять не в состоянии пояснить своё несогласие?
Мне так понимать эту несдержанность? ))
LSP ведь очень прост, и как раз абстрактный итератор — один из наилучших примеров следования этому принципу.
Причём, это отличный пример как в оригинальной реализации типов/подтипов, так и в соседней на лямбда-кубе системе типов с параметризуемыми термами (генериками/шаблонами).
V>>Ага, точно!
S>Ну, вот видите.
V>>Ну так ошибку на хреналлион денег совершил Вирт, а не Хоар, получается?
S>Нет, т.к. null-refernce был в Algol W до Паскаля.
Не-не-не, проги глючат даже в защищённой памяти вовсе не из-за null (бо по null честный вылет), а из-за обращения к мусорным адресам — к удалённым объектам или за пределы массивов, в т.ч. "условных" массивов, т.е. динамически выделенных "просто участков памяти".
А по null уже лет 30 никуда обратиться невозможно.

Но ошибки на хреналлиарды продолжают происходить!
Именно поэтому я сразу обозвал "проблему null" преувеличением и перетягиванием одеяла постаревшего Хоара на себя. ))
S>Можно компенсировать отсутствие эрудиции логикой: как должна была работать программа на языке, где нет операций освобождения памяти?
Ты никогда не писал на Фортране или Бейсике?
Ил просто на Паскале без динамического выделения памяти? ))
Программы тех лет не работали 24x7 в сервисах/облаках, они запускались, читали input, обрабатывали его и давали output.
В этом сценарии освобождение памяти весьма опционально, да и пулы объектов никто не отменял.
S>Можно компенсировать отсутствие логики тщательностью поиска: пойти да почитать, как были устроены реализации Algol W.
S>Вы зачем-то компенсируете отсутствие всего этого безудержным фантазированием. Это, как бы вам сказать, прямо красный флажок для разработчика при устройстве на работу.
S>http://i.stanford.edu/pub/cstr/reports/cs/tr/68/98/CS-TR-68-98.pdf
Фуф... Не читать то, что
сам приводишь в кач-ве аргументов — вот красный флажок

По ссылке у тебя некая альтернативная реализация Algol W, где прямо указаны отличия от спецификаций Хоара и Вирта.
S>https://softwarepreservation.computerhistory.org/ALGOL/book/Satterthwaite-AlgolW_Impl.pdf
S>Читайте, просвещайтесь.
Кусок спецификации той же самой альтернативной реализации, т.е., вторая эта ссылка избыточна, и?
Ты и этого не заметил? ))
Но только зачем ты столько бегал, если чуть более поздний
Algol 68 уже требовал сборку мусора прямо по своей спецификации?
Зато Algol W в своей спецификации сборку мусора не требовал.
Есть же вики:
https://en.wikipedia.org/wiki/ALGOL_W
Есть другие ресурсы:
https://grokipedia.com/page/ALGOL_W
Ну и как ты собрался что-либо "доказывать" при таких вводных?
Это ж натуральное безумие...
V>>Попробуй еще раз...
S>Смешно.
Местами смешно, конечно.
Но когда упоротость переходит границы здравого смысла, то уже досадно за потраченное время.
Ну пусть тогда будет просто порка сугубо как напоминание остальным, что надо быть (а) тщательнее и (б) уметь вовремя остановиться, если вдруг пошёл не туда. ))