The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.38, opennews (??), 27-Сен-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


16. "Выпуск языка программирования Rust 1.38"  +4 +/
Сообщение от Аноним (16), 27-Сен-19, 11:30 
Изучения и практика на rust оч. полезна сишникам (с плюсами тоже), как минимум потому, что здорово вправляет мозги на правильную (корректную и быструю) работу с памятью.
Ответить | Правка | Наверх | Cообщить модератору

29. "Выпуск языка программирования Rust 1.38"  +2 +/
Сообщение от Совершенно другой аноним (?), 27-Сен-19, 12:28 
Если не сложно, то можно немного подробнее? Правда очень интересно.
Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск языка программирования Rust 1.38"  –8 +/
Сообщение от kiwinix (?), 27-Сен-19, 13:03 
Открой растбук и читни. Он на русском уже есть
Ответить | Правка | Наверх | Cообщить модератору

49. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Аноним (45), 27-Сен-19, 13:47 
Максимум что ты от этих безумных фанатов дождёшься - это магическое заклинание "читай растобук".
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

83. "Выпуск языка программирования Rust 1.38"  +5 +/
Сообщение от EnemyOfDemocracy (?), 27-Сен-19, 16:56 
А по си книжки читать не надо? херак-херак и оно само сегфолт?
Ответить | Правка | Наверх | Cообщить модератору

95. "Выпуск языка программирования Rust 1.38"  –1 +/
Сообщение от Аноним (45), 27-Сен-19, 18:00 
За описанием *достоинств* си - не надо, его распространение, и многочисленные *неудачные* попытки закопать няшную сишечку говорят сами за себя. А причину большинства сегфолтов ищите в зеркале и кривизне культяпок.
Ответить | Правка | Наверх | Cообщить модератору

133. "Выпуск языка программирования Rust 1.38"  +3 +/
Сообщение от Аноним (139), 27-Сен-19, 21:48 
ещё один "пищите без ошибок"
Ответить | Правка | Наверх | Cообщить модератору

185. "Выпуск языка программирования Rust 1.38"  –1 +/
Сообщение от Аноним (45), 29-Сен-19, 05:07 
Когда научитесь писать на русте без unsafe - возвращайтесь.
Ответить | Правка | Наверх | Cообщить модератору

188. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Илья (??), 29-Сен-19, 08:53 
Вообще на расте небезопасные блоки стараются всеми способами обходить.

То есть, если у вас нет небезопасных блоков в коде то вы гарантированно не натолкнётесь на
- сегфолт
- гонки за данные
- разыменование пустого указателя
- выход за границы области памяти с дальнейшим продолжением выполнения

Но си++ программистам ведь неведомы такие проблемы, они же без ошибок пишут

Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск языка программирования Rust 1.38"  +3 +/
Сообщение от Аноним (16), 27-Сен-19, 14:03 
https://blog.regehr.org/archives/1520

также, "повоевав" с borrow checker в rust и сделав всё корректно, можно понять что такое "владение", зачем нужно перемещение, ссылки и когда лучше использовать копирование (при этом в rust обязательно явно указать что надо копировать - через вызов .clone() плюс #derive(Copy) - только не надо этим злоупотреблять, скорость сильно просаживает).

с плюсами всё грустно, там ОЧЕНЬ сложно понять работает ли копирование объекта или перемещение, даже если прописаны конструктор перемещения и move оператор=. а ещё там RVO есть)

Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

64. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Совершенно другой аноним (?), 27-Сен-19, 14:57 
> https://blog.regehr.org/archives/1520

Просто приходится много писать именно на C (не ++), вот и заинтересовало чем мне это сможет помочь. Спасибо, почитаю.

Ответить | Правка | Наверх | Cообщить модератору

129. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Ordu (ok), 27-Сен-19, 21:31 
> Если не сложно, то можно немного подробнее? Правда очень интересно.

Сложно. Впрочем, если тебе приходилось испытывать баттхёрт от того, что твой, жонглирующий указателями, код, который ты пишешь, не может быть дописан до конца корректно, из-за того, что в нём не осталось места для гарантированно корректного free (куда и как не вставляй free, будут либо утечки памяти либо double free), или что ты не можешь вызвать free на указатель, потому что на этапе компиляции неизвестно, будет ли этот указатель указывать на стек, кучу или в статическую память.

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

Прям скажем, все эти правила выполнять в C не удастся, потому что, например, C не позволяет отразить в типе указателя, куда этот указатель указывает -- на стек, в кучу, в статическую память? С точки зрения C, char* и в Африке char*, с точки зрения rust'а, могут быть нюансы: Box<c_char> -- это указатель на кучу, и соответственно код который перевыделяет память, будет принимать Box<c_char>, и с указателем на стек откажется работать. В C так не сделать, или можно но слишком сложно, может макросами и можно упростить, реализовав тривиальную параметризацию типов, да и то не факт. Но многие правила въедаются не то, что в мозг, они въедаются в пальцы, и твои пальцы отказываются потом писать с нарушением правил.

Эти правила ограничивают полёт мысли и творческую свободу, конечно, но опыт раста может помочь и здесь: есть Learning Rust With Entirely Too Many Linked Lists[1] и есть Rustonomicon[2], если ты скуришь их, попробуешь это на практике и посмотришь как делают другие, то ты не просто будешь знать правила, ты будешь знать как и когда их можно нарушать так, чтобы минимизировать негативные последствия. И опять же не запутаться соплями в борроу-чекере при этом.

Эти знания и навыки вполне можно перенести и в C, и соблюдать (или осмысленно нарушать) эти правила несмотря на то, что компилятор C совершенно не парится об этом и не может отслеживать lifetime'ы и ownership. И на то, чтобы освоить эти правила под чутким руководством borrow-checker'а, будет достаточно, на мой взгляд, 1-3 лет чтения мануалов, написания кода, чтения кода (преимущественно кода std, преимущественно прямо в браузере по ссылке из документации на std) и общения на реддите. Чтобы то же самое освоить с C, потребуется лет пять и ещё хороший ментор, который будет ревьюировать твой код, то есть реально сидеть, вникать и пороть тебя розгами.

[1] https://rust-unofficial.github.io/too-many-lists/
[2] https://doc.rust-lang.org/nomicon/

Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

105. "Выпуск языка программирования Rust 1.38"  +1 +/
Сообщение от Вася Теркин (?), 27-Сен-19, 18:43 
Изучение и практика работ Donald Ervin Knuth здорово вправляет мозги и производит профилактику говнокодинга. Начинать нужно с этого, а уж потом выбирать инструмент под конкретные задачи.
Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

111. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Аноним (111), 27-Сен-19, 19:52 
Это сейчас как-то не модно. Все серебряную пулю ищут.
Ответить | Правка | Наверх | Cообщить модератору

161. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от burjui (ok), 28-Сен-19, 01:40 
Rust не позиционируется как серебряная пуля и не обещает исправить кривые руки. Он обещает безопасную работу с памятью, если не используешь unsafe. Но даже если используешь, то при первой же проблеме будешь знать, где искать. Как часто нужен unsafe? Зависит от задачи. Если писать под голое железо типа Cortex-M3, то относительно часто, пока не напишешь безопасные обёртки над периферией (что уже сделано в svd2rust). Для прикладных задач - почти никогда.

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

Ответить | Правка | Наверх | Cообщить модератору

171. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Аноним (45), 28-Сен-19, 05:33 
БЕЗОПАСНУЮ РАБОТУ С ПАМЯТЬЮ*

<span style="font-size: 1pt">* если не используешь unsafe</span>

// Вот так правильно

Ответить | Правка | Наверх | Cообщить модератору

201. "Выпуск языка программирования Rust 1.38"  +/
Сообщение от Java (?), 30-Сен-19, 17:21 
Да пойми ты, что бизнес-задачам (например, телекому) как раз таки не нужен unsafe в 100% кода. Тем, кто пишет под конкретное железо обёртку для первых - нужен.

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру