Skip to main content

Конференции

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

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

Дата: 15 May 2019, 19:16:24
От: Anatoliy Sablin @ 2:5020/2140.704
Кому: Gennadij Pastuhov
Тема: win via usd


Hello, Gennadij Pastuhov.
On 15.05.2019 16:26 you wrote:

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

Там очень многое завязано на этот borrow checker, он может крови попить первое время.

--
Best regards!
Posted using Hotdoged on Android

--- Hotdoged/2.13.5/Android
Origin: Android device, Milky Way (2:5020/2140.704)

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

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