32bit_me (32bit_me) wrote,
32bit_me
32bit_me

Category:

Книга "The Rust Programming Language", Second Edition

Прочитал книгу "The Rust Programming Language", Second Edition, англ. язык.

Я читал онлайн-версию здесь, на картинке просто обложка бумажной книги. Я также сделал и разобрал все примеры кода из книги.



Язык Rust очень интересен как потенциальная замена С. Его главная особенность заключается в гарантиях безопасности кода, проверяемых при компиляции.

Чем так интересен язык Rust?

1. Это язык, компилируемый в нативный код. Он не построен поверх какой-нибудь виртуальной машины, типа .Net или JVM. Программы на Rust компилируются в нативный оптимизированный бинарный код.

2. У него нет рантайма, как, например, у Go, которому нужен рантайм для поддержки потоков (горутин). В этом Rust похож на C/C++, ты платишь только за то, что реально используешь.

3. Многопоточность встроена в язык. При этом, разумеется, обеспечивается безопасность доступа к данным между потоками.

4. Элементы ООП. Полноценного ООП, как в С++, нет, но есть "трейты" - интерфейсы, которые можно реализовывать для структур, причём одна структура может поддерживать множество трейтов. Это делает структуры похожими на классы ООП, но без наследования и инкапсуляции. Полиморфизм обеспечивается тем, что структуры могут реализовывать один и тот же трейт по-разному, или пользоваться дефолтной реализацией.

Язык поддерживает также элементы функционального программирования (замыкания).

Имеется также очень хорошая система сборки cargo, которая позволяет компилировать и запускать проекты, создавать новые проекты исполняемых файлов и библиотек и т.п.

На языке Rust уже пишут операционную систему (Redox), также есть примеры программирования микроконтроллеров на Rust.

Текущая реализация Rust построена на основе LLVM, то есть теоретически должно поддерживаться всё множество платформ, которые поддерживает LLVM. На практике разработчики обеспечивают поддержку x86-64 и ARM, как минимум.

Из близких по духу языков я могу назвать D, однако D, похоже, не взлетел также хорошо, как Rust, несмотря на то, что им занимаются такие легендарные люди, как Александреску.

Некоторые вещи, однако, вызывают сомнения. Например, в Rust отсутствует концепция null-указателей, хорошо известная по языкам C и С++. Разработчики Rust сочли её вредной, и сделали специальную структуру Option, с двумя значениями перечисления: Some и None, где Some соответствует некоторому валидному значению, а None по смыслу соответствует указателю null.

Выглядит красиво, но как при этом будет оптимизироваться код, большой вопрос. Сила языка С в возможностях оптимизации кода, если новый язык не позволяет оптимизировать так же хорошо, то его польза сразу оказывается под вопросом.
Tags: llvm, rust, программирование
Subscribe

  • Статья "A Detailed Analysis of the LLVM’s Register Allocators"

    Статья "A Detailed Analysis of the LLVM’s Register Allocators". Интересная статья, 9 страниц. Проводится сравнение 4-х аллокаторов регистров,…

  • Введение в LLVM. Часть 1

    LLVM представляет собой инфраструктуру компилятора, и включает большое количество инструментов, предназначенных для построения инструментов…

  • Flang - новый компилятор Fortran

    Flang - новый компилятор Fortran на основе LLVM. Интересно, что Fortran жив до сих пор, а ведь он был впервые представлен в 1957 году. Последняя…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 32 comments

  • Статья "A Detailed Analysis of the LLVM’s Register Allocators"

    Статья "A Detailed Analysis of the LLVM’s Register Allocators". Интересная статья, 9 страниц. Проводится сравнение 4-х аллокаторов регистров,…

  • Введение в LLVM. Часть 1

    LLVM представляет собой инфраструктуру компилятора, и включает большое количество инструментов, предназначенных для построения инструментов…

  • Flang - новый компилятор Fortran

    Flang - новый компилятор Fortran на основе LLVM. Интересно, что Fortran жив до сих пор, а ведь он был впервые представлен в 1957 году. Последняя…