Re[6]: В Rust 1.0 исключений не будет
От: Cyberax Марс  
Дата: 05.11.14 19:58
Оценка: +1
Здравствуйте, VladD2, Вы писали:

C>>Тормозов там особо нет, в будущем планируется использовать DWARF maps для редких исключений.

VD>Что такое DWARF maps?
Табличная обработка исключений, когда адрес обработчика указан для каждого места, где может возникнуть исключение.

VD>Ну, как же не будет, когда этот сахар совершенно лишний? Ты же сам показал все эти "?." на ровном месте. И их будет 100500. Любой динамический ввод и все функции по кол-стеку будут пестрить этими "?.". Тогда уж их надо автоматом вставлять, чтобы не видно было. Но в чем тогда разница с исключениями? И как это может быть быстрее них?

Исключения можно забыть обработать (что бывает сплошь и рядом) — это основная причина отказа от них в Rust. Вдобавок, ?. требует правильного описания формата возможных исключений в сигнатуре.

C>>GC вообще пофиг.

VD>Да, я смотрю как он пофиг. Весь язык приседаниями набили из-за его отсутствия.
От отсутствия GC там вообще ничего не страдает. Скорее наоборот, для возможности использования GC делаются нехилые присядания.

C>>Смысл в том, что они хотят избежать неявного unwinding'а. Аргумент такой, что правильно писать exception-safe код очень сложно, и почти всегда оно сводится к перехватыванию исключений на каком-то верхнем уровне и вывод их в лог.

VD>Эти два утверждения противоречат друг-другу. Или "очень сложно", или "сводится к перехватыванию исключений на каком-то верхнем уровне и вывод их в лог".
Проблема в промежуточных уровнях, которые исключение пролетает.

C>>Вдобавок, есть вечная проблема с исключениями внутри деструкторов.

VD>Зачем делать выводы на базе языка старого как говно мамонта, автор которое упертый как баран? finally изобрели 100 лет назад. Он решает все проблемы. Да и конструкторы сами по себе вещь сорная. При наличии автоматического управления памятью она не особо нужны.
Не решает finally ничерта. Выброс исключения внутри finally — прямой аналог выбросу из деструктора, ровно с теми же проблемами.

VD>Это очередная догма. Бывает 100500 случаев. Где-то можно. Где-то нельзя. Я бы еще понял, если бы они сделали особый режим который можно было бы применять в некотором классе задач. Ну, там пометить функцию как не генерирующую исключения. Но просто лишать людей достижений компьюетрной науки — это маразм.

Я бы не называл исключения особым достижением. Скорее это кривой хак.

VD>Кстати, в D есть проблемы с исключениями в деструкторах?

Да. Те же самые.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.