Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Активно защищайте кодRust просто не позволит вам просто так упустить ошибку. Вам придется либо обработать ее, либо пробросить ее наверх вызывающему, либо явно указать, что ошибка должна привести к завершению потока.
Забудьте о глобальных переменныхВ Rust нет проблем с глобальным переменными. Любое глобальное значение является неизменяемым и доступным из любого количества потоков. Изменяемым оно может быть только внутри unsafe кода.
Немного ООПВ Rust есть типажи и параметрический полиморфизм, которые дают очень широкие возможности по написании абстрактного кода, и все это работает без каких-либо накладных расходов во время выполнения.
Блокируйте небезопасные функцииВ Rust есть строгое разделение на безопасные и unsafe-функции. Последние можно вызывать только внутри unsafe-блоков.
Долой странный кодУ Rust есть rustfmt. Более того, проверки по именованию констант/переменных/типов встроены в качестве предупреждений в сам компилятор.
Будущее за многоядерными процессорамиПолностью поддерживаю. Вот только С никаким образом не помогает писать писать параллельный код. В отличии от Rust, который будет дотошно следить за использованием переменных и передачей данных между вашими потоками. И, опять же, все это работает без каких-либо накладных расходов.
Забудьте о true/false для success/failureИспользуйте вместо этого тип-суммы:
enum Result<T, E> {
Ok(T),
Err(E)
}
Немного о целых величинахВ Rust есть строгое разделение на числа определенного размера (u8, u16, u32, u64, i8, i16, i32, i64) и системно-зависимые числа (usize, isize).
Используйте статический и динамический анализА еще лучше, когда он происходит сразу на этапе компиляции, как в Rust.
Эти ужасные зависимостиВовсе не ужасны, если у вас есть нормальный менеджер пакетов с поддержкой зависимостей и семантического версионирования, например Cargo.
Разберитесь с неопределенными переменным на CRust всегда проверяет арифметические переполнения, если только вы не попросите его явно этого не делать.
важды ссылка на один и тот же перевод статьи про «С в 2016» и ни одной на оригинал.
Действительный результат в этом случае 5. А все потому, что С не задает действия для x, если данная переменная получает максимальное целое значение и вы прибавляете 1, что приводит к ее переполнению.
Забудьте о true/false для success/failure
Читая его, я ни за что не разберусь, что здесь success, а что failure. Вот вам и разнообразие стандартов. Лучше пишите так:
Примечания к статье «Как писать на С в 2016 году»