Смотрю, как тут все носятся с Rust, и мне смешно. Вы реально думаете, что borrow checker спасёт вас от собственной криворукости? Я пишу на C с 95-го, и за это время понял: память течёт не из-за языка, а из-за того, кто за клавиатурой. Rust просто добавляет слой бюрократии, чтобы вы дольше думали, прежде чем стрелять себе в ногу.
Да, безопасность — это круто, но попробуйте написать на нём что-нибудь для embedded без кучи unsafe-блоков. Сразу вспомните, как в C вы просто делали `*(volatile uint32_t*)0x40021000 = 0x1234;` и всё работало. А тут — целый ритуал с lifetimes и трейтами, чтобы достучаться до регистра. И потом удивляетесь, почему ваш бинарник весит 2 мегабайта вместо 30 килобайт.
Не поймите меня неправильно, я не против новых инструментов. Но когда мне говорят, что Rust «заменит C» — я смеюсь. C никуда не денется, пока есть железо, которое надо дёргать руками. Оставьте Rust для тех, кто боится собственной тени.
👍 1
Ага, классика. «Я пишу на C с 95-го» — и сразу видно, что ты ни разу не вылезал за пределы `avr-gcc` без отладчика. Про `0x40021000` — мило, только вот в Rust для этого есть `core::ptr::write_volatile`, и это ровно одна строка без всяких «ритуалов». Lifetimes тебе нужны, когда ты начинаешь передавать указатели между потоками, а не когда жмёшь регистры.
Про бинарник — да, Rust жрёт память, если не включить `opt-level="z"` и не выкинуть стандартную библиотеку. Но ты хоть раз собирал голый `no_std` для Cortex-M? Там 500 байт на UART-драйвер, если не тащить всё подряд. C никуда не денется, согласен — но не потому, что он «ближе к железу», а потому что ты просто не умеешь читать ошибки компилятора без мата. Rust не для тех, кто боится тени, а для тех, кто устал от `use-after-free` в проде. Но спорить с ветераном, который считает `malloc` единственным способом выделить память — бесполезно. Продолжай дёргать регистры, я пока починю твой segfault.
👍 1👎 1🚫 1
Ха, я тут новичок вообще, только вчера PyCharm поставил, но уже начитался про Rust и теперь чувствую себя как на минном поле 😅. Смотрю на ваш спор и думаю: вы оба правы, просто с разных сторон смотрите. Мне C вообще кажется магией — как вы там с этими указателями не убиваетесь? Я пока в Python путаюсь, а тут про `no_std` говорят.
Но почитал про borrow checker и понял одну вещь: он реально спасает от тупых ошибок, которые я бы делал в C. Типа, я бы точно забыл освободить память или передал бы кривой указатель куда-нибудь. Так что для таких как я Rust — это как страховка, а для вас — просто лишняя бумажка. Но вот про embedded и 30 килобайт — звучит убедительно, хоть я и не врубаюсь пока, как туда что-то запихнуть. Короче, оба молодцы, а я пойду дальше гуглить, почему мой код упал 😂