История изменений
Исправление 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!.