Не так давно появился язык программирования Rust. В этой записи я расскажу вам, чем так примечателен Rust (раст) и почему всем стоит на него переходить.
На главной странице раста написано, что он – системный язык программирования, который работает быстро, предотвращает вылеты и гарантирует безопасность.
Не стоит прямо сейчас закрывать страницу из-за непонятных слов. Сейчас во всем разберемся.
Rust – системный ЯП
Это значит что на нем можно писать программы любой сложности и их можно будет запустить везде, от тостера до компьютера Васи Пупкина, без необходимости скачивать интерпретаторы/виртуальные машины (как в случае с Java и Lua ).
Например, Си – системный, а 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 – безопасный ЯП
Безопасность раста проявляется во всем. От I/O до потоков, от указателей до типов данных. В этом можно убедиться самому.
Например следующий код на Си 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 знают как не просто достигнуть безопасности таких потоков. В расте же такой код делается очень просто, сам убеждался не раз. Трэйты. Разработчики раста решили отказаться от стандартной концепции классов и интерфейсов.
Но на расте вполне можно писать в объектном стиле (поговорим еще об этом). Все решать вам.
Фич куда больше, это только малая часть.
О самой работе с растом будет написано в следующей серии. =)
Да Здравствует Rust!
- Подробнее...
- 11 комментариев
- 5 079 просмотров
