LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

Большая часть проблем решается счетчиками ссылок, но их горе-оптимизаторы порой не применяют, потому что «накладные расходы». А потом софтина почему-то падает.

Потом в GNOME хватаются за голову: их гуйня жутко тормозит из-за каскадов деструкторов.

во-первых, потому что C++ сделан так забавно, что не позволяет реализовать достаточно zero-cost-овый shared_ptr — механизм intrusive container в целом плохо поддерживается;

Мужики и не знали.

во-вторых, один из величайших провалов Страуструпа — это совмещение деструкторов и высвобождения памяти

Бред. Деструкторы и высвобождение памяти связаны примерно никак. Деструктор объекта освобождает ресурс, которым тот владеет. Конкретно умные указатели из стандартной библиотеки С++ владеют памятью И объектом, поэтому удаляют и то, и другое. Никакой помехи разъединить это нет, например так делают в гугле.

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

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

полнейшего бардака и переусложенности в языке

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


Клиника.

Исходная версия Siborgium, :

Большая часть проблем решается счетчиками ссылок, но их горе-оптимизаторы порой не применяют, потому что «накладные расходы». А потом софтина почему-то падает.

Потом в GNOME хватаются за голову: их гуйня жутко тормозит из-за каскадов деструкторов.

во-первых, потому что C++ сделан так забавно, что не позволяет реализовать достаточно zero-cost-овый shared_ptr — механизм intrusive container в целом плохо поддерживается;

Мужики и не знали.

во-вторых, один из величайших провалов Страуструпа — это совмещение деструкторов и высвобождения памяти

Бред. Деструкторы и высвобождение памяти связаны примерно никак. Деструктор объекта освобождает ресурс, которым тот владеет. Конкретно умные указатели из стандартной библиотеки С++ владеют памятью И объектом, поэтому удаляют и то, и другое. Никакой помехи разъединить это нет, например так делают в гугле.

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

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

полнейшего бардака и переусложенности в языке

Этот же персонаж предлагает выкинуть шаблоны и исключения.


Клиника.