Skip to main content

Конференции

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

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

Дата: 15 May 2019, 13:18:57
От: Anatoliy Sablin @ 2:5020/2140.704
Кому: Andrew Lobanov
Тема: win via usd


Hello, Andrew Lobanov.
On 15.05.2019 12:34 you wrote:

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

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

--
Best regards!
Posted using Hotdoged on Android

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

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

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