LINUX.ORG.RU

познать Rust

 


2

6

Доброго времени суток. Ищется материал по Rust, где:

1. В сжатой, но понятной форме изложено положение Rust в контексте других языков. В чём суть его новизны. В качестве базы ожидается C++, Java, Common Lisp. Желательно, с примерами кода.

2. Критика. Какие грабли уже проявили себя.

Желательный объём - до 5 страниц текста.

★★★★★

Ответ на: комментарий от ilammy

Или, говоря про наезды, ты имел в виду Rust?

den73 ★★★★★ ()
Ответ на: комментарий от den73

Нет, именно про Java.

Не прижились, именно потому что «неудобно». И исправить теперь нельзя, потому что обратная совместимость и API надо тащить, каким бы уродским он ни был. Существующая уродливость API отталкивает от возможной дальнейшей её эскалации попытками сделать «всё как надо». Поэтому их просто не трогают, от греха подальше.

Как мне кажется, дело всё в том, что правильная обработка ошибок — это сложно и муторно. Исключения дают соблазнительную возможность большинству людей ничего не обрабатывать, но при этом не делать undefined behavior. Тупо сделать throw, по пути finally/деструкторы (написанные умными людьми, которые обрабатывать ошибки всё же умеют) попытаются привести приложение во вменяемое состояние, а где-то наверху catch (Exception e) покажет пользователю сообщение. Это значительно лучше core dump или вообще выполнения непонятно какого кода в непонятно каком состоянии. С одной стороны стоит вот это удобное умолчательное поведение для тех, кому плевать; с другой стороны — помощь компилятора в обработке ошибок тем, кому это важно.

Ошибки — это часть API, а за API надо брать ответственность. А её никто не любит брать, поэтому проще сунуть голову в песок и оставить себе отходной путь в виде исключений, которые можно бросать какие угодно, откуда угодно, когда угодно, никого не предупреждая, не страдая от версионирования, и так далее.

ilammy ★★★ ()
Ответ на: комментарий от ilammy

Да, ошибки - это ад. Вот это точно понятно. А как сделать правильно - неведомо.

den73 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.