Re[9]: Rust vs C++ 17
От: Васильич  
Дата: 06.01.16 16:47
Оценка:
Здравствуйте, _VW_, Вы писали:

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


_VW>>>то есть, это ограничение руста?


ARK>>Это ограничение существующей экосистемы руста, но не самого руста, как языка программирования.



_VW>насколько это серьезное ограничение эко-системы? также, вроде бы как собирались сделать, чтобы возращался Result<> из функции выделения памяти, вместо аварийного завершения, если памяти нет.


Судя по ответу Стива Клабника здесь, в ближайшее время ничего менять не собираются:

"Yes, in general, the standard library assumes that you can't really handle OOM. Using libcore and custom allocators, you could implement whatever behavior you'd like, but you'd still need to re-implement this kind of thing on top of it."

С другой стороны, сейчас ведется работа над "placement box" (ознакомиться можно здесь), что приведет к появлению поддержки сторонних аллокаторов. Но, опять же, никаких потенциальных возвратов ошибок вроде как не предвидится, плюс нельзя будет использовать свой аллокатор для существующих коллекций, как я понял.

Так что, в ближайшие год-два точно, единственный способ обрабатывать ситуации нехватки памяти можно будет только реализуя собственные менеджеры памяти и переписывая требуемые структуры данных для них.
Re[4]: Rust vs C++ 17
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 06.01.16 16:50
Оценка: -1
ARK>

From my experience, I found it awfully difficult to understand how to work with borrowing and lifetimes.

ARK>А это — нет. Возможность попроще говнокодить (и потенциально допускать ошибки) ставится выше создания гарантированно корректного кода.
ARK>Это не говорит о том, что у Rust нет преимуществ.

По опыту — С++ код, активно использующий семантику перемещения и уникальные указатели бывает иногда довольно сложно понять. Обычно в приложении есть два с половиной объекта, время жизни которых имеет значение, остальное же может быть отдано на откуп GC или еще какому-нибудь механизму. Rust же, наоборот, делает шаг назад от языков с автоматическим управлением временем жизни объектов, но при этом не дает никаких особенных преимуществ по сравнению с С++, с которым он на одном уровне по когнитивной нагрузке, но только без тулинга/библиотек/книг/статей/конференций/программистов.
Re[2]: Rust vs C++ 17
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 06.01.16 16:53
Оценка: -1
KP>быстрый код в общем случае не уступающий C/C++;
KP>гарантии корректной работы с памятью.

одно исключает другое
Отредактировано 06.01.2016 17:01 ELazin . Предыдущая версия .
Re[10]: Rust vs C++ 17
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 06.01.16 17:00
Оценка: +1
В>"Yes, in general, the standard library assumes that you can't really handle OOM. Using libcore and custom allocators, you could implement whatever behavior you'd like, but you'd still need to re-implement this kind of thing on top of it."

Да уж, булшит про невозможность обработки OOM на уровне рантайма это сильно. Далеко не всегда ООМ нельзя обработать. Часто это возможно и даже требуется делать.
Re[10]: Rust vs C++ 17
От: _VW_ Марс  
Дата: 06.01.16 17:02
Оценка:
Здравствуйте, Васильич, Вы писали:

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


насколько это серьезное ограничение эко-системы? чем плохо отсуствие возможности отловить ошибку OOM?
Re[3]: Rust vs C++ 17
От: pagid Россия  
Дата: 06.01.16 18:17
Оценка:
Здравствуйте, Васильич, Вы писали:

В>Исходники стандартной библиотеки просто кишат unsafe'ами

То есть это утверждение предыдущего оратора

KP>>* быстрый код в общем случае не уступающий C/C++;


не соответствует действительности, сравнимой производительности без unsafe не получится?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Отредактировано 17.01.2016 3:56 VladD2 . Предыдущая версия .
Re[9]: Rust vs C++ 17
От: AlexRK  
Дата: 06.01.16 18:28
Оценка:
Здравствуйте, _VW_, Вы писали:

_VW>насколько это серьезное ограничение эко-системы? также, вроде бы как собирались сделать, чтобы возращался Result<> из функции выделения памяти, вместо аварийного завершения, если памяти нет.


