Здравствуйте, CRT, Вы писали:
CRT>так на то он и наглядный (искусственный) чтобы тебе было лучше видно. Это не значит что такое не может произойти в менее наглядном (заметном) виде
Насрать говнокодом — очень наглядно, да.
И раз уж мы про наглядные примеры...
Бензопилой можно дрова порезать а можно ногу отхреначить.
Но в этом не бензопила будет виновата, и даже не кривые ручонки, которые её держали, а тупая башка, которая этим ручонкам говорила что делать. https://www.youtube.com/watch?v=q9A6_MWZ0VY
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Shmj, Вы писали:
S>речь же о смарт указателях и умном управлении памятью
А где у тебя умное управление памятью то?
Там ж фейспалм на фейспалме.
S>Речь про управление памятью с помощью умных указателей. Rust вам просто не позволит чтобы указатель пытались использовать после перемещения.
Если тебе, чтоб не писать ну настолько укуренный код надо чтоб постоянно бил по рукам компилятор — тебе таки да, надо писать исключительно на расте, а во взрослые языки не лезть.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Shmj, Вы писали:
S>С непривычки кажется что это сложно. На самом деле вам нужно знать всего 2 вещи:
Хехе.
А теперь покажи doubly linked list
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
S>>Вы начнете штудировать Rust вместо C++ и перестанете захламлять форумы по C++ здесь, на RSDN? CC>А было бы неплохо...
Здравствуйте, CreatorCray, Вы писали:
S>>речь же о смарт указателях и умном управлении памятью CC>А где у тебя умное управление памятью то? CC>Там ж фейспалм на фейспалме.
Экземпляр класса Class1 создали в куче и ссылаемся с помощью умного указателя — по выходу из функции — он будет уничтожен без ручного вызова delete.
В стеке может просто не быть места на размещение.
Что не так?
S>>Речь про управление памятью с помощью умных указателей. Rust вам просто не позволит чтобы указатель пытались использовать после перемещения. CC>Если тебе, чтоб не писать ну настолько укуренный код надо чтоб постоянно бил по рукам компилятор — тебе таки да, надо писать исключительно на расте, а во взрослые языки не лезть.
Так это же тривиальный пример. Может быть такое, что вы заменяете обычные указатели на умные и не заметили как в какой-то из функци произошла передача владения.
Здравствуйте, Shmj, Вы писали:
A>>Твой пример показывает (в очередной раз), что правильно подобранный искусственный пример может показать что угодно. Вот тебе ещё более строгий код:
A>>
S>Так у вас нет динамического выделения памяти — речь же о смарт указателях и умном управлении памятью
Я считаю, что некоторые вещи, скажем так, не очевидны. Например, что обобщённое программирование, если по-хорошему, за пределами стандартной библиотеки (любого языка) не сильно нужно и повод напрячься. В основном, оно нужно для контейнеров. И ну оооооочень редко ты видишь прикладной код, который можно обобщённо переписать, и он будет DRY'истее и понятнее. Если ты пишешь такой код часто, или часто ваяешь свои контейнеры (и они реально нужны при наличии самых разных стандартных библиотек), ты должен понимать, что таких, как ты — исчезающе малая доля. И прогибать язык под такие сценарии это безумие. В Майкрософте это понимают, поэтому дотнет это дотнет. А степанов не понимает. Поэтому сиплюсплюс это сиплюсплюс.
Поэтому я и предложил: прежде, чем сравнивать C++ с Rust'ом в плане надёжности, подбери такой пример, который средний программист мог бы написать. И покажи, что его нельзя никак переписать на самом C++, чтобы он стал не менее безопасным, чем Rust. И очень многое сразу станет понятно.
Пример: я спрашивал давеча, как написать is in set на плюсах. Чтобы он был выразителен и не был медленнее (x == .. || x == .. || ...). Это то, что пишется чуть ли не в каждом проекте. Именно на таких примерах и стоит обсуждать достоинства и недостатки языков. Желающих только нет. Там и обсуждать нечего: можешь написать — напиши. А не можешь — значит не можешь.
A>>А у тебя на девять строчек — смарт-поинтер, мув-семантика и сорок бочек арестантов. Зачем? Приведи реальный пример, а не из завиральных книжек, и объясни, почему в нём всё вышеперечисленное реально необходимо.
S>Это не из книжек — в книжках не встречал такого наглядного примера.
Я полагаю, что такую ошибку покажут статические анализаторы кода.
(и тут может возникнуть вопрос относительно нужности языка Rust, если можно использовать C/C++ вместе со стат. анализатором).
Например в C# аналогичная ситуация. Компилятор не укажет на ошибочное использование объекта после вызова Dispose, а вот code analysis от MS (с подключенными соотв. правилами) укажет.
Здравствуйте, m2user, Вы писали:
M>Я полагаю, что такую ошибку покажут статические анализаторы кода.
это слабый аргумент. Как показывает практика статическими анализаторами пользуются не все. А если начинают пользоваться, то ублажать его надо ещё больше чем компилятор Rust. Причём большинство ошибок false-positive. Потому как анализатор прежде всего призван затыкать дырки в языке. В Rust таких false-positive в разы меньше, потому как банально продуман лучше.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Shmj, Вы писали:
S>>придумал для таких же как я простой и наглядный пример... CC>
CC>Твой наглядный пример:
Кулхацкеры из 9Б так НИКОГДА не ошибаются, верно? Так только анскиллы из 8А делают?
Доля правды тут только в том что зачастую дешевле ошибиться, подорваться и исправить, чем часами ублажать компилятор. Хотя и не везде.
Если же человек говорит что всегда 100% внимателен и никогда не допускает ошибок на внимательность — то с ним всерьёз можно не разговаривать, над ним можно тупо ржать.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, Shmj, Вы писали:
S>В стеке может просто не быть места на размещение.
S>Что не так?
Я объясню, что не так.
Ты пишешь про гипотетическое устройство, у которого проблемы со стеком и надо, воленс-неволенс, размещать всё в куче. Такие устройства, кстати, реально существовали — одно из них называлось Handheld PC под управлением Windows Mobile (версии до 5-й включительно... кажется). Кто под неё писал большие проекты, тот помнит эту вечную охоту на ведьм: кто сожрал весь стек
А теперь посмотри на заголовок темы: "Превосходство Rust над C++". Ты же не уточняешь: "Превосходство Rust над C++ на гипотетическом устройстве, у которого проблемы со стеком" (потому, что в этом случае яркого флейма не выйдет). И даже не уточняешь: "Превосходство Rust над C++ на карманных компьютерах под Windows Mobile" (потому, что кроме археологов это никому не интересно). Нет, безо всяких оговорок: превосходство, и всё тут.
Зачем это всё? Тебе платят за поддержку полуживого RSDN'а на плаву? Или, как в том анекдоте, "А поговорить"?
Здравствуйте, Alekzander, Вы писали:
A>А теперь посмотри на заголовок темы: "Превосходство Rust над C++". Ты же не уточняешь: "Превосходство Rust над C++ на гипотетическом устройстве, у которого проблемы со стеком" (потому, что в этом случае яркого флейма не выйдет).
Каков размер стека по умолчанию примерно? ˜ 1 МБ или больше?
Т.е. вы не сможете использовать больше 1 Мб памяти по умолчанию в стеке — это даже фотку нельзя обработать.
Здравствуйте, T4r4sB, Вы писали:
TB>Если же человек говорит что всегда 100% внимателен и никогда не допускает ошибок на внимательность — то с ним всерьёз можно не разговаривать, над ним можно тупо ржать.
Там ж даже не ошибка, там тотальное непонимание происходящего.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Shmj, Вы писали:
S>Что не так?
Для начала, у тебя фнукция принимает unique_ptr по значению. Что ты этим хотел сказать?
S>Может быть такое, что вы заменяете обычные указатели на умные
Если уж речь идёт о рефакторинге говнокода, раз уж там голые указатели везде, то первым проходом всё что только можно меняется на ссылки
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, T4r4sB, Вы писали:
TB>>Если же человек говорит что всегда 100% внимателен и никогда не допускает ошибок на внимательность — то с ним всерьёз можно не разговаривать, над ним можно тупо ржать. CC>Там ж даже не ошибка, там тотальное непонимание происходящего.
Да-да, человек читает значения из смувленного объекта лишь потому что не знает что после мува объект скорее всего пустой. А на гололеде падает потому что не знает что от этого можно сломать кости. Вот дурак, это же все кулхацкеры из 9Б знают.
Если человек не знает как возникают такие ошибки на самом деле — то я хз как ему что-то можно объяснить.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте