Skip to main content

Конференции

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

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

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


Hello, Gennadij Pastuhov.
On 15.05.2019 13:42 you wrote:

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

Если убрать отслеживание владения, то никакой, т. к. Rus - это функциональный язык.
 
 AS>>  Но тут есть ряд других проблем: очень высокий уровень вхождения, 
 AS>> очень низкая скорость разработки, очень маленькое количество 
 AS>> разработчиков. В итоге конечная цена разработки может быть выше. 
 AS>> Ну и всякие посторонние эффекты из серии "звёздная болезнь" и 
 AS>> попыток почувствовать себя "илитой".

--
Best regards!
Posted using Hotdoged on Android

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

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

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