Re[67]: Nemerle через 5 лет - выстрелит или скончается?
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.10.14 05:11
Оценка: :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Во-вторых, совершенно без разницы. Я показываю, что EA тут не даёт никакой type safety. Эта type safety в управляемых языках есть и без EA, а в C++ возможна без EA.
Я понимаю, что вы показываете. Я вам пытаюсь объяснить, что подход управляемых языков — "давайте начнём с корректной программы (т.е. с type safety), а затем сделаем её быстрой (например, снизим нагрузку на GC путём EA)". А в С++ подход "давайте начнём с быстрой программы (т.е. дадим пользователю самому управлять временем жизни объектов), а потом безуспешно будем пытаться сделать её корректной".


EP>Ты говоришь про общий случай. Для общего случая в C++ возможен только conservative GC, что уже обсуждалось выше по топику.

Ну, вот и договорились.

EP>И, конечно же, никаких fixed и unsafe там быть не может, да?

Может, но это не влияет на моё утверждение.

EP>Теоретически.

EP>А практически, для таких сценариев и при необходимости гарантий (например при невозможности достижения их одними guidelines) — можно запретить брать raw указатели на такие GC объекты — частично языком + простейшим внешним верификатором.
У нас с вами противоположные понятия о "теоретически vs практически". Я считаю, что ваша идея про необходимость гарантий — это чистая теория, не подтверждённая на практике. А практика — это наличие а) компиляторов, которые неспособны запрещать брать указатели на особые объекты, в том числе и непреднамеренно, б) библиотек, которые несовместимы с такими ограниченными объектами, и с) наработанной прикладной кодовой базы на основе компиляторов и библиотек, которую никто не возьмётся переписывать в светлое будущее ради того, чтобы получить хоть какие-то гарантии в одном крошечном кусочке нашего проекта с 15-летней историей.
EP>А кто тогда позволяет? ObjectDisposed и OutOfBounds?
Конечно.
EP>Так это реальный C++, удовлетворяющий стандарту, а не аналог
Покажите мне этот "реальный C++". Увы — он существует только в вашем воображении.
EP>Реализации никто не запрещает детектировать dangling pointer и т.п. Наоборот, UB в стандарте как раз позволяет это делать.


EP>shared state — это ref counted объект, грубо говоря std::shared_ptr<bool>. На него ссылаются и сам объект и все указатели.

EP>При разрушения объекта, он всего лишь записывает в этот флаг false.
Да, так будет работать. Интересно, отчего эта техника не применяется в управляемых средах? Двойная ссылка считается слишком медленной?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Отредактировано 24.10.2014 8:00 Sinclair . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.