The OpenNET Project / Index page

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



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

Оглавление

Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust, opennews (?), 04-Апр-22, (0) [смотреть все]

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


7. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +7 +/
Сообщение от Анонн (?), 04-Апр-22, 23:31 
Да ладно, сколько лишних проверок на null делается в си программах из-за отсутствия нормальных optional?
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

8. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +/
Сообщение от НяшМяш (ok), 04-Апр-22, 23:37 
нормальный человек: asserts, asserts everywhere
эксперт опеннета: я же не как все, мой код всегда корректный
Ответить | Правка | Наверх | Cообщить модератору

13. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +9 +/
Сообщение от Анонн (?), 04-Апр-22, 23:54 
А толку от ассерта, если он или прогу роняет, или ничего не делает. В дебаге ты все кейсы не проверишь, в релиз - не потянешь. Все равно придется делать проверки.
Ответить | Правка | Наверх | Cообщить модератору

64. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +/
Сообщение от НяшМяш (ok), 05-Апр-22, 14:53 
> В дебаге ты все кейсы не проверишь

Значит в конторе большие проблемы с тестированием. Но в любом случае я согласен, что в наше время начинать новый проект на сяшке - надо иметь очень сильные аргументы за.

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

37. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  –2 +/
Сообщение от Аноним (92), 05-Апр-22, 08:21 
> сколько лишних проверок на null

Некоторые умные компиляторы, в том числе бекенды в виде llvm, умеют оптимизировать лишние проверки.

> optional

И сколько лишних приседаний делаешь, чтобы использовать этот optional? Unwrap на unwrap'е и unwrap'ом погоняет?
Использование optional не сокращает количество кода.

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

50. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +/
Сообщение от Аноним (50), 05-Апр-22, 09:54 
Так если unwrap то тоже будет panic, а так проверки никуда не деваются Option<T>
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

53. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  –2 +/
Сообщение от Анонн (?), 05-Апр-22, 11:15 
> умеют оптимизировать лишние проверки.

Ага, но там только есть некая вероятность что компилятор сможет "догадаться" что вход никогда не будет пустой и это можно оптимизировать и зависит от версии компилятора, фазы луны, может быть флагов, структуры написанного кода.

> Использование optional не сокращает количество кода.

Не правда. "if (a == null) { }" очень мало отличается по длине от "if let Some(i) = number { }"
А unwrap добавляет всего одно слово. Да, он будет паниковать и это редко нужное решение - лучше правильно захендлить ошибку.

Но если у тебя есть группа функций, преобразовывающих один объект, напр. строку, которые могут вызываться как по отдельности, так и в виде цепочки вызовов, то в си тебе придется в каждой функции делать проверку входной строки. Просто потому что ты не знаешь в каком порядке их вызовут. Ну или писать в доке "обязательно проверьте что вход не null" и обязательно найдется тот, кто это не сделает.

А тут ты делаешь параметры всех функций non-optional и проверка нужна только ОДНА в любом случае - что перед вызовом одной функции, что перед вызовом цепочки из 100500 функций.

Причем это не какая-то особая фишка раста, нормальные optional есть в kotlin, swift и других языках.

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

68. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +/
Сообщение от QMaster (ok), 05-Апр-22, 15:54 
Вот из-за этого "всего одно слово" паскакаль и его наследники и не взлетели. Словоблудие и скорость разработки - вещи несовместимые.
А ещё, где-то вовремя забытый unwrap даёт ошибку компиляции, дописывание и по кругу, т.к. где-то забыт ещё один. :)
Ответить | Правка | Наверх | Cообщить модератору

69. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +3 +/
Сообщение от Анонн (?), 05-Апр-22, 16:11 
Э... Я надеюсь это у тебя юмор такой.

Забытый unwrap (как и лишний) действительно даст ошибку компиляции. И программист пойдет и исправит ее. Причем еще до того как пушнет этот код куда-то. Эта ошибка никогда не дойдет до пользователя.

А забытая проверка на null так и останется забытой проверкой на null. Пока не найдется во время очередной CVE, и все будут думать "ну как же так случилось, любой настоящий погромист знает что нужно проверять входные данные!"

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

75. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  –1 +/
Сообщение от Аноним (-), 06-Апр-22, 01:34 
Рантайм паникам раста это все расскажете
Ответить | Правка | Наверх | Cообщить модератору

86. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +/
Сообщение от Аноним (-), 06-Апр-22, 11:35 
>> Забытый unwrap (как и лишний) действительно даст ошибку компиляции. [будет ошибка значения типа]
> Рантайм паникам раста это все расскажете

А тебе, не знающему матчасть, но ценное мнение имеющему, что сказать?

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

120. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  +1 +/
Сообщение от Аноним (120), 07-Апр-22, 17:58 
> в си тебе придется в каждой функции делать проверку входной строки. Просто потому что ты не знаешь в каком порядке их вызовут

А ну-ка покажы, где так делают? Для неокрепших умов мисрой обмазываться -- это как ницше читать.

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

74. "Выпуск Arti 0.2.0, официальной реализации Tor на языке Rust"  –1 +/
Сообщение от Аноним (-), 06-Апр-22, 01:33 
И большая их часть удаляется оптимизатором если он может доказать что проверка бесполезная
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

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

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




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

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