http://habrahabr.ru/post/224607/
Rust — системный язык программирования, который исполняется чертовски быстро, предотвращает почти все падения, а также устраняет неопределённости совместного доступа к данным. Он разрабатывается Mozilla как инструмент для создания обозревателя нового поколения —
Servo.
Пункты соприкосновения
Данное определение языка кажется сказкой, ибо доступные нам прежде инструменты всегда балансировали между скоростью и надёжностью. С одной стороны — С++, в котором огромные возможности и скорость компенсируются постоянными ошибками доступа вне выделенной памяти, к удалённой памяти, либо неожиданные результаты чтения данных, которые в это время пишет другой поток. С другой стороны есть Haskell, этакий язык-крепость (по принципу «раз оно компилируется, значит работает»), хоть и не могущий похвастаться скоростью. Где-то посередине балансируют Java, Python, C# и другие популярные (в силу своей практичности) языки. Rust же для меня выступает удачным скрещением лучших свойств С++ и Haskell, при этом сохраняя практичность на уровне конкурентов.
Что объединяет Rust с С++:
- Вы не платите за то, что не используете. Красота кода не требует жертв производительности.
- Предсказуемое выделение и освобождение памяти (RAII).
- Мультипарадигмальность, пусть и с небольшим уклоном в функционалку.
- Сожительство с написанными на С/C++ библиотеками: возможность вызвать С код и быть вызванным.
- Минимальные требования к среде (runtime), возможность написать код любого уровня и масштаба.
Что общего с Haskell:
Через тернии к звёздам
Вся магия Rust становится возможной благодаря знанию компилятором о том, кто владеет определённой сущностью (owner), кто лишь временно одалживает её (mutable borrow), а кто просто пришёл посмотреть (immutable borrow). Программируя на С++ или Java, Вы всё равно держите в голове эту информацию, пусть и в несколько ином виде. В Rust это выражается языковыми конструкциями, что позволяет компилятору проверить правильность Вашей модели, а также гарантировать её беспроблемное выполнение. Для такого программирования требуется немного иной подход, чем мы привыкли. Попытаюсь пройтись по основным моментам, которые могут занести Вас в ступор при начальном изучении:
1. Нет наследования, зато есть структуры и способности (
traits).
2. Указатели есть только в незащищённом коде (
unsafe {}). Вместо них в безопасном коде есть ссылки, которые гарантированно указывают на существующие объекты.
3. Если у Вас неизменяемая ссылка на что-то (immutable borrow =
&Object), то никто не может изменить значение, пока ссылка жива.
4. Если у Вас изменяемая ссылка (mutable borrow =
&mut Object), то никто другой не может читать содержимое объекта, пока ссылка жива.
5. Разработчики языка предпочитают Mac и *nix, так что для работы под Windows нужна
GNU среда.
У Rust очень весёлое и активное сообщество, Вам всегда будут рады на
канале IRC и в
Reddit. Уже написано приличное количество
всякого добра, многие из проектов активно развиваются на
GitHub. Особой популярностью язык пользуется у разработчиков
игр и графики. Есть зачатки
операционных систем. В перспективе также маячит возможность исполнения на
веб-серверах и клиентах. Rust подходит для любых задач!
Единственная на сегодня, пожалуй, серьёзная проблема языка — это его бурное развитие. От версии к версии может меняться синтаксис, порой приходится переосмысливать логику, подстраиваясь под новые возможности языка. Такая ситуация продлится ещё какое-то время в этом году, пока не появится Rust-1.0. А тем временем журнал
Rust 'n Stuffs в еженедельной рубрике This Week in Rust оповещает нас обо всех прошедших и готовящихся изменениях, о новых статьях и перспективных проектах.
Немного обо мне
Скоро будет уже 2 года, как я перешёл на Rust, оставив позади Boo, Dart, Haskell и, конечно, С++. Первым проектом была
игра, которую решил отложить до выхода стабильной версии языка. Сейчас активно работаю над
rust-compress и своим
компрессором данных. Верю в светлое будущее Rust и приглашаю всех принять участие!