- PVSM.RU - https://www.pvsm.ru -
Привет.
В прошлую субботу я выступал с докладом на очередном митапе Saratov Open-IT [1], где я рассказал про Rust — многообещающий системный язык программирования, разрабатываемый Mozilla Research и сообществом, и про то, какие проблемы он решает и какие у него есть особенности и инфраструктура. Надеюсь, что моё выступление будет интересно сообществу, поэтому выкладываю его здесь.
(видео не вставлено в пост через тег <video> потому что он не работает с конкретной временной меткой; длительность — примерно полтора часа)
http://www.youtube.com/watch?v=lmauAUF823k#t=2583 [2]
Я изучаю Rust и участвую в его сообществе уже около полутора лет. Вообще основной платформой, программированием для которой я занимаюсь, является JVM, но мне всегда хотелось писать программы, работающие нативно — какие-то утилиты для Linux, лёгкие кроссплатформенные программы, и прочее подобное. Однако писать на C++ или C мне совершенно не хотелось. C++ — это огромный и очень сложный язык, с большим количеством возможностей (количество которых растёт с каждым новым стандартом), который трудно использовать правильно, не имея сильной самодисциплины и длительного опыта работы с ним. C, с другой стороны, очень прост, но и очень невыразителен — после языков типа Scala на нём трудно писать, потому что в нём отсутствует множество уже ставших привычными возможностей (вроде анонимных функций), нет хорошей стандартной библиотеки, и всё же С очень сильно привязан к платформе — многие вещи на нём делаются через условную компиляцию и обращение к самым низкоуровневым средствам ОС.
Rust же стремится закрыть эту нишу между языками низкого и высокого уровня. С одной стороны, он настолько же «близок к железу», как и C/C++, а с другой стороны, он обеспечивает безопасность и абстракции, которые гораздо ближе к языкам более высокого уровня. Всё это обеспечивается за счёт мощного статического анализа, благодаря которому программы, написанные на Rust, гарантированно работают с памятью корректно. Ощущение было как в первое время после изучения Haskell — поражаешься тому факту, что программа, которая прошла компиляцию, всегда работает правильно :)
Ещё одним преимуществом Rust по сравнению с C/C++ является его инфраструктура, в частности, его менеджер пакетов Cargo. Благодаря Cargo кроссплатформенные программы на Rust писать настолько же просто, насколько пишутся такие программы на языках вроде Java и Python. Проект Cargo содержит манифест, где описываются все его Rust-зависимости и (там где нужно) правила сборки С-зависимостей. Для того, чтобы получить собранный бинарник, достаточно набрать cargo build в терминале — все зависимости автоматически скачаются, соберутся и подключатся к вашему проекту. По сравнению с необходимостью использовать инструменты вроде autoconf или cmake, которые делегируют ответственность за сторонние библиотеки на пользователя системы, Cargo делает сборку программ на Rust гораздо ближе к интерпретируемым/динамическим языкам, в которых точно также вы получаете рабочую программу с помощью одной команды.
Кроме того, совсем недавно открылся центральный репозиторий Cargo-пакетов, который станет ядром будущей стабильной экосистемы вокруг Rust — crates.io [3]. Уже сейчас там больше 400 пакетов. Естественно, Cargo сможет по-прежнему пользоваться мастер-ветками из репозиториев, но crates.io станет сосредоточением стабильных версий пакетов. Предполагается, что за счёт повсеместного применения semantic versioning [4] обновлять зависимости ваших проектов будет безболезненно и просто. Кстати, про план стабилизации языка вы можете прочитать в моих переводах блог-постов от разработчиков Rust, здесь [5] и здесь [6].
В целом, в свете предстоящей стабилизации языка, мне кажется, сейчас самое время для начала популяризации Rust в более широком сообществе разработчиков. Сейчас в Rust идёт очень активная подготовка к релизу первой стабильной версии, многие самые ожидаемые фичи языка и библиотек принимают окончательную форму. Ещё немного, и язык станет полностью готов для промышленного использования.
Примерный план моего рассказа (в видео):
Прошу прощения, иногда я забывал проговорить вопросы из зала в микрофон, и из-за этого не всегда понятно, на что я отвечаю :(
Презентация к докладу доступна по этой ссылке [7].
Автор: Googolplex
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/75978
Ссылки в тексте:
[1] Saratov Open-IT: http://open-it.pro/
[2] http://www.youtube.com/watch?v=lmauAUF823k#t=2583: http://www.youtube.com/watch?v=lmauAUF823k#t=2583
[3] crates.io: https://crates.io/
[4] semantic versioning: http://semver.org/
[5] здесь: http://habrahabr.ru/post/237199/
[6] здесь: http://habrahabr.ru/post/243315/
[7] по этой ссылке: http://netvl.github.io/pub/rust/openit-fall-2014/rust.html
[8] Источник: http://habrahabr.ru/post/244537/
Нажмите здесь для печати.