metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-11-21 10:07 am

(no subject)

Аааа, в моих интернетах не все преклоняются перед Хаскелем!:

потом товарищ уволится, или его наконец уволят, сей говнокод выкинут к ебеней матери и вменяемый программист перепишет обычным scanf'ом за пару часов, и спокойно пойдет на обед. код будет работать на порядки быстрее и занимать меньше будет, любой другой программист поймет и сможет поддерживать.
к чему вся эта рекурсивная самоебля?

[identity profile] blackyblack.livejournal.com 2011-11-23 09:21 am (UTC)(link)
С какими именно потоками? Легковесными как в эрланге? Расскажите поподробнее плиз.

[identity profile] dmzlj.livejournal.com 2011-11-23 09:36 am (UTC)(link)
Легкие потоки + инкрементальный gc. Основное это gc конечно. Собственно, это не столько vm, сколько рантайм к компилируемому языку но можно и использовать как часть vm, привернув интерпретатор байткодов.

Хип иммутабельный, устроен примерно так: http://dmzz.me/post/10875973009/unidirectinal-heap

GC точный, инкрементальный, пакующий, стоимость сборки + компактификации в худшем случае примерно квадратичная, зато оверхед по памяти не более чем одно слово на блок. Выделение памяти строго O(1).

Стек или другая дополнительная память для сборки мусора не требуется.

Язык бесстековый, на каждый поток выделяется памяти примерно вот столько:

typedef struct __task {
    struct __task *next;
    hopc_ar *arhead;
    hcell regs[HOPCREGNUM];
    hopc_task_id id;
    hregmask mask;
    htime_t tsleep;
    htime_t tsleep_since;
} hopc_task;


т.е 22 слова. вероятно, task_id можно будет потом выкинуть. компилятор оптимизирующий, с выделением регистров, например замыкания пытается размыкать и преобразовывать в jmp если это возможно, само собой хвостовая рекурсия ну и т.п, все что положено. Типизация статическая, вывод типов, etc. Компилируется в Си для что бы проще было стыковать с имеющимся кодом + оптимизатор си достаточно эффективно дооптимизирует на низком уровне.





[identity profile] blackyblack.livejournal.com 2011-11-23 10:24 am (UTC)(link)
У вас хостинг сдох.

[identity profile] dmzlj.livejournal.com 2011-11-23 10:33 am (UTC)(link)
Это не у меня, это тубмлр. Оживет.

[identity profile] blackyblack.livejournal.com 2011-11-23 10:31 am (UTC)(link)
А какие мысли по поводу трансплантирования VM эрланга? Хотелось бы всё-таки использовать наработанную инфраструктуру, а не переписывать всё на свой язык.

[identity profile] dmzlj.livejournal.com 2011-11-23 10:34 am (UTC)(link)
Очень жирная и сомневаюсь что эту инфраструктуру практично использовать на микроконтроллерах.

Потом, если кому-то не влом, всегда можно попробовать написать эрланговый фронтенд.