Re[8]: Rust взлетает...?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 28.11.18 13:43
Оценка: 6 (1)
Здравствуйте, koenig, Вы писали:

K>не флейма ради, но самообразования для

K>что вместо каналов?

На мой взгляд равноценной замены ни каналам ни Карго в C++ нет и не будет. Более-менее похожие вещи на каналы (давай не будем разводить дискуссию про то, что CSP и Actor-ы это не одно и то же?) — библиотеки типа SObjectizer. А карго даже сложнее.
Re[11]: Use-after-free
От: Qbit86 Кипр
Дата: 28.11.18 13:56
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>В общем случае они не проблема.


Это о**енно большая и сложная проблема, люди над её решениями и дизайном бъются годами, пишут пейперы. Escape analysis и всё такое. В Rust понятия ownership, borrowing, lifetime management — довольно нетривиальная тема. А тут на тебе, C++-инженерА могут раз-два и в продакшн. Лолище.

KP>Косяки уровня возврата по ссылке локального объекта легко ловятся статическими анализаторами.


Как статический анализатор заглянет в код скомпилированных сторонних библиотек? Или он вообще запретит принимать ссылки на вход? Или он вообще запретит возвращать ссылки из функций?

Foo& forward_ref(Foo& ref)
{
    // Код этой функции компилятору недоступен, если он в third-party-библиотеке.
    return ref;
}

Foo& bar()
{
    Foo local;
    return forward_ref(local);
}


KP>Единственная действительная проблема C++
Автор: kaa.python
Дата: 28.11.18
— это его скорость развития и акцент на сильно не первостепенные фичи в прикладной разработке.


Его проблема в том, что это очень слабый, невыразительный язык. В других, более продвинутых языках вроде Rust некоторые заведомо некорректные вещи непредставимы, большой класс таких вещей. А в C++ и в версии C++20, C++23, C++35 это не изменится, даже если туда добавят модули, рефлексию, ranges, networking, корутины, you name it.

std::vector<int> v { 1729 };
int const& ref = v[0];
std::cout << "ref: " << ref << std::endl;     // ref: 1729
int count = 0;
for (; ref == 1729; ++count)
    v.emplace_back(1);

std::cout << "count: " << count << std::endl; // count: 1
std::cout << "ref: " << ref << std::endl;     // ref: -572662307
// Такое не должно быть представимо в языке: ---------^
Глаза у меня добрые, но рубашка — смирительная!
Re[8]: Rust взлетает...?
От: vsb Казахстан  
Дата: 28.11.18 16:18
Оценка:
Здравствуйте, reversecode, Вы писали:

R>преимущество одно, можно наговнокодить и если оно скомпилилось то не упадет

R>другими словами в русте сложно отстрелить себе ногу
R>а поскольку стреляют себе в ногу чаще новички, то руст получается язык на который можно нанимать новичков за меньшие деньги
R>соответственно для бизнеса, попытка решения проблем меньшими затратами

От unsafe упадёт, от пропущенной паники упадёт (а еще есть настройка, при которой паника сразу роняет программу).
Re[8]: Rust взлетает...?
От: Masterspline  
Дата: 28.11.18 16:31
Оценка: +3 -1
C>>>Впрочем, в итоге получилось неплохо — кода там не так много, так что поле для раздолья было не сильно большое.
KP>>Я скорее о том, что как ни силюсь не могу найти серьёзных преимуществ Rust перед C++17. Каналы и Карго не тянут на таковые. Думал, может тут пример такого, ан опять нет, очередной пример "поиграть захотелось".
C>Если в коде на Rust не использовать unsafe и не прилагать очень существенных усилий с Arc'ами, то код будет безопасным. Т.е. в нём не будет утечек, use-after-free, переполнений и т.д.

Статические анализаторы и C++ дадут тот же эффект, но без необходимости бороться с borrow checker.

C>Сам язык тоже существенно приятнее С++, просто за счёт того, что в Rust'е нет legacy от С.


Как я и думал, Rust используют те, кому поднадоел C/C++ и захотелось чего-то другого, новенького (ну, а придумывание каких-то преимуществ, это то, что психологи называют "рационализация" или по простому самоубеждение, оправдание).
Re[9]: Rust взлетает...?
От: FR  
Дата: 28.11.18 17:14
Оценка:
Здравствуйте, vsb, Вы писали:

R>>а поскольку стреляют себе в ногу чаще новички, то руст получается язык на который можно нанимать новичков за меньшие деньги

R>>соответственно для бизнеса, попытка решения проблем меньшими затратами

vsb>От unsafe упадёт, от пропущенной паники упадёт (а еще есть настройка, при которой паника сразу роняет программу).


Скорее всего новичок споткнется на кривой обучения и до всего этого просто не дойдет
Re[7]: Rust взлетает...?
От: FR  
Дата: 28.11.18 17:27
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Я скорее о том, что как ни силюсь не могу найти серьёзных преимуществ Rust перед C++17. Каналы и Карго не тянут на таковые. Думал, может тут пример такого, ан опять нет, очередной пример "поиграть захотелось".


Я как раз в последнее время с rust играюсь. Раньше только чисто теоретически за ним следил,
сейчас попробовал чуть пописать на уровне hello world, очень понравилось
Вообще сильно торчат везде кусочки OCaml'а. Во многом гибрид С++ и OCaml.
Для меня эти кусочки (да даже только один нормальный pattern matching, который
вряд ли в обозримом будущем на C++ появится) вполне за серьезные преимущества идут.
Хотя язык совсем не функциональный при этом.
Re[9]: Rust взлетает...?
От: Cyberax Марс  
Дата: 28.11.18 19:52
Оценка: +4
Здравствуйте, kaa.python, Вы писали:

C>>Если в коде на Rust не использовать unsafe и не прилагать очень существенных усилий с Arc'ами, то код будет безопасным. Т.е. в нём не будет утечек, use-after-free, переполнений и т.д.

KP>Так и C++ будет безопасным без голых указателей в обвесе с GSL и санитайзерами. Ну да, немного надо сделать не из коробки, но это же один раз делается
Нет, это надо постоянно писать на специальном диалекте С++ и тщательно за этим следить. В Rust при использовании стандартной библиотеки даётся даже гарантия отсутствия data races.
Sapienti sat!
Re[9]: Rust взлетает...?
От: Cyberax Марс  
Дата: 28.11.18 19:54
Оценка: 9 (1) +2
Здравствуйте, Masterspline, Вы писали:

C>>Если в коде на Rust не использовать unsafe и не прилагать очень существенных усилий с Arc'ами, то код будет безопасным. Т.е. в нём не будет утечек, use-after-free, переполнений и т.д.

M>Статические анализаторы и C++ дадут тот же эффект, но без необходимости бороться с borrow checker.
Не дадут, только в самых простых случаях и при доступности для анализатора всего кода.
Sapienti sat!
Re[9]: Rust взлетает...?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 29.11.18 10:30
Оценка:
Здравствуйте, Masterspline, Вы писали:

M>Статические анализаторы и C++ дадут тот же эффект, но без необходимости бороться с borrow checker.

Зачем бороться? Тема-то хорошая, только надо привыкнуть к этом и начать писать немного по другому. BC меня тоже жутко напрягает, ага.
Sic luceat lux!
Re: Rust взлетает...?
От: mizuchi Земля  
Дата: 04.01.19 15:39
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Довольно интересная новость из мира виртуализации: Amazon открыл исходные коды платформы виртуализации Firecracker, которая оказалась написана на Rust. С одной стороны, у Amazon было не так уж и много опций для реализации чего-то похожего: Си да Rust, ну может быть C++, хотя это сомнительно по причине относительно громоздкого рантайма. С другой стороны, это еще одна серьезная компания, которая заинтересовалась языком.


KP>Может кто-то рассказать о своем опыте использования Rust в коммерческих проектах? Я пока что разве несколько стартапов с Rust видел, где он скорее по маркетинговым соображениям использовался, так как есть теория, что найти квалифицированного разработчика на Rust проще чем на C++. На первый взгляд разумная теория...



https://github.com/GildedHonour/frank_jwt

и пару сайтов на нем написал. потом перепесал на Go

Go — это мощь
---------------------

nothingness.space
Re[2]: Rust взлетает...?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.19 23:20
Оценка:
Здравствуйте, mizuchi, Вы писали:

M>https://github.com/GildedHonour/frank_jwt


M>и пару сайтов на нем написал. потом перепесал на Go


M>Go — это мощь


Для ряда задач Go действительно отличное решение, особенно с учетом того, как легко в него входить.
Re[10]: Rust взлетает...?
От: MT-Wizard Украина  
Дата: 16.01.19 03:29
Оценка: :)
Здравствуйте, Kernan, Вы писали:

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


M>>Статические анализаторы и C++ дадут тот же эффект, но без необходимости бороться с borrow checker.

K>Зачем бороться? Тема-то хорошая, только надо привыкнуть к этом и начать писать немного по другому. BC меня тоже жутко напрягает, ага.

Borrow checker — одна из немногих причин, по которой я раст никогда не восприму как язык для работы. Я хочу дело делать, а не доказывать компилятору что-то.
А ти, москалику, вже приїхав (с)
Re[11]: Rust взлетает...?
От: WolfHound  
Дата: 18.01.19 20:13
Оценка: +2
Здравствуйте, MT-Wizard, Вы писали:

MW>Borrow checker — одна из немногих причин, по которой я раст никогда не восприму как язык для работы. Я хочу дело делать, а не доказывать компилятору что-то.

А как ты узнаешь, что сделал дело, а не протекающий падучий багодром?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Rust взлетает...?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.01.19 03:52
Оценка: -1 :))
Здравствуйте, WolfHound, Вы писали:

WH>А как ты узнаешь, что сделал дело, а не протекающий падучий багодром?


Возьмёт ubsan и asan да убедится. Или это сложнее чем с borrow checker-ом бороться?
Re[11]: Rust взлетает...?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 19.01.19 09:16
Оценка:
Здравствуйте, MT-Wizard, Вы писали:

MW>Borrow checker — одна из немногих причин, по которой я раст никогда не восприму как язык для работы. Я хочу дело делать, а не доказывать компилятору что-то.


А если ты объявил переменную ix, а используешь необъявленную xi — это тоже называется "я ещё должен компилятору доказывать, что я не опечатался"?
The God is real, unless declared integer.
Re[8]: Rust взлетает...?
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.01.19 12:30
Оценка: +2
Здравствуйте, reversecode, Вы писали:

R>а поскольку стреляют себе в ногу чаще новички, то руст получается язык на который можно нанимать новичков за меньшие деньги

R>соответственно для бизнеса, попытка решения проблем меньшими затратами

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

А во-вторых, переусложненность языка создает больше проблем, чем небезопасность, потому что требует неразумного количества интеллектуальных усилий, чтобы себя обслуживать. Не уверен, впрочем, что руст в этом плане так уж фундаментально сильно лучше, чем Ц++.
Re[9]: Rust взлетает...?
От: WolfHound  
Дата: 19.01.19 14:35
Оценка: +3
Здравствуйте, Pzz, Вы писали:

Pzz>А во-вторых, переусложненность языка создает больше проблем, чем небезопасность, потому что требует неразумного количества интеллектуальных усилий, чтобы себя обслуживать. Не уверен, впрочем, что руст в этом плане так уж фундаментально сильно лучше, чем Ц++.

Намного лучше. В случае с Rust тебе нужно один раз напрячься и доказать компилятору что ты не верблюд.
В случае с С++ тебе нужно постоянно думать, а не верблюд ли ты.
Более того тебе нужно думать, а не верблюд ли твой коллега и те программисты код которых ты скачал с интернета.
В случае с Rust те люди которые написали код докажут что они не верблюды.

То есть разработка на Rust и других языках которые точно знают что код написал не верблюд масштабируется намного лучше чем на С++.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Rust взлетает...?
От: WolfHound  
Дата: 19.01.19 14:35
Оценка:
Здравствуйте, kaa.python, Вы писали:

WH>>А как ты узнаешь, что сделал дело, а не протекающий падучий багодром?

KP>Возьмёт ubsan и asan да убедится. Или это сложнее чем с borrow checker-ом бороться?
Проще. Только это не даёт гарантий, что ты всё поймал. А это значит, что падение в продакшене только вопрос времени.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Rust взлетает...?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 21.01.19 09:06
Оценка: +3
Здравствуйте, WolfHound, Вы писали:

WH>Проще. Только это не даёт гарантий, что ты всё поймал. А это значит, что падение в продакшене только вопрос времени.


Куда более распространенная проблема проблем в продакшн это не утечки/расстрел памяти, кои очень редки в современном мире, а банальные ошибки программирования от которых ни один язык не защищает. Меня не покидает ощущение того, что большинство активно агитирующих за Rust либо наслушалось страшилок про C++ при этом не имея с ним реального опыта, лабо были тяжело травмированы C++98/03. И да, C++98/03 был действительно сильно травмирующим неустойчивую психику языком

P.S. мне нравится Rust и его идея, просто никакой серебрянной пули и серьезного выигрыша по сравнению с C++ в безопасности кода нет. А вот Cargo, интерфейсы вместо классов, тесты вместе с исходниками и CSP из коробки и куча других моментов — это да, это несомненные жирные плюсы.
Отредактировано 21.01.2019 9:19 kaa.python . Предыдущая версия . Еще …
Отредактировано 21.01.2019 9:09 kaa.python . Предыдущая версия .
Re[15]: Rust взлетает...?
От: Zhendos  
Дата: 21.01.19 12:19
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


WH>>Проще. Только это не даёт гарантий, что ты всё поймал. А это значит, что падение в продакшене только вопрос времени.


KP>Куда более распространенная проблема проблем в продакшн это не утечки/расстрел памяти, кои очень редки в современном мире,


Точно редки? Недавний пример с Java/Android, код с утекающей памятью чуть ли у каждого второго новичка:
anonymous class реализуем Observer для некого события, и неявно в соответствии со спецификацией Java захватывает ссылку на
Activity, экран переворачивается, Activity пересоздается, ссылка на нее все еще есть (циклическая удаленная Activity на Observer,
Observer на Activity), вот и утечка памяти, а Activity может довольно много весить.
В общем-то и в C++ с активным использованием std::shared_ptr такое будет.

KP>P.S. мне нравится Rust и его идея, просто никакой серебрянной пули и серьезного выигрыша по сравнению с C++ в безопасности кода нет.


Опять же возьмем новичка, в C++ передаст куда-нибудь указатель в стороннее API и не прочитает документацию,
а не новичку каждый раз гемор, нужно разбираться кто владеет ресурсом при передаче указателя,
а Rust использовать API неправильно и тут же ошибка компиляции.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.