Re[7]: Rust - suxx & mustdie
От: Zhendos  
Дата: 18.12.21 09:51
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, DarkEld3r, Вы писали:


DE>>Паники ровно в той же степени непредсказуемы как std::abort или throw 1 в сторонних библиотеках. То есть, встретиться могут и да, нет механизма контроля (с оговорками), но обычно так делать не принято. Есть некоторое количество исключений вроде доступа по индексу. Против таких методов из стандартной библиотеки помогает (изкоробочный) линтер.


KP>Паники отключаются? Критический код не может содержать исключений (паник и всего на них похожего) и динамического выделения памяти.


Есть такой "crate" для валидации на стадии компиляции что данная функция не может
вызывать "panic": https://docs.rs/no-panic/latest/no_panic/
Re[6]: Rust - suxx & mustdie
От: Zhendos  
Дата: 18.12.21 09:56
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, Zhendos, Вы писали:


Z>>А чем это отличается от unique_ptr/shared_ptr/atomic_shared_ptr ?


KP>В точку! Та же хренота, но в других местах ты еще и компилятор ублажаешь, вместо того что бы код писать.


Не знаю, у меня опыт противоположный. Компилятор именно помогает,
была довольно много случаев когда была неочевидная зависимость данных друг от друга (тип тут "callback"
менят то-то, тут вызывается эта функция и в итоге меняется то-то)
и компилятор это выявлял. Правда я долго разбирался что не нравиться компилятору.
Но так же я бы это делал и в C++ только под давлением стресса, так как у меня был бы "core dump",
и пользователи интересующиеся "а когда же это починят".

А вот "Cell" очень редко приходилось использовать, и только в начале использования Rust,
потом пересмотрел архитектуру и как-то незаметно вообще прекратил его использовать.
Re[8]: Rust - suxx & mustdie
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.12.21 09:57
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>Есть такой "crate" для валидации на стадии компиляции что данная функция не может

Z>вызывать "panic": https://docs.rs/no-panic/latest/no_panic/

Этого мало, нужна возможность собрать приложение "без паник" целиком. C++ позволяет собрать код с выключенными исключениями.
Re[7]: Rust - suxx & mustdie
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.12.21 10:11
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>была довольно много случаев когда была неочевидная зависимость данных друг от друга (тип тут "callback"

Z>менят то-то, тут вызывается эта функция и в итоге меняется то-то)
Z>и компилятор это выявлял. Правда я долго разбирался что не нравиться компилятору.
Z>Но так же я бы это делал и в C++ только под давлением стресса, так как у меня был бы "core dump",
Z>и пользователи интересующиеся "а когда же это починят".

Юнит тесты не пишешь что-ли? Детская ошибка которую всегда ловят тесты

UPD. а вот такой подход приносит проблемы в любом языке:

тип тут "callback" менят то-то, тут вызывается эта функция и в итоге меняется то-то


И от проблемного дизайна Rust не спасает, а вот функциональщина тебя бы тут как раз спасла.
Отредактировано 18.12.2021 13:04 kaa.python . Предыдущая версия .
Re[8]: Rust - suxx & mustdie
От: Ночной Смотрящий Россия  
Дата: 18.12.21 10:16
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Ну бывает, проект древний, с очень серьезными требованиями к скорости. Это всяко единичный случай.


Какой знакомый аргумент
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[6]: Rust - suxx & mustdie
От: T4r4sB Россия  
Дата: 18.12.21 10:26
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Шта? Это С но не С++


У вас там всё на shared_ptr + weak_ref , я так понимаю?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[4]: Rust - suxx & mustdie
От: T4r4sB Россия  
Дата: 18.12.21 10:28
Оценка:
Здравствуйте, vaa, Вы писали:

vaa> если же инженер уже знает си, то ему проще написать на нем. чем учить новый сложный яп.


Продолжая:
если же инженер уже знает кобол/фортран/пл1, то ему проще написать на нем. чем учить новый сложный яп.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[7]: Rust - suxx & mustdie
От: CreatorCray  
Дата: 18.12.21 10:38
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>У вас там всё на shared_ptr + weak_ref , я так понимаю?

Мой С++ код вообще не использует std::
Но тем не менее всё по контейнерам и голых королей указателей наружу не торчит
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Rust - suxx & mustdie
От: CreatorCray  
Дата: 18.12.21 10:38
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB> если же инженер уже знает кобол/фортран/пл1, то ему проще написать на нем. чем учить новый сложный яп.


Как там было?
"Настоящий программист напишет программу на фортране на любом языке программирования" (С)
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Rust - suxx & mustdie
От: T4r4sB Россия  
Дата: 18.12.21 11:08
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Но тем не менее всё по контейнерам и голых королей указателей наружу не торчит


Ок, архитектура на шаредак и слабых указателях, получается?
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Re[3]: Rust - suxx & mustdie
От: ononim  
Дата: 18.12.21 11:29
Оценка: :)
vaa>>его написали два крутых чувака из мира C|C++
DE>И ты ещё говоришь о "молодёжи падкой на рекламу". (:
Реклама — это когда чуваки с огнм в глазах рассказывают что то что они сделали — огого!
А когда чуваки сделавшие проверенное на практике огого и не единожды, делают очередное нечто, небрежно выкладывая его в репозиторий — это авторитет и репутация.
Не надо путать рекламу с репутацией.
Как много веселых ребят, и все делают велосипед...
Re[9]: Rust - suxx & mustdie
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.12.21 13:06
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Какой знакомый аргумент


Ты взрослый дядя, нормальный аргумент. В старых проектах бывает всяко. В новых не бывает, если разработчики следуют хорошим практикам, и для плюсов это C++ Core Guidelines. Вот тут
Автор: kaa.python
Дата: 17.12.21
я как раз про это и говорил.
Re[9]: Rust - suxx & mustdie
От: landerhigh Пират  
Дата: 18.12.21 13:39
Оценка: +2 -1 :))
Здравствуйте, T4r4sB, Вы писали:

TB>Ок, архитектура на шаредак и слабых указателях, получается?


Архитектура "на shared" указателях — это отсутсвие архитектуры.

Нормальная архитектура подразумевает четкую модель владения данными
Re[10]: Rust - suxx & mustdie
От: ononim  
Дата: 18.12.21 13:54
Оценка:
KP>Ты взрослый дядя, нормальный аргумент. В старых проектах бывает всяко. В новых не бывает, если разработчики следуют хорошим практикам, и для плюсов это C++ Core Guidelines. Вот тут
Автор: kaa.python
Дата: 17.12.21
я как раз про это и говорил.

На самом деле в современных плюсах не хватает режима который бы их энфорсил, запрещая голые указатели и т.п.
Как много веселых ребят, и все делают велосипед...
Re[11]: Rust - suxx & mustdie
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.12.21 14:17
Оценка:
Здравствуйте, ononim, Вы писали:

KP>>Ты взрослый дядя, нормальный аргумент. В старых проектах бывает всяко. В новых не бывает, если разработчики следуют хорошим практикам, и для плюсов это C++ Core Guidelines. Вот тут
Автор: kaa.python
Дата: 17.12.21
я как раз про это и говорил.

O>На самом деле в современных плюсах не хватает режима который бы их энфорсил, запрещая голые указатели и т.п.

Совсем прям их не запретить, как мне кажется, но сильно сократить острые места можно через интеграцию clang-tidy с CI.
Re[10]: Rust - suxx & mustdie
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.12.21 14:49
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Нормальная архитектура подразумевает четкую модель владения данными


Если уж настолько придираться к словам, то архитектура приложения и умные указатели вообще никак не связаны друг с другом.
Re[7]: Rust - suxx & mustdie
От: DarkEld3r  
Дата: 18.12.21 15:14
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Паники отключаются?


Что значит отключаются? Сейчас доступны две стратегии обработки паники: "обычная" (размотка стека и т.д.), и моментальный abort. Вторая позволяет не генерировать лишний код. Запретить паниковать стороннему коду, как и в С++, нельзя. Есть только костыльный способ проверить может ли код выбрасывать панику. Ну и линтер умеет предупреждать об использовании таких методов из стандартной библиотеки.
Re[9]: Rust - suxx & mustdie
От: DarkEld3r  
Дата: 18.12.21 15:15
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>C++ позволяет собрать код с выключенными исключениями.


С++ как раз не позволяет (в стандарте про это ни слова), позволяют отдельные реализации. Если мы говорим о штуках вроде -fno-exceptions, то так (заменять исключения на аборт и выкидывать код размотки стека) и раст умеет.
Re[10]: Rust - suxx & mustdie
От: CreatorCray  
Дата: 18.12.21 23:32
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Архитектура "на shared" указателях — это отсутсвие архитектуры.

Ну т.е. выходит куча managed языков да и вообще всё, где есть GC — с отсутствующей архитектурой.
В том числе шарп и жаба, потому как хоть там и нет явных shared указателей объект жив пока на него хоть кто то ссылается.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Rust - suxx & mustdie
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.12.21 23:48
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>А зачем их вообще помнить? Не храни итераторы за пределами текущей области видимости. Не удаляй объекты из коллекции в цикле. Если следовать этим двум простым принципам ты никогда не получишь проблемы с итераторами. Ситуация когда тебе эти два правила надо нарушить невероятно редкая (я реже чем раз в год сталкиваюсь), ну и если уж случилось такое — перечитать правила инвалидации итератора для конкретного контейнера дело 5-ти минут. Это вообще ничто по сравнению с усилиями на ублажение компилятора Rust.


Ну, вообще-то, если удалять в цикле — то это часто оптимальнее. Но да, тут надо почитать немного о правилах инвалидации для конкретного типа контейнера. И безусловно, это гораздо проще, чем постоянная борьба с языком, как в случае раста.

В любом случае, всегда есть что-то типа std::transform


TB>>А ещё очень круто, когда у тебя есть проект, в котором спокойно указатели используются в качестве ключей хеш-мапы, это наверное команда не осилила гайды. Проект называется LLVM, если что.


KP>Ну бывает, проект древний, с очень серьезными требованиями к скорости. Это всяко единичный случай.


LLVM — Первый выпуск — 24 октября 2003
GCC — Первый выпуск — 23 мая 1987

Это смотря с чем древность сравнивать. GCC, кстати, как я слышал, таки переехал/переезжает на плюсики. А LLVM вроде изначально плюсовый, хоть и стартовал на весьма старой на текущий момент версии плюсиков. Хотя и 0x03 были весьма годными.

А указатели как ключи мапы — вообще не вижу криминала, если это целесобразно требованиям производительности. Немного аккуратности, завернуть это в безопасный API — и нет проблем, можно хоть индусам давать в использование
Маньяк Робокряк колесит по городу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.