LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: 1) https://blog.janestreet.com/oxidizing-ocaml-ownership/ 2) https://blog.janestreet.com/oxidizing-ocaml-parallelism/

Там и опциональные линейные типы, которые не заставляют программиста изворачиваться, когда его логика не вписывается в них.

Настоятельно рекомендую почитать, там очень доступно описаны проблемы Rust, и то как нормальный язык их решает. В том же цикле есть обсуждение инструментов для написания кода который не вызывает GC вообще.

Заключение: Фанаты Rust это луддиты которые застряли в модели Fortran 66, и боятся одной только мысли, что возможна какая то автоматизация в инструментах программирования.

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: 1) https://blog.janestreet.com/oxidizing-ocaml-ownership/ 2) https://blog.janestreet.com/oxidizing-ocaml-parallelism/

Там и опциональные линейные типы, которые не заставляют программиста изворачиваться, когда его логика не вписывается в них.

Настоятельно рекомендую почитать, там очень доступно описаны проблемы Rust, и то как нормальный язык их решает. В том же цикле есть обсуждение инструментов для написания кода который не вызывает GC вообще.

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: 1) https://blog.janestreet.com/oxidizing-ocaml-ownership/ 2) https://blog.janestreet.com/oxidizing-ocaml-parallelism/

Там и опциональные линейные типы, которые не заставляют программиста изворачиваться, когда его логика не вписывается в них.

Настоятельно рекомендую почитать, там очень доступно описаны проблемы Rust, и то как нормальный язык их решает.

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: 1) https://blog.janestreet.com/oxidizing-ocaml-ownership/ 2) https://blog.janestreet.com/oxidizing-ocaml-parallelism/

Там и опциональные линейные типы, которые не заставляют программиста изворачиваться, когда его логика не вписывается в них.

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: https://blog.janestreet.com/oxidizing-ocaml-ownership/

Там и опциональные линейные типы, которые не заставляют программиста изворачиваться, когда его логика не вписывается в них.

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: https://blog.janestreet.com/oxidizing-ocaml-ownership/

Вот опциональные линейные типы, которые не заставляют программиста изворачиваться, когда его логика не вписывается в них.

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust, там начинают применять счетчики, а в языке более высокого уровня, может быть решение лучше.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: https://blog.janestreet.com/oxidizing-ocaml-ownership/

Исправление MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где совсем невозможно статически определить время жизни переменной, но в таких случаях обычно руками уже ничего не сделаешь и в C/Rust.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: https://blog.janestreet.com/oxidizing-ocaml-ownership/

Исходная версия MOPKOBKA, :

Про GC конечно смешно написал, я сначала подумал ты про Rust, где RC-GC рантаймовый, самый худший из GC.

Причем в Rust сам программист еще подрабатывает за GC, без получение преимуществ из С где программист может использовать недоказуемое, но рабочее и быстрое решение по управлению памятью.

А есть подход с автоматизацией, как в ML Kit, когда компилятор не просто помещает все в GC, если он видит что переменная не используется за пределами функции то он выделит ее в стеке. А если они перемещаются, он выводит область в которой переменная может находится, и сам строит арены для объектов на разных уровнях кода, которые обеспечивают быструю аллокацию и очищение. В такой модели GC существует лишь там, где невозможно статически определить время жизни переменной.

И все это без мучения программиста как в Rust. Вот еще если кажется что я говорю только про какие то академические, несуществующие вещи: https://blog.janestreet.com/oxidizing-ocaml-ownership/