169 похожих чатов

В чем в этом выражении он не прав, собственно?

41 ответов

25 просмотров

Да не, просто статья ни о чём. Видно, что человек не писал ни на крестах, ни на расте. Зачем её вообще обсуждать.

Vadim-Goncharov Автор вопроса

я, как почти не знакомый с rust, с интересом прочитал, и убедился, что изучать его не следует

Vadim Goncharov
я, как почти не знакомый с rust, с интересом прочи...

В этом и дело. Не зная Rust, можно поверить в это нытье (ну типа чел вроде шарит, а ноет, наверное дело говорит), но по сути всё очевидно и совсем не удивляет любого, кто хотя-бы туториал по расту прочитал. Про стандартную библиотеку ничего сказать не могу, не пишу ядра, не интересовался, но про правила владения полная хрень написана. Например: Заимствования чем-то напоминают указатели языка Си, только они намного слабее. Как и для взятия адреса в Си, в Rust нужно специально заимствовать значение символом &. Видишь неуча? Нет? А он есть. Штука как указатель, только слабее (видимо без арифметики), называется ссылкой. Автор про ссылки не слышал. Но при выходе из функции заимствование теряется, его нельзя никуда сохранить или даже вернуть. А это, между прочим, главная фича раста. Если вам хочется вернуть указатель на локальную переменную (UB), то вы выбрали не тот ЯП, проходите мимо. Дальше комментировать не интересно, не в том чате вы это развели.

Вот и иллюстрация, почему такие статьи вредны. Человек всю статью пытается высмеивать то, как сделаны некоторые вещи, которы, специально и принципиально так сделаны, потому в том числе через это достигается цель, для которой и был сделан этот язык. И именно поэтому вся критика выглядит, как заявка на вопящего неосилятора, потому что автор как-будто специально не пишет, а почему так сделано, и что хорошего из этого следует. Мне, как пишущему на последних крестах, наоборот, очевидны практически все моменты наброса, и почему оно так сделано, и для чего. Ну и уровень автора можно понять по логике "в либе языка есть Refcount объекты = в нем есть GC". Оказывается, в C++11 язык стал языком с GC, а пацаны и не знают. Вот о чем после этого можно идейно спорить?

Vadim-Goncharov Автор вопроса
Steel Sword
В этом и дело. Не зная Rust, можно поверить в это ...

Вот это и называется "сообщество фанатиков" - не должно быть такого, что "удивляет, значит не прочитал", поскольку это подразумевает, будто бы в написанном содержится правота, т.е. "прочитай и уверуй" - нет, критика идёт именно самого подхода >> Заимствования чем-то напоминают указатели языка Си, только они намного слабее. Как и для взятия адреса в Си, в Rust нужно специально заимствовать значение символом &. > Видишь неуча? Нет? А он есть. > Штука как указатель, только слабее (видимо без арифметики), называется ссылкой. Автор про ссылки не слышал. Подмена тезиса, приписывание автору того, чего он не говорил, принижение познаний автора без доказательств. Если его другие статьи посмотреть, то с плюсами он явно знаком, а значит, что такое ссылки, знает. Значит, твоя трактовка неверна, садись и попробуй понять, о чем именно была речь. >> Но при выходе из функции заимствование теряется, его нельзя никуда сохранить или даже вернуть. > А это, между прочим, главная фича раста. Если вам хочется вернуть указатель на локальную переменную (UB), О, отлично, снова подмена понятий. "Сохранить/вернуть владение" - вовсе не то же самое, что "вернуть указатель на локальную переменную", абсолютно. Вот она, наглядная демонстрация фанатичности - на несогласных либо смотреть высокомерно "да просто не осилил", либо, когда с их правотой так просто справиться не получается, начать врать, манипулировать подменой понятий и применять другие грязные приёмы.

Vadim-Goncharov Автор вопроса
Georgiy Komarov
Вадим собирался изучать раст? :)

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

Vadim-Goncharov Автор вопроса
Andrew
Вот и иллюстрация, почему такие статьи вредны. Чел...

> почему такие статьи вредны Наоборот, они очень полезны - можно не тратить на это говно кучу времени и усилий > то, как сделаны некоторые вещи, которы, специально и принципиально так сделаны, потому в том числе через это достигается цель, для которой и был сделан этот язык Итак, мы начинаем читать, наслышавшись рекламы того, как новые подходы в языке нам всё улучшат, цель мы знаем. И что мы видим? Что король-то голый! Что нихера эта цель не достигается. > как пишущему на последних крестах, наоборот, очевидны практически все моменты наброса, и почему оно так сделано, и для чего Кресты, особенно последние - это отдельный раздел психопатологии. Язык с подобной целью должен был выкинуть весь пиздец и начать заново, а не продолжать мыслить в той же парадигме. > Ну и уровень автора можно понять по логике "в либе языка есть Refcount объекты = в нем есть GC". Оказывается, в C++11 язык стал языком с GC, Вот оно, снова вранье и подмена понятий от фанатиков. Читаем у автора: Особо стоит подчеркнуть, что сборщик мусора встроен в стандартную библиотеку, которая неотделима от самого языка, а потому заявления, что Rust — это якобы язык без сборки мусора, — лживы. С таким же успехом это можно сказать про язык D. Да, вы можете писать программы без сборки мусора, если очень захотите. Но, во-первых, в случае Rust это будет тяжко, ведь язык накладывает на вас многочисленные ограничения. Во-вторых, даже если ваша программа не будет его использовать — ваши зависимости будут, и почти наверняка, ведь использовать его очень легко То есть ответ на самом деле простой - встроен он в плюсах в стандартную библиотеку настолько, что им практически всегда будут пользоваться? Если да, то стал с GC. Если нет, то не стал. Всё ж просто. Но нет, так же не получится обосрать автора, чтобы получить повод проигнорировать его аргументы =)

Vadim Goncharov
иногда посматриваю на новые языки с целью размять ...

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

Vadim Goncharov
Вот это и называется "сообщество фанатиков" - не д...

Владение и заимствование - это разные вещи. Владение вернуть можно (как раз через move), но речь то о заимствовании. А её вернуть или сохранить... тоже можно, но только если докажешь, что время жизни заимствования соответствует времени жизни того места, куда ты собираешься вернуть. Вот и выходит, что раз функция владеет значением, то значение умрёт в конце области видимости, и вернуть заимствование нельзя, потому что значение мертво. Чё вы злые такие, у вас что, работу Rust отбирает... Чуть что - обвинение в фанатизме, подмене понятий, высокомерном взгяде. Я тоже могу тебя обвинить в фанатизме и подмене понятий. Автор сказал: при выходе из функции заимствование теряется, его нельзя никуда сохранить или даже вернуть. А ты сказал: "Сохранить/вернуть владение" - вовсе не то же самое, что "вернуть указатель на локальную переменную" Подменил владение на заимствование! Конечно вернуть владение и вернуть заимствование это не одно и тоже, потому что первое - это возврат значения, а второе - возврат ссылки. И кто здесь фанатичен?

Библиотека настолько неотделима, что можно получить бинарник без неё, чем и пользуются при работе с embedded с Rust? Ну и нет, даже если бы она была неотделима, если без явного использования программистом не получается ни одна сущность под счетчиком ссылок, то и какая разница, что там можно при желании получить. Фанатиком или жирным троллем пока тут выглядит кроме автора статьи кое-кто другой, фанатики любят навешивать раздувать любой спор до священной принципиальной войны с адептами лжи.

Vadim Goncharov
> почему такие статьи вредны Наоборот, они очень ...

В Rust есть core и std. В core объявлены базовые типы (bool, u8, f64 и т.д.) и интерфейсы (Copy, Clone, Iterator и т.д.) и core не отключается. В std лежит всё остальное, что завязано на ОС, файловой системе, сети, аллокации памяти... И std легко отключается. Так вот Rc и Arc лежат в std, а не в core, соответственно заявление автора статьи неверно.

Steel Sword
В Rust есть core и std. В core объявлены базовые т...

Ну на уши натянуто. Там написано, что при большом желании это можно сделать, но это ж шляпа, все зависимости юзают std небось

Steel Sword
В Rust есть core и std. В core объявлены базовые т...

Тут ещё проблема в том, что человек сам не разбирался в Расте, и поэтому принимает риторику статьи как адекватную. И при этом спорит с людьми, которые ознакомились с предметом обсуждения чуть больше, чем по этой одной этой статье; но, в силу ограниченности кругозора, он не понимает, что на большую часть риторических вопросов в статье ответ "Ну, оно так и планировалось, и что? В чем проблема кроме шашечек?".

Paul /segfault/
Ну на уши натянуто. Там написано, что при большом ...

Не "при большом желании", там одну команду написать нужно. Он сравнивал с D, типа там в ЯП встроен сборщик мусора, как в голанг, можно писать код без него, но он всегда есть. В Rust сборщика мусора нет, есть обычный счётчик ссылок Rc<T>, просто структура, которая импортируется, и если std нет, то и счётчика нет. Т.е. это не синтаксис или механизм языка, это структурка, написанная с помощью самого языка. Как shared_ptr в С++. И... Какие зависимости? Web, GUI, CLI? Они конечно по определению завязаны на ОС, и юзают std. Но ты и не сможешь ими воспользоваться без ОС, а отсутствие ОС - вроде бы единственная причина отказываться от std. Придётся качать библиотеки для embedded-разработки, там всё норм. В принципе ситуация не отличается от С. Там тоже в стандартной библиотеке лежит malloc и free, поди куча зависимостей используют malloc и free, что же теперь делать 😱 Но линукс на С пишут с отключенной стандартной библиотекой, чипы на С также прошивают, живут как-то.

Vadim-Goncharov Автор вопроса
Andrew
Библиотека настолько неотделима, что можно получит...

> настолько неотделима, что можно получить бинарник без неё Попробуй перечитать еще раз, "С таким же успехом это можно сказать про язык D. Да, вы можете писать программы без сборки мусора, если очень захотите" - не, ну я понимаю, фанатики никогда не слышали про другие языки, поэтому пропускают мимо ушей...

Vadim-Goncharov Автор вопроса
Steel Sword
Владение и заимствование - это разные вещи. Владен...

> Владение и заимствование - это разные вещи [...] А ты сказал: Мне можно путаться в терминах, я не знаю Rust. Однако я прекрасно вижу на примере кода показанную проблему, и как она могла бы быть легко решена "верни caller'у при выходе из меня". Поэтому поинт по-прежнему валиден, более чем валиден.

Vadim-Goncharov Автор вопроса
Andrew
Тут ещё проблема в том, что человек сам не разбира...

"Кругозор", если что - это не "знать rust", а "знать много чего", например другие языки. Именно зная много их, и можно оценить, насколько в конкретном та или иная вещь сделана через жопу. Я ведь уже сказал, что "прочитай мануал" - это ошибка, поскольку подразумевает, будто в мануале содержится Священная Истина, и архитектор языка не мог сделать что-то через жопу (привет срезам в Питоне). Попросту говоря, на "оно так и планировалось" ответ "хуйню запланировали, хуйню и сделали".

Vadim Goncharov
> Владение и заимствование - это разные вещи [...]...

Владение - значение, заимствование - ссылка. Ссылку на локальное значение вернуть нельзя. На значение, которым владеет caller можно. Всё. Не поняв терминологию, ты не понял саму суть.

Vadim-Goncharov Автор вопроса
Steel Sword
s/D/C

лолшто? причем тут Си, когда речь шла про D ?

Vadim-Goncharov Автор вопроса
Steel Sword
Не "при большом желании", там одну команду написат...

> В Rust сборщика мусора нет, есть обычный счётчик ссылок Какое смешное утверждение. Есть целые языки со сборщиками мусора, которые сделаны на подсчете ссылок (Перл, Питон), и никто же не утверждает, что это языки без сборки мусора, потому что, видите ли, ну это же просто "обычный счётчик ссылок". > это структурка, написанная с помощью самого языка А вот это как раз то самое вранье/искажение реальности. Потому что написанное под unsafe не катит под "написано на самом языке". Ибо вся суть Rust как нового языка с новой концепцией - в этом самом safe (без него мы и просто Си можем взять, спасибо).

Vadim Goncharov
> В Rust сборщика мусора нет, есть обычный счётчик...

не катит под "написано на самом языке". Это твоя выдумка

Vadim-Goncharov Автор вопроса
Steel Sword
Владение - значение, заимствование - ссылка. Ссылк...

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

Vadim-Goncharov Автор вопроса
Steel Sword
не катит под "написано на самом языке". Это твоя ...

это не моя выдумка, а реальность - rust c unsafe попросту не нужен

Vadim Goncharov
лолшто? причем тут Си, когда речь шла про D ?

Ты можешь пояснить, в чем проблема с примитивом со счётчиком ссылок в std? Я в упор этого не понимаю. Ну в плюсах есть std::shared_ptr, и что, это язык со сборщиком мусора? Без std на плюсах тоже обычно никто не программирует. А если в стандартную библиотеку C добавят что-то, напоминающее работу со ссылками, то он станет языком с GC? Ты точно понимаешь, что означает "язык с GC"?

Vadim-Goncharov Автор вопроса
Andrew
Ты можешь пояснить, в чем проблема с примитивом со...

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

Andrew
Ты можешь пояснить, в чем проблема с примитивом со...

>Без std на плюсах тоже обычно никто не программирует *Qt вошло в чат*

Vadim Goncharov
это не моя выдумка, а реальность - rust c unsafe п...

Нужен, даже в unsafe все проверки владений и заимствований на месте

Vadim-Goncharov Автор вопроса
Steel Sword
Нужен, даже в unsafe все проверки владений и заимс...

не нужен, проще взять более простой язык

Vadim Goncharov
не нужен, проще взять более простой язык

Ну поди и возьми. FAANG кстати так и не научился писать на С/С++, 70% багов от памяти

Vadim-Goncharov Автор вопроса

источник?

Vadim Goncharov
источник?

https://www.zdnet.com/article/microsoft-70-percent-of-all-security-bugs-are-memory-safety-issues/ https://www.zdnet.com/article/chrome-70-of-all-security-bugs-are-memory-safety-issues/

Vadim-Goncharov Автор вопроса
Vadim-Goncharov Автор вопроса
Vadim-Goncharov Автор вопроса
Steel Sword
https://www.zdnet.com/article/microsoft-70-percent...

посмотрел, там только Гугль, и даже конкретно только Chrome, причем тут весь FAANG бы?

Vadim Goncharov
посмотрел, там только Гугль, и даже конкретно толь...

Я знал, что ты всегда найдешь до чего доебаться

Vadim-Goncharov Автор вопроса
Steel Sword
Я знал, что ты всегда найдешь до чего доебаться

ясен пень, потому что я знаю, что Netflix например коммитит во FreeBSD, то есть на Си.

Steel Sword
Не "при большом желании", там одну команду написат...

> сборщика мусора нет, есть обычный счётчик ссылок подсчёт ссылок — это уже одна из техник работы сборщика мусора

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта