Jump to content

    

Rust вместо C

Вводная для тех, кто не слышал о Rust. Программисты Mozilla пережив три пожара и два переименования решили собрать все самые лучшие практики программирования на С и поняли, что они во многом сводятся к формализуемым четким правилам, выполнение которых делает программу надежной.

Этот набор правил решили формализовать в виде компилятора языка программирования, который дает совершенно удивительные гарантии: целостность памяти, проверяемая во время компиляции.

Т.е. не memory safety of assembler and speed of ruby, а наоборот.

 

Вот свежий пример: в зависимости от уровня приоритета прерывания, компилятор может потребовать обернуть обращение к переменной из обработчика в мьютекс.

 

Rust стал первым языком за много десятилетий, на котором можно написать библиотеку, которая будет встроена в код на С.  В обратную сторону умеет каждый язык программирования, а вот стать базовым не удавалось фактически даже плюсам.

 

Но всё было бы слишком скучно, если бы Rust так и оставался языком в рамках традиционного юникса.

 

Всё пошло дальше: из раста получилось выкинуть привычный stdlib и компилировать его под микроконтроллеры.

https://rust-embedded.github.io/book/

 

а на базе этого родилась целая микро-ос в стиле freertos.

https://rtfm.rs/

 

Если интересно — могу поделиться опытом нашей разработки под stm32
 

 

Share this post


Link to post
Share on other sites

Еще более наркоманский язык, нежели даже питон!

Share this post


Link to post
Share on other sites

1. Кривые мозги не лечатся модификацией языка программирования :). По этой дорожке уже топали: казалось, что, запретив оператор goto и указатели на память, можно получить надежный код. Тогда как в действительности ошибки подобного рода встречается исключительно редко, а большинство ошибок порождает непродуманный алгоритм.

Если перед тем, как совершить какой-то поступок, всякий законопослушный гражданин должен получить на это разрешение от 10-ти чиновников, то это ничуть не гарантирует, что он в своем начинании добьется успеха. Точно так же не получится ничего хорошего, если обставить язык программирования бюрократическими препонами, доходящими до маразма. Это приводит лишь к дополнительным тратам времени и сил на борьбу с компилятором, когда программист точно знает, что ему нужно, но компилятор отрезает ему прямой путь, заставляя искать обходные.

 

2. Западло мне перед всяким присваиванием писать слово "Let" :). Аки возвращение к древним версиям Бейсика .

Share this post


Link to post
Share on other sites
2 часа назад, Максим Лапшин сказал:

Этот набор правил решили формализовать в виде компилятора языка программирования, который дает совершенно удивительные гарантии: целостность памяти, проверяемая во время компиляции.

Вот кому-то интересно же все-таки придумывать чего-то такое, чтобы занять свои мозги... Я понимаю, если б в Сях было что-то такое, что не позволяло бы сделать какие-либо нужные вещи, и для этого мы придумаем язык "D", в котором они реализованы, НО все остальное остается Си-подобным, чтоб было проще перейти на новый язык, но тут-то даже весь синтаксис другой, равносильно переходу с Асма на Си, но этот-то переход был оправдан...

Share this post


Link to post
Share on other sites

Похоже, что Rust ожидает судьба C++. Т.е. для него попросту напишут прекомпилятор на тот же C++ и на этом успокоятся, т.к. писать компилятор под новый язык - довольно трудоемкое занятие, требующее не одноразовых усилий, а постоянного сопровождения. Точно так же и C++ по-началу существовал в виде прекомпилятора на C, и лишь гораздо позже стал сам по себе, превратив C в свое подмножество.

 

Share this post


Link to post
Share on other sites
3 hours ago, Максим Лапшин said:

Если интересно — могу поделиться опытом нашей разработки под stm32

Расскажите, действительно интересно1

Share this post


Link to post
Share on other sites
7 minutes ago, Xenia said:

Похоже, что Rust ожидает судьба C++

Ну, С++ вполне в десктопной разработке используется. А ржавчина - несуразность какая-то для гиков. Чем-то напоминает язык brainfuck: тоже никому нафиг не нужный.

Share this post


Link to post
Share on other sites
6 hours ago, Максим Лапшин said:

Этот набор правил решили формализовать в виде компилятора языка программирования, который дает совершенно удивительные гарантии: целостность памяти, проверяемая во время компиляции.

От же молодежь, совсем ничего не помнит и мало чем интересуется. 
Эта самая килер-фича Rust-под названием ownership, позволяющая автоматом освобождать память есть не что иное как реинкарнация ARC (Automatic Reference Counting) в Delphi, придуманная десятки лет назад.
Но ! ARC теперь уже есть в компиляторах C++ под Android и iOS и в  CLang - https://clang.llvm.org/docs/AutomaticReferenceCounting.html

И вообще когда топят за язык, то по боку весь его синтаксис и тулсы, важны только либы! 
И да, Rust снабжен мощными строковыми либами которые в паре с ownership-ом делают его хорошим выбором если занимаетесь работой со строковыми данными. А это все интернет технологии, IoT и проч. бизнес процессы.  Либы Rust-а повторяют всю функциональность STL в C++ и еще добавляют. 

И точно Rust не умрет с такими либами. Но на без MMU-шный embedded ему еще рано.
Эт где нить на Raspberry PI с ним можно, а на Cortex-M замучаются разгребать фрагментацию heap-а, и портировать свой ввод-вывод и профилировать.  

 

Share this post


Link to post
Share on other sites
4 hours ago, haker_fox said:

Расскажите, действительно интересно1

боюсь, что одному вам.

Остальные тут годятся лишь на дебильные аргументы про «эх, молодежь» и дискуссию уровня «у нас тут один программист, гит нам не нужен»

 

Share this post


Link to post
Share on other sites
2 minutes ago, Максим Лапшин said:

Остальные тут годятся лишь на дебильные аргументы про «эх, молодежь» и дискуссию уровня «у нас тут один программист, гит нам не нужен»

А вы попробуйте переубедить. Не шапкозакидательством, с чего вы начали, а повествованием в стиле "Смотрите, как мне хорошо, ибо...". Мне вот тоже интересно, может я что-то теряю в жизни, продолжая писать на plain C...

Share this post


Link to post
Share on other sites
2 minutes ago, Максим Лапшин said:

С Rust это сильно облегчается.

Вот и покажите как. Покажите конкретно, как у вас все хорошо! А то мы все тут обросли valgrind'ами, PVS-студиями, полиспейсами и прочими LDRA и не знаем, как в других вселенных все хорошо.

Share this post


Link to post
Share on other sites
7 часов назад, Максим Лапшин сказал:

Скажите, а  эту книжицу можно добыть в pdf-формате или ее только на погляд читать дают?

Share this post


Link to post
Share on other sites
28 minutes ago, Xenia said:

Скажите, а  эту книжицу можно добыть в pdf-формате или ее только на погляд читать дают?

Читаем здесь о недостатках библиотеки ядра для Rust  https://github.com/rust-lang/rfcs/blob/master/text/1184-stabilize-no_std.md#drawbacks
После такого - "and owned strings are not available without liballoc, which will remain an unstable library. "  програмить на Basic-e будет лучшей альтернативой. 
А Core Library - единственная либа доступная под bare metal в Ruste 

Share this post


Link to post
Share on other sites
8 часов назад, Максим Лапшин сказал:

боюсь, что одному вам.

Остальные тут годятся лишь на дебильные аргументы про «эх, молодежь» и дискуссию уровня «у нас тут один программист, гит нам не нужен»

 

Ну, Вы тоже не слишком оригинальны.

Я эти мантры про новейший язык/технологию программирования которые всё-всё изменят и углубят не первый раз вижу.

Пока идёт реклама - всё выглядит прилично, много умных слов, апологеты нового с умным видом рассуждают о стоящих перед отраслью проблемах, красочно расписывают как именно их детище эти проблемы решит и т.д. и т.п. 

Временами даже возникает ощущение что они сами понимают о чём говорят.

Когда же дело доходит до демонстрации успехов чары рассеиваются, а всем кто на что-то надеялся с помпой презентуют ещё один самопальный велосипед с квадратными колёсами.

А серебряной пули как не было, так и нет.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now