Здравствуйте, AlexRK, Вы писали:
ARK>На мой взгляд, разделяемые ссылки нужны редко. И как раз уникальные ссылки в Расте являются главным типом ссылок, а ARC там — сбоку припеку.
Ну, так какие проблемы то тогда? Раз разделяемые ссылки это редкость (хотя я не понимаю как без них делать иерархии объектов вроде HTML DOM), то GC будет идеальным дополнением к ним, так как на малых объемах GC рулит неимоверно. А вот ARC ваш нужен только тем кто GC не осилил.
ARK>Да нет, главные проблемы исключений — совсем не из-за ручного управления памятью. Про них я здесь уже писал. ARK>И в управляемых средах все проблемы исключений тоже присутствуют в полной мере.
Ты много писал, но внятно ничего не сказал. Давай, опиши нам здесь проблемы которые вызывают исключения в языках с GC. Думаю, ты начнешь вилять и не приведешь ни одного аргумента, потому что их нет в природе.
Мой аргумент очень прост. В С++ проблемы с исключением возникают из-за необходимости раскрутки стека. Почти любой объект в С++ обладает деструктором. При раскрутке стека нужно вызвать деструкторы. 99% объектов с деструктора занимаются освобождением памяти, а не каких-то других ресуросв. В языках с GC такой проблемы нет. Объекты контролируются GC. Банальный сдвиг указателя стека убивает ссылки на них и следовательно виртуально освобождает ссылки на объекты. Конструкции try/finally редки и несложно (без заметного оверхэда) реализуются. Инлайнингу это никак не препятствует.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.