Ну, я не супер-знаток растовой экосистемы, но полагаю, что преодоление данного ограничения будет означать переписывание неприемлемо большого количества кода.
Re[5]: Rust vs C++ 17
От: AlexRK  
Дата: 06.01.16 18:32
Оценка: +1
Здравствуйте, ELazin, Вы писали:

ARK>>

From my experience, I found it awfully difficult to understand how to work with borrowing and lifetimes.

ARK>>А это — нет. Возможность попроще говнокодить (и потенциально допускать ошибки) ставится выше создания гарантированно корректного кода.
ARK>>Это не говорит о том, что у Rust нет преимуществ.

EL>По опыту — С++ код, активно использующий семантику перемещения и уникальные указатели бывает иногда довольно сложно понять.


Возможно, причина заключается не в том, что "код активно использует семантику перемещения и уникальные указатели", а в том, что это "С++ код, активно использующий семантику перемещения и уникальные указатели". С++ не проектировался с учетом семантики перемещения и не _требует_ ее. Но это только моя гипотеза.

EL>Обычно в приложении есть два с половиной объекта, время жизни которых имеет значение, остальное же может быть отдано на откуп GC или еще какому-нибудь механизму. Rust же, наоборот, делает шаг назад от языков с автоматическим управлением временем жизни объектов, но при этом не дает никаких особенных преимуществ по сравнению с С++, с которым он на одном уровне по когнитивной нагрузке, но только без тулинга/библиотек/книг/статей/конференций/программистов.


Про тулинг/библиотеки/книги/статьи/конференции — это без вопросов, тут С++ на световые годы впереди. Насчет всего остального не уверен.
Re[3]: Rust vs C++ 17
От: AlexRK  
Дата: 06.01.16 18:35
Оценка:
Здравствуйте, ELazin, Вы писали:

KP>>быстрый код в общем случае не уступающий C/C++;

KP>>гарантии корректной работы с памятью.

EL>одно исключает другое


В случае раста есть некоторые накладные расходы на проверки, но в общем случае это утверждение неверно. Статически можно проверять все, даже выход за границы массивов, но сейчас это мейнстримом не является.
Re[3]: Rust vs C++ 17
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.01.16 01:35
Оценка: 1 (1)
Здравствуйте, ELazin, Вы писали:

EL>одно исключает другое


Не противоречит при условии обеспечения гарантий на этапе компиляции. Надо признать, гарантии безопасной работы с памятью не везде и не всегда, можно и в рантайме в панику вылететь при попытке захватить ссылку на объект, но в общем случае ситуация с безопасной работой с памятью ощутимо лучше чем в C++.
Re: Rust vs C++ 17
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 07.01.16 06:45
Оценка: +2 :))) :))) :)
Здравствуйте, _VW_, Вы писали:

_VW>Как я понял, у Rust'а нет никаких явных преимуществ перед C++ 17?


Ансельм Кентерберийский еще в 1078 году сформулировал онтологический аргумент явного преимущества Раста перед С++17: Раст уже существует, уже реален, а С++17 еще нет.
Re[10]: Rust vs C++ 17
От: _VW_ Марс  
Дата: 07.01.16 09:00
Оценка:
Здравствуйте, AlexRK, Вы писали:

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


_VW>>насколько это серьезное ограничение эко-системы? также, вроде бы как собирались сделать, чтобы возращался Result<> из функции выделения памяти, вместо аварийного завершения, если памяти нет.


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


я не про это. а про то, как часто его может нужно будет преодолевать.
Re[11]: Rust vs C++ 17
От: AlexRK  
Дата: 07.01.16 09:40
Оценка:
Здравствуйте, _VW_, Вы писали:

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


_VW>я не про это. а про то, как часто его может нужно будет преодолевать.


А... получается, этот вопрос к расту вообще не относится. Как часто вообще надо обрабатывать OOM? Фиг знает. В системах с ограниченными ресурсами это, скорее всего, общее место. Но я в этом не копенгаген.
Re[2]: Rust vs C++ 17
От: uncommon Ниоткуда  
Дата: 08.01.16 05:56
Оценка:
Здравствуйте, Васильич, Вы писали:

> Гарантии безопасной работы с памятью, большей частью на этапе компиляции;


В>C++ имеет похожие возможности в некоторых областях, но при этом не дает никаких гарантий.


Саттер показывал lifetime tracking для C++ на CppCon 2015: https://youtu.be/hEx5DNLWGgA?t=1h21m47s
Re[2]: Rust vs C++ 17
От: uncommon Ниоткуда  
Дата: 08.01.16 05:58
Оценка: :)
Здравствуйте, kaa.python, Вы писали:

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


_VW>>Как я понял, у Rust'а нет никаких явных преимуществ перед C++ 17?


KP>Есть и плюсы и минусы. В целом, для небольшой и сильной команды он предпочтительнее. Для большой и/или слабой команды лучше взять C++, а еще лучше Java или C#


Rust перевёл C++ в разряд Java. Это достижение!
Re[9]: Rust vs C++ 17
От: uncommon Ниоткуда  
Дата: 08.01.16 06:04
Оценка: -1
Здравствуйте, _VW_, Вы писали:

_VW>насколько это серьезное ограничение эко-системы? также, вроде бы как собирались сделать, чтобы возращался Result<> из функции выделения памяти, вместо аварийного завершения, если памяти нет.


Да просто выбросить исключение. Упс...
Re[2]: Rust vs C++ 17
От: alex_public  
Дата: 08.01.16 06:54
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Основные плюшки:

KP>

На данный момент это миф. Хотя возможно когда-нибудь в будущем это станет реальностью, т.к. никаких фундаментальных препятствий Rust не имеет (в отличие от того же Java/C#). Однако для этого требуется ещё не один год активной работы над компилятором.

KP>Почему бы я его не взял для большой/слабой команды:

KP>

Да, это существенная проблема. Но на мой взгляд есть ещё и гораздо более серьёзная: непонятно какие собственно бонусы принесёт язык (ну кроме небольшого синтаксического сахара), в случае перехода на него с C++ (а в особенности если взглянуть на будущий стандарт).
Re[4]: Rust vs C++ 17
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 08.01.16 12:16
Оценка:
ARK>В случае раста есть некоторые накладные расходы на проверки, но в общем случае это утверждение неверно. Статически можно проверять все, даже выход за границы массивов, но сейчас это мейнстримом не является.

И не имеет отношения к разговору.
Re[4]: Rust vs C++ 17
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 08.01.16 12:23
Оценка: -2
KP>Не противоречит при условии обеспечения гарантий на этапе компиляции. Надо признать, гарантии безопасной работы с памятью не везде и не всегда, можно и в рантайме в панику вылететь при попытке захватить ссылку на объект, но в общем случае ситуация с безопасной работой с памятью ощутимо лучше чем в C++.

Ощутимо лучше чем? В современном С++ не принято использовать голые указатели и Си-стиль. Помимо этого для С++ есть соответствующий тулинг (ASan). Ну и свойство memory safety, оно не composable, если у тебя есть unsafe код, который портит память, то уронить приложение можно и в safe блоке. Memory safe приложение должно состоять только из safe кода, что в случае раста явно не выполняется, так что все эти гарантии — ничего не стоят.
Re[5]: Rust vs C++ 17
От: AlexRK  
Дата: 08.01.16 14:54
Оценка: +2
Здравствуйте, ELazin, Вы писали:

EL>Ощутимо лучше чем? В современном С++ не принято использовать голые указатели и Си-стиль. Помимо этого для С++ есть соответствующий тулинг (ASan). Ну и свойство memory safety, оно не composable, если у тебя есть unsafe код, который портит память, то уронить приложение можно и в safe блоке. Memory safe приложение должно состоять только из safe кода, что в случае раста явно не выполняется, так что все эти гарантии — ничего не стоят.


"Не принято" и "запрещено везде, кроме unsafe блоков" — таки разные вещи.
Наличие явно выделенных небольших unsafe блоков лучше, чем один громадный unsafe блок в С++. Ну и есть подозрение, что типичное приложение не будет нуждаться в unsafe.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.