LINUX.ORG.RU

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

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

Сам в своих аргументах не путаешься?

Нет.

Сначала апеллируешь к накладным расходам, потом к корректности.

Не вижу, где я апеллировал к корректности, но да, иногда накладные расходы влияют на корректность (реальное время). Ты же вроде из Sociomantic Labs?

Интерфейс должен отражать реальность и если функция может завершится ошибочно, это _должно_ быть отражено в ее интерфейсе.

Тем не менее, функции, которые могут позвать panic никак не отмечаются.

panic! - это аварийное завершение. Ошибка во входных данных не должна вызывать этого.

Почему же ты не воюешь против такой неявности?

А я и против исключений не воюю. Я просто считаю, что всё, что делается в Си++ (Java, Ada и вплоть до CLU) исключениями, можно сделать на ADT и макросах без потери читабельности кода.

Даже в С++ nothrow есть. Что помогает оптимизировать, кстати. В расте ничего подобного нет и не планируется?

Нет. В Rust нет исключений и оптимизации ничего не мешает.

Проброс ошибки, конечно, следует как-то подсахарить, но это не проблема.

Проблема. Сахар весь мусор не скроет.

Это не мусор, а равноправная часть программы. Скрывать его не нужно.

благодаря проблемам С раст и нужен.

Отсутствие исключений - не самая большая проблема Си, говорю это как действующий прогер на Си. Параметризуемые типы, контроль за памятью, алгебраические типы - необходимы, исключения... не уверен.

Т.е. инструмент ограниченного внутреннего использования. Как longjmp в Си. А в интерфейсах - возврат пары значений.

Ну и что мешает сделать так же в расте?

В Rust ты можешь абузить для этого вышеупомянутый panic!.

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

Сам в своих аргументах не путаешься?

Нет.

Сначала апеллируешь к накладным расходам, потом к корректности.

Не вижу, где я апеллировал к корректности, но да, иногда накладные расходы влияют на корректность (реальное время). Ты же вроде из Sociomantic Labs?

Интерфейс должен отражать реальность и если функция может завершится ошибочно, это _должно_ быть отражено в ее интерфейсе.

Тем не менее, функции, которые могут позвать panic никак не отмечаются.

panic! - это аварийное завершение. Ошибка во входных данных не должна вызывать этого.

Почему же ты не воюешь против такой неявности?

А я и против исключений не воюю. Я просто считаю, что всё, что делается в Си++ (Java, Ada и вплоть до CLU) исключениями, можно сделать на ADT и макросах без потери читабельности кода.

Даже в С++ nothrow есть. Что помогает оптимизировать, кстати. В расте ничего подобного нет и не планируется?

Нет. В Rust нет исключений и оптимизации ничего не мешает.

Проброс ошибки, конечно, следует как-то подсахарить, но это не проблема.

Проблема. Сахар весь мусор не скроет.

Это не мусор, а равноправная часть программы. Скрывать его не нужно.

благодаря проблемам С раст и нужен.

Отсутствие исключений - не самая большая проблема Си, говорю это как действующий прогер на Си. Параметризуемые типы, контроль за памятью, алгебраические типы необходимы, исключения... не уверен.

Т.е. инструмент ограниченного внутреннего использования. Как longjmp в Си. А в интерфейсах - возврат пары значений.

Ну и что мешает сделать так же в расте?

В Rust ты можешь абузить для этого вышеупомянутый panic!.