Максим Лапшин 0 January 25, 2020 Posted January 25, 2020 · Report post Вводная для тех, кто не слышал о Rust. Программисты Mozilla пережив три пожара и два переименования решили собрать все самые лучшие практики программирования на С и поняли, что они во многом сводятся к формализуемым четким правилам, выполнение которых делает программу надежной. Этот набор правил решили формализовать в виде компилятора языка программирования, который дает совершенно удивительные гарантии: целостность памяти, проверяемая во время компиляции. Т.е. не memory safety of assembler and speed of ruby, а наоборот. Вот свежий пример: в зависимости от уровня приоритета прерывания, компилятор может потребовать обернуть обращение к переменной из обработчика в мьютекс. Rust стал первым языком за много десятилетий, на котором можно написать библиотеку, которая будет встроена в код на С. В обратную сторону умеет каждый язык программирования, а вот стать базовым не удавалось фактически даже плюсам. Но всё было бы слишком скучно, если бы Rust так и оставался языком в рамках традиционного юникса. Всё пошло дальше: из раста получилось выкинуть привычный stdlib и компилировать его под микроконтроллеры. https://rust-embedded.github.io/book/ а на базе этого родилась целая микро-ос в стиле freertos. https://rtfm.rs/ Если интересно — могу поделиться опытом нашей разработки под stm32 Quote Share this post Link to post Share on other sites More sharing options...
Eddy_Em 2 January 25, 2020 Posted January 25, 2020 · Report post Еще более наркоманский язык, нежели даже питон! Quote Share this post Link to post Share on other sites More sharing options...
Xenia 48 January 25, 2020 Posted January 25, 2020 · Report post 1. Кривые мозги не лечатся модификацией языка программирования :). По этой дорожке уже топали: казалось, что, запретив оператор goto и указатели на память, можно получить надежный код. Тогда как в действительности ошибки подобного рода встречается исключительно редко, а большинство ошибок порождает непродуманный алгоритм. Если перед тем, как совершить какой-то поступок, всякий законопослушный гражданин должен получить на это разрешение от 10-ти чиновников, то это ничуть не гарантирует, что он в своем начинании добьется успеха. Точно так же не получится ничего хорошего, если обставить язык программирования бюрократическими препонами, доходящими до маразма. Это приводит лишь к дополнительным тратам времени и сил на борьбу с компилятором, когда программист точно знает, что ему нужно, но компилятор отрезает ему прямой путь, заставляя искать обходные. 2. Западло мне перед всяким присваиванием писать слово "Let" :). Аки возвращение к древним версиям Бейсика . 1 Quote Share this post Link to post Share on other sites More sharing options...
mantech 124 January 25, 2020 Posted January 25, 2020 · Report post 2 часа назад, Максим Лапшин сказал: Этот набор правил решили формализовать в виде компилятора языка программирования, который дает совершенно удивительные гарантии: целостность памяти, проверяемая во время компиляции. Вот кому-то интересно же все-таки придумывать чего-то такое, чтобы занять свои мозги... Я понимаю, если б в Сях было что-то такое, что не позволяло бы сделать какие-либо нужные вещи, и для этого мы придумаем язык "D", в котором они реализованы, НО все остальное остается Си-подобным, чтоб было проще перейти на новый язык, но тут-то даже весь синтаксис другой, равносильно переходу с Асма на Си, но этот-то переход был оправдан... Quote Share this post Link to post Share on other sites More sharing options...
Xenia 48 January 25, 2020 Posted January 25, 2020 · Report post Похоже, что Rust ожидает судьба C++. Т.е. для него попросту напишут прекомпилятор на тот же C++ и на этом успокоятся, т.к. писать компилятор под новый язык - довольно трудоемкое занятие, требующее не одноразовых усилий, а постоянного сопровождения. Точно так же и C++ по-началу существовал в виде прекомпилятора на C, и лишь гораздо позже стал сам по себе, превратив C в свое подмножество. Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 92 January 25, 2020 Posted January 25, 2020 · Report post 3 hours ago, Максим Лапшин said: Если интересно — могу поделиться опытом нашей разработки под stm32 Расскажите, действительно интересно1 Quote Share this post Link to post Share on other sites More sharing options...
Eddy_Em 2 January 25, 2020 Posted January 25, 2020 · Report post 7 minutes ago, Xenia said: Похоже, что Rust ожидает судьба C++ Ну, С++ вполне в десктопной разработке используется. А ржавчина - несуразность какая-то для гиков. Чем-то напоминает язык brainfuck: тоже никому нафиг не нужный. Quote Share this post Link to post Share on other sites More sharing options...
AlexandrY 4 January 25, 2020 Posted January 25, 2020 · Report post 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-а, и портировать свой ввод-вывод и профилировать. Quote Share this post Link to post Share on other sites More sharing options...
Максим Лапшин 0 January 25, 2020 Posted January 25, 2020 · Report post 4 hours ago, haker_fox said: Расскажите, действительно интересно1 боюсь, что одному вам. Остальные тут годятся лишь на дебильные аргументы про «эх, молодежь» и дискуссию уровня «у нас тут один программист, гит нам не нужен» Quote Share this post Link to post Share on other sites More sharing options...
gosha-z 3 January 25, 2020 Posted January 25, 2020 · Report post 2 minutes ago, Максим Лапшин said: Остальные тут годятся лишь на дебильные аргументы про «эх, молодежь» и дискуссию уровня «у нас тут один программист, гит нам не нужен» А вы попробуйте переубедить. Не шапкозакидательством, с чего вы начали, а повествованием в стиле "Смотрите, как мне хорошо, ибо...". Мне вот тоже интересно, может я что-то теряю в жизни, продолжая писать на plain C... Quote Share this post Link to post Share on other sites More sharing options...
Максим Лапшин 0 January 25, 2020 Posted January 25, 2020 (edited) · Report post ---- Edited January 25, 2020 by Максим Лапшин Quote Share this post Link to post Share on other sites More sharing options...
gosha-z 3 January 25, 2020 Posted January 25, 2020 · Report post 2 minutes ago, Максим Лапшин said: С Rust это сильно облегчается. Вот и покажите как. Покажите конкретно, как у вас все хорошо! А то мы все тут обросли valgrind'ами, PVS-студиями, полиспейсами и прочими LDRA и не знаем, как в других вселенных все хорошо. Quote Share this post Link to post Share on other sites More sharing options...
Xenia 48 January 25, 2020 Posted January 25, 2020 · Report post 7 часов назад, Максим Лапшин сказал: https://rust-embedded.github.io/book/ Скажите, а эту книжицу можно добыть в pdf-формате или ее только на погляд читать дают? Quote Share this post Link to post Share on other sites More sharing options...
AlexandrY 4 January 25, 2020 Posted January 25, 2020 · Report post 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 Quote Share this post Link to post Share on other sites More sharing options...
SSerge 10 January 26, 2020 Posted January 26, 2020 · Report post 8 часов назад, Максим Лапшин сказал: боюсь, что одному вам. Остальные тут годятся лишь на дебильные аргументы про «эх, молодежь» и дискуссию уровня «у нас тут один программист, гит нам не нужен» Ну, Вы тоже не слишком оригинальны. Я эти мантры про новейший язык/технологию программирования которые всё-всё изменят и углубят не первый раз вижу. Пока идёт реклама - всё выглядит прилично, много умных слов, апологеты нового с умным видом рассуждают о стоящих перед отраслью проблемах, красочно расписывают как именно их детище эти проблемы решит и т.д. и т.п. Временами даже возникает ощущение что они сами понимают о чём говорят. Когда же дело доходит до демонстрации успехов чары рассеиваются, а всем кто на что-то надеялся с помпой презентуют ещё один самопальный велосипед с квадратными колёсами. А серебряной пули как не было, так и нет. Quote Share this post Link to post Share on other sites More sharing options...