Нужно было сложить 1+1 — я написал функциональный язык программирования

Needed 1+1, built a functional programming language

Нужно было сложить 1+1 — я написал функциональный язык программирования

Студент получил задание по структурам данных: вычислить 1+1+1 с помощью бинарного дерева. Вместо простого решения он решил построить вычислитель, а затем добавил замыкания, сборщик мусора, собственный аллокатор памяти, REPL и FFI на C. В процессе он столкнулся с неожиданным расходом памяти: fib(40) требовал более 12 ГБ и падал из-за OOM. Пришлось реализовать арена-аллокатор и сборщик мусора, чтобы справиться с миллиардами узлов.

Fib(40) буквально занял 12+ ГИГАБАЙТ, прежде чем упасть из-за нехватки памяти. Почему? Потому что он порождает примерно 1,3 миллиарда узлов. При 48 байтах на узел это ~62,4 ГБ выделенной памяти под узлы.

Ещё за этот день

2026-09-30