Pull to refresh

Comments 15

Для информации — данная статья является переводом моей собственной статьи, опубликованной в nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html, при этом я немного дополнил некоторые моменты.

Об оригинале на английском проводились обсуждения на:
Reddit: reddit.com/r/programming/comments/jbkerv/introduction_to_arcorc_in_nim
Hacker News: news.ycombinator.com/item?id=24786649
UFO just landed and posted this here
У него нет никакой расшифровки, ORC просто подразумевает под собой работу с циклами (O обозначает замкнутый цикл)

ORC выглядит как костыль. Героически боролись со сборщиками мусора со всеми их недостатками и… сделали ещё один сборщик мусора со всеми их недостатками. Чего они не смотрят в сторону Borrowing&Owning?

А концепция владения решает проблему замкнутых циклов? Мне казалось, что это её слабое место как раз. Разве можно реализовать в рамках концепции владения, без привлечения подсчёта ссылок какой-нибудь двусвязный список?

Она их предотвращает. Никто не может владеть самим собой.

Если я правильно Вас понял, то структуры, подобные двусвязным связным спискам и прочим циклическим графам реализовать в рамках концепции владения не получится. Но как быть если такая структура нужна?

Первый элемент владеет вторым, второй — третьим и тд.

xomachine скорее всего имеет ввиду Кольцевой связный список, и я не вижу, как его можно реализовать хотя бы без RC чисто с владением.


Ещё почитайте https://news.ycombinator.com/item?id=16443688, коротко говоря — в Rust довольно сложно делать циклические структуры по сравнению с большинством других языков.


Ещё вот — https://rcoh.me/posts/rust-linked-list-basically-impossible/

Последняя ссылка делается невладеющей и всё, какие проблемы?


У Раста свои тараканы. Насколько я понимаю, там нет поддержки наследования владения. Это когда компилятор понимает, что если ты владеешь объектом, который владеет другим объектом, то ты владеешь и вторым тоже. Хотя, кажется RefCell::borrow_mut — это вроде как раз способ ему это объяснить.

У Раста свои тараканы. Насколько я понимаю, там нет поддержки наследования владения. Это когда компилятор понимает, что если ты владеешь объектом, который владеет другим объектом, то ты владеешь и вторым тоже. Хотя, кажется RefCell::borrow_mut — это вроде как раз способ ему это объяснить.

Это не "наследование владения", а скорее транзитивность владения. RefCell::borrow_mut — это вообще про другое. Пожалуйста, не пишите о том, в чём настолько слабо разбираетесь.

Терминологические споры меня не интересуют.
Какая буква в слове "кажется" вам не понятна?
Не указывайте мне что делать и я не скажу, куда вам пойти.

Как по мне, для Borrowing & Owning нужно изменять весь язык, что далеко не является лучшим решением :) С ARC/ORC изменений в код вообще вносить не нужно (кроме редких случаев, например порядка финализаторов, которые использовались с refc)
Sign up to leave a comment.

Articles

Change theme settings