| |
| 2.9, Аноним (9), 21:06, 29/05/2026 [^] [^^] [^^^] [ответить]
| +/– |
Интересно, во сколько раз при этом будет больше ошибок, чем в uutils?
| | |
|
| 1.2, Аноним (2), 20:33, 29/05/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– | |
Лучше производность, быстрее код писать, меньше оперативной памяти нужно и чуть больше места занимает.
Выбор очевиден.
| | |
| |
| 2.15, Аноним (15), 21:24, 29/05/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
> Быстрее код писать, воюя с чекером боровов?
Завязывайте позориться. Если у вас проблемы с БЧ при написании кода, значит вы не понимаете сколько у вас живут объекты и плодите UB, на сях с такой квалификацией вы будете вместо "войны с БЧ" который вас тыкает в проблему ещё до того как вы даже код собрали, сидеть неделями в отладчике.
> Ах да, для микроконтроллеров же - сплошной @unsafe
Ни на йоту не больше чем в программировании под большие машины - там у вас в unsafe обёрнуты обращения к системным вызовам, а тут к портам. В остальном разницы нет, поверх этого можете писать только safe логику, можете пользоваться штуками использующими unsafe под капотом для эффективности, но эти штуки опциональны и одинаковы на любых платформах.
| | |
|
| 1.3, НяшМяш (ok), 20:33, 29/05/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Под микроконтроллер в 160 мегагерц можно было хоть на бидоне писать, в чём смысл делать какие-то сравнения под эту лошадь. Сообщество на тот же 16-мегагерцовый nRF51 на embassy фигачит со свистом уже много лет, открыли они Америку.
| | |
| |
| |
| 3.14, Аноним (14), 21:19, 29/05/2026 [^] [^^] [^^^] [ответить]
| –3 +/– |
Низкоуровневый питон называется forth. Это низкоуровневый сишарп.
| | |
|
|
| 1.8, Аноним (6), 21:05, 29/05/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Что-то мне кажется, что если для микроконтроллеров писать на Algol68 с POSIX-расширениями (ga68), то тоже производительность будет не сильно отличаться.
| | |
| |
| 2.20, Аноним (15), 21:44, 29/05/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
Это скорее правда. Под железо без изысков (типа всяких SIMD) компилировать чистую математику (а что ещё в эмбеддовке может быть CPU-bound) компиляторы давно уже научились, и язык тут можно вообще любой взять. Если у него конечно бэкенд gcc/llvm, а не самодельное музейное гoвнo из прошлого века.
Сейчас скорее интересно другое, а именно возможность написать взрослый асинхронный код типа
'''rust
task::spawn(async ||
loop {
button.await;
i2c.send(0x12, b"button pressed").await.unwrap();
}
);
'''
и чтобы он скомпилился в те же 276 байт которые я напишу на ассемблере с ручным диспатчем прерываний и конечным автоматом для состояний. Хотя даже тут интерес уже даже не практический, а фановый, поскольку нет давно железа где было бы принципиально скомпилится это в 276 или 27600 байт.
| | |
|
| 1.10, Аноним (15), 21:07, 29/05/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– | |
В эмбедном байтодрочестве rust равных нет уже за счёт упаковки структур и нишевой оптимизации. А так-то без экспериментов было понятно что как минимум если писать на нём в C/плюсовом стиле, то и результаты будут примерно такими же. Вот было бы гораздо интереснее сравнить rust с C/плюсовым стилем и идиоматический rust с Option, Result, итераторами, монадическими конструкциями, лямбдами и трейтами, а желательно с ещё более высокоуровневыми штуками типа разбора протоколов через serde или хотя бы nom.
Пока мой опыт в портировании сишного кода, правда не для эмбеддовки, но как раз разбор строк и протоколов и прочее битодрочество показывает что получается в 3 раза меньше (исходного) кода и он намного понятнее, и работает это быстрее (и юнит тесты рядом с кодом очень удобная штука), но на размер машинного кода я не смотрел. А давний опыт в эмбеддовке (AVR) показал что на полноценном C++ со всякими 'unique_ptr', '<algorithm>' и повсеместными шаблонами (когда разные реализации таймеров и экранчиков прокидываются как шаблонные аргументы, реализация I2C мокается для тестов и т.д.) получает прошивки компактнее дубового сишного кода, после чего про C в нашеё команде вообще забыли.
Вот на rust такое будет ещё проще и там где в плюсах ещё был возможен какой-то оверхед, то гарантированно без него, но хочется чтобы это красиво показали. Потому что кто-то, как даже в новости написано, до сих пор пишет эмбеддовку на C!
| | |
| |
| 2.12, Аноним (12), 21:14, 29/05/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ничего интересного в этом нет. Вопрос применения раста в плоскости практического применения вообще не лежит.
| | |
| |
| 3.16, Аноним (15), 21:25, 29/05/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
Какой интересный тейк. Даже интересно в какой плоскости лежит вопрос применения если не в плоскости применения.
| | |
| |
| 4.19, анонимс (?), 21:36, 29/05/2026 [^] [^^] [^^^] [ответить]
| +/– |
Идеологическом. Rust компилируется LLVM написанным на C++ бэкэндом rustc так что машинный код совершенно одинаков
| | |
| |
| 5.21, Аноним (15), 21:48, 29/05/2026 [^] [^^] [^^^] [ответить]
| +/– |
Машинный код одинаков только если писать на общем подмножестве двух языков, на нахрена это кому-то нужно? На rust можно писать на порядок выразительнее, и ответ на вопрос будет ли полученный код компактнее и быстрее не для всех очевиден, а даже без учёта этого, вопросы компайл-тайм проверок и более качественного тулинга - сугубо практические.
| | |
|
|
|
| 2.18, Сладкая булочка (?), 21:32, 29/05/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> (и юнит тесты рядом с кодом очень удобная штука)
В си никто не мешает положить тесты рядом с кодом.
| | |
| |
| 3.22, Аноним (15), 21:53, 29/05/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
Тесты рядом с кодом это, если что так и ни строчкой больше, даже если это первый тест в проекте:
'''
fn inc(a: u32) -> u32 {
a + 1
}
+#[test]
+fn test_inc() {
+ assert_eq!(inc(1), 2);
+}
'''
| | |
| |
| 4.26, Аноним (9), 22:34, 29/05/2026 [^] [^^] [^^^] [ответить]
| +/– |
И что тут такого особенного, чего не было нигде в других языках?
| | |
|
|
| 2.28, Аноним83 (?), 22:44, 29/05/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> писать на нём в C/плюсовом стиле, то и результаты будут примерно такими же. Вот было бы гораздо интереснее сравнить rust с C/плюсовым стилем и идиоматический rust с Option, Result, итераторами, монадическими конструкциями, лямбдами и трейтами, а желательно с ещё более высокоуровневыми штуками типа разбора протоколов через serde или хотя бы nom.
Столько буков и ни слова о конечном результате, только какие то бесполезные языковые абстракции.
> А давний опыт в эмбеддовке (AVR) показал что на полноценном C++ со всякими 'unique_ptr', '<algorithm>' и повсеместными шаблонами (когда разные реализации таймеров и экранчиков прокидываются как шаблонные аргументы, реализация I2C мокается для тестов и т.д.) получает прошивки компактнее дубового сишного кода, после чего про C в нашеё команде вообще забыли.
Потому что видимо на С не пробовали даже делать плагины и абстракции, как оно сделано в том же линухе/бсд в дровах для всего того же самого.
| | |
|
| 1.24, Аноним (24), 22:05, 29/05/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Я на Go пишу божественные быстрые программы без ошибок впринципе, опыт так сказать большой, учил один язык программирования за жизнь. А Rust это для тех кому время потратить надо впустую на корявый синтаксис, где ничего дельного и шустрого не напишешь без unsafe.
| | |
|