20 августа 2026
Aleksandr Vershilovтекст ещё не в индексе
Тред начался с обсуждения перфоманса. Линтипы больше про безопасность и это отдельная история, более актуальная для канкаренси. Регионы это когда планируют выделение памяти под определенные вычисления и пишут код этих вычислений так чтобы эта память хорошо ложилась на кэш линии процессора. В самом строгом случае это полное отсутствие динамических аллокаций и ручное перекладывание регистров, а на практике обычно ограниченное использование GC с изоляцией кусков памяти под молотилки в цикле с прибиванием к отдельному ядру
Проблемы с перфом при управлении памятью появляются когда вообще не думают про memory layout и все сваливают в общую кучу с GC, потом сверху наваливают вытесняющий планировщик без прибивания потоков, а сверху добивают отсутствием больших страниц и не дай бог обращениям к памяти на соседние нума ноды. Так то можно и с GC аллоцировать массив байт, в нем мутировать в цикле на одном ядре и это будет регион на минималках
Aleksandr VershilovА в mlkit регионы точно про эффективное распределение того, как выделяется память для эффективных вычислений и укладывание в Кеши процессора?
Это была неудачная попытка привести контраргумент к "ручное управление памятью это не про ФП". Как только в разгововре упоминается ФП сразу появляется проблема определений
Короче в Хаскеле можно управлять памятью вручную и такой код не перестает быть "ФП" кодом, но качественного тулинга не хватает
Ilyaтекст ещё не в индексе
А в чем концептуальная проблема с рекурсией если с TCO как раз меньше всего проблем? Я скорее понял бы аргумент про ленивость и боксинг, но не про рекурсию. Это все разговор про трейдоффы и пермиссивность оптимизаторов и языков. В строгих языках нужно костылять ленивость, в анбокснутых иногда приходится боксить. В Хаскеле просто очень многое позволено, но часто сложно понять за что в итоге заплатишь. Черной магии чтобы залезть по капот оптимизатора хватает
IlyaУже тоже гц сделоли? Там вроде типа киб-персея было
у них там рефкаунты я так понимаю. раз без гц, значит нельзя рекурсивные adt (впрочем чего ещё от эльмиста ждать)?
Dima | No AI clubА в чем концептуальная проблема с рекурсией если с TCO как раз меньше всего проблем? Я скорее понял бы аргумент про ленивость и боксинг, но не про рекурсию. Это все разговор про трейдоффы и пермиссивность оптимизаторов и языков. В строгих языках нужно костылять ленивость, в анбокснутых иногда приход
рекурсия в более общем смысле, и в основном в рекурсивных структурах данных проблема
Leonid 🦇 Onokhovу них там рефкаунты я так понимаю. раз без гц, значит нельзя рекурсивные adt (впрочем чего ещё от эльмиста ждать)?
вообще алгтд кажутся мегафичей, но 99% программистов это просто не надо и они даж не отличают их от маккартиевских типов как в алгол 68, русте и хаскельных анбоксед суммах.
Dima | No AI clubтекст ещё не в индексе
Если честно, я не очень понимаю как избежать неявных аллокаций в лямбда-исчислении. Любое замыкание или частичное применение это же, по сути, аллокация, нет?
Плюс, какой-нибудь терм типа
(\x. x x x) (\x. x x x)
В процессе исполнения разрастается бесконечно, и, кажется, это невозможно реализовать без аллокаций
Ilyaвообще скорее всего большинству ничего сверх "дженерик программирования" и не надо
А может они и правы. А не всякие академики
Ilyaрекурсия в более общем смысле, и в основном в рекурсивных структурах данных проблема
С их оптимизацией обычно сочетание проблем из лени с боксингом
Prokhor ShlyakhtunЕсли честно, я не очень понимаю как избежать неявных аллокаций в лямбда-исчислении. Любое замыкание или частичное применение это же, по сути, аллокация, нет?
Плюс, какой-нибудь терм типа
(\x. x x x) (\x. x x x)
В процессе исполнения разрастается бесконечно, и, кажется, это невозможно реализовать б
замыкания которые передаются вверх - да. но простому человеку функции не нужно возвращать из функций, токо вниз передавать
Dima | No AI clubС их оптимизацией обычно сочетание проблем из лени с боксингом
без боксинга не совместишь рекурсию с полиморфизмом
Ilyaзамыкания которые передаются вверх - да. но простому человеку функции не нужно возвращать из функций, токо вниз передавать
понятно, что в нерасширенном ли ниче не сделать без этого, но его обычно конструкторами и расширяют, что дает примерно всю недостающую простому человеку функциональность