Здравствуйте, Cyberax, Вы писали:
C>reductor wrote:
>> C>Например, если нельзя допускать пауз GC и большого оверхеда
>> C>конкурентного GC. Или если существуют гораздо более эффективные методы
>> C>управления памятью для данной задачи (preallocated пулы, например). Или
>> C>если требуется *детерминированое* уничтожение объекта.
>> Вы на чей вопрос здесь отвечаете?
>> Я спрашивал для каких задач. Конкретнее.
C>Игры, требовательные десктопные приложения, системный софт.
Ну если требовательные, тогда конечно С++ нельзя, он медленный — куча тормозит из-за фрагментации. Да и на просто аллокацию у него времени уходит раза в три больше, чем у окамла.
Давайте уже договоримся — нечего делать в прикладном софте ручному управлению памятью.
Это очень дорого. Во всех смыслах.
А что касательно системного софта —
Сколько раз увидишь человека, который пишет ядро на С++, столько раз и убей его
И что характерно, на том уровне уже неважно какие синтаксически навороченные аллокации в языке.
Важно другое. Вот например то, что в cyclone
>> Опять же, про паузы интересно.
C>RTFM: http://www.memorymanagement.org/
Ну вот только не нужно этой пошлости.
Конкретно скажите у какого типа GC какие паузы и тп. И что где дороже того, что в С++ получается.
Ну вот пусть в том же окамле. А то там Лерой как-то выкладывал калькуляцию по этим вещам, хочу сравнить вашу и его.
>> C>А в С++ нет проблем с алиасингом. Более того, он тоже успешно
>> C>используется для некоторых трюков.
>> Переведите
C>В С++ нет проблем с накладывающимися массивами, так как они с помощью
C>адресной арифметики могут быть использованы для интересных
C>inplace-преобразований.
Абсолютно неинтересной невозможности компактнуть хип правильно сказать.
"интересных преобразований"
>> C>Вот вам прямо с About Haskell
>> Что вы хотели сказать цитированием мне этого sales talk десятилетней
>> давности?
C>А что, вы один должны гнать sales-talk десятилетней давности про GC?
Чооо? эт где?
>> C>В С++ продумано взаимодействие аллокаторов, стандартных контейнеров,
>> C>алгоритмов и т.п. Например, как мне поместить в контейнер OCaml'а
>> C>объект, созданый в блоке shared memory? Причем указатели в этом объекте
>> C>представлены в виде смещений относительно начала блока, а null pointer
>> C>представлен в виде указателя со смещением -1.
>> Вы будете продолжать фантазировать или хотя бы прочитаете мануал по
>> окамлу?
C>КАК мне разместить, скажем, список OCaml'а в shared memory и передать на
C>Хотя я знаю, что вы скажете — дадите мне ссылку на документацию по FFI и
C>станете рассказывать, что shared memory устарел и никому не нужен.
Вот этого я кстати не понимаю. Даже если дам ссылку на докуменртацию по FFI, то что?
Что вы этим хотели сказать?
Причем про shared memory непонятно — как это относится к мемори менеджменту-то?
Просто какой-то полет мысли
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Obj.html
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Marshal.html
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Callback.html
http://caml.inria.fr/resources/doc/guides/pointers.en.html
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html
и, конечно, описание всего вместе с FFI, если вы настаиваете:
http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html
И вообще, не стесняйтесь, если что, говорите мне
Я сегодня гуглом и браузером работаю