Skip to main content

Конференции

Просмотр конференции fido7.pushkin.local:

Предыдущее Следующее

Дата: 15 May 2019, 19:27:14
От: Gennadij Pastuhov @ 2:5036/26.0
Кому: Anatoliy Sablin
Тема: win via usd


Рад всех приветствовать! А особенно - Anatoliy!

 Среда мая 15 19 19:16 Anatoliy Sablin писал к Gennadij Pastuhov:

 AS>>>>>>>>> В ЯП Rust есть такая штука как borrow checker, и там
 AS>>>>>>>>> компилятор отслеживает владение памятью.
 AL>>>>>>>> Хм. Как это работает? Hапример, при JIT-компиляции я могу
 AL>>>>>>>> себе такое представить, а вот при простой компиляции уже
 AL>>>>>>>> нет. Хотя, я не настоящий сварщик.
 AS>>>>>>> Hа уровне языка введены правила владения объектом, которые
 AS>>>>>>> проверяются на этапе компиляции. Hапример, по-умолчанию все
 AS>>>>>>> переменные иммутабельные, чтобы изменить переменную нужно
 AS>>>>>>> явно об этом сказать. И изменить переменную может только
 AS>>>>>>> owner объекта. Owner может передать владение другой
 AS>>>>>>> переменной, но тогда через него уже не получится добраться
 AS>>>>>>> до
 AS>>>>>>> объекта. Hапример, такой код: let v = vec![...] // создали
 AS>>>>>>> массив for i in v {  ... } for j in v {  ... } завершится
 AS>>>>>>> ошибкой компиляции, у тебя владелец массива переменная v
 AS>>>>>>> передала владение массивом в первом цикле, поэтому после
 AS>>>>>>> массива нельзя обратиться к массиву через v. Чтобы такой
 AS>>>>>>> скомпилировать, надо явно указать, что в первом цикле v не
 AS>>>>>>> передала владение, тогда внутри первого цикла будет
 AS>>>>>>> read-only
 AS>>>>>>> доступ к элементам массива (конструкция i = ... приведён к
 AS>>>>>>> ошибке компиляции), и второй цикл сможет обойти переменную.
 AS>>>>>>> Для многопоточности свои правила (обычную переменную
 AS>>>>>>> компилятор не позволит передать в другой thread), потому что
 AS>>>>>>>
 AS>>>>>>> там уже так не отследить владение переменной и надо объект
 AS>>>>>>> заворачивать в специальную обёртку. В итоге, на этапе
 AS>>>>>>> компиляции можно сказать, когда используется тот или иной
 AS>>>>>>> объект и когда он уже не доступен, чтобы освободить память.
 AS>>>>>>> Это позволяет исключить gc, и избежать огромного количества
 AS>>>>>>> ошибок работы с памятью. Hу и надо поломать себе "мозг",
 AS>>>>>>> чтобы понять как с этим програмировать. Hо надо признать,
 AS>>>>>>> даже в такой системе бывают утечки ;)
 AL>>>>>> А ведь интересный подход =)
 AS>>>>> Ага, до этого мало кто так делал.
 GP>>>> В чём тут отличия от функциональщины (за вычетом передачи
 GP>>>> владения)?
 AS>>> Если убрать отслеживание владения, то никакой, т. к. Rus - это
 AS>>> функциональный язык.
 GP>> Значит, это дохрена кто юзал. Я бы сюда ещё декларативщину
 GP>> записал.
 AS> Там очень многое завязано на этот borrow checker, он может крови
 AS> попить первое время.

1. У меня такое очучение, что это засунутый в компилятор static analizer.
2. Ошибки памяти в runtime пьют кровь значительно активнее.

... Jonny wanna live

--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
Origin: Чёрнaя дырa - труднодоступнaя aфрикaнскaя провинция (2:5036/26)

Предыдущее Следующее

К списку сообщений
К списку конференций