Ржавеем по полному! #0. Что за зверь Rust этот?

Не так давно появился язык программирования Rust. В этой записи я расскажу вам, чем так примечателен Rust (раст) и почему всем стоит на него переходить.
На главной странице раста написано, что он – системный язык программирования, который работает быстро, предотвращает вылеты и гарантирует безопасность.
Rust – системный ЯП
Например, Си – системный, а Java – нет. :P
Попробуйте написать на Java ядро ОС. У вас ничего не выйдет, так как что бы запустить Java нужна виртуальная машина (да-да, то самое "скачать жаву" это и есть "скачать виртуальную машину Java =) )
Совсем другое дело обстоит с Си.
Например, следующий код можно запустить абсолютно на любом компьютере.
int main() { int a = 1; a++; return 0;}
Эквивалентный код на расте тоже будет работать везде. Вот он:
fn main() { let mut a = 1; a += 1;}
Эта фича позволит нам писать на расте программы любой сложности, от hello-world'ов, до операционных систем.
Пойдем дальше.
Rust – быстрый ЯП
Rust – безопасный ЯП
Например следующий код на Си
int main(){ int x = 10; int *px = &x; px = 0; *px = 3;}
Вполне скомпилируется, но работать не будет. Программа с подобным кодом упадет. Дебаг таких программ всегда сложен.
Аналогичный код на расте:
fn main() { let ref mut p = 10; p = 0; *p = 3;}
Компилироваться он не будет, следовательно программист заметит (скорее всего) ошибку и исправит ее. Убедитесь сами.
Это не единственный пример такого поведения компилятора раста. Он всегда сообщит вам о небезопасности кода, чего не скажешь о других компиляторах.
Из фич этого языка я бы выделил:
- "Бесплатные" абстракции. Когда в Java абстракции достигаются путем уменьшения качества выходного кода, в расте все бесплатно, как и в C++.
- Гарантированная безопасность. Когда в других языках гарантия безопасности обеспечивается программистом, в расте компилятор сам позаботится о безопасности кода. Он делает это всегда, но мы вполне можем попросить его не проверять код. Для этого используются unsafe блоки кода (поговорим еще о них).
- Многопоточность без гонок (англ. data-race). Все кто писал многопоточный код на языках вроде C++ или Java знают как не просто достигнуть безопасности таких потоков. В расте же такой код делается очень просто, сам убеждался не раз.
-
Трэйты. Разработчики раста решили отказаться от стандартной концепции классов и интерфейсов.
Но на расте вполне можно писать в объектном стиле (поговорим еще об этом). Все решать вам.
Я придумал термин «объектно-ориентированный», и я уверяю вас, что не имел в виду C++
Фич куда больше, это только малая часть.
О самой работе с растом будет написано в следующей серии. =)
Да Здравствует Rust!
-
4
11 комментариев
Рекомендуемые комментарии