Есть ли функциональные языки, которые не имеют сборки мусора - PullRequest
3 голосов
/ 20 мая 2011

Или даже сильно функциональные стили в не функциональных / не управляемых памятью языках. Какие методы существуют для решения таких проблем, как промежуточный мусор? Очистка после ленинизма / выделенной памяти. Производительность (поскольку вы не можете легко делить ресурсы между неизменяемыми переменными, если вам нужно отслеживать их прогресс, чтобы освободить их (умные указатели?)

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Вас могут заинтересовать языки программирования с линейными или уникальными типами, они могут управлять ресурсами (и памятью в частности).Недавние примеры: ATS и LinearML .

Были попытки "управления памятью на основе регионов" (например, Cyclone), но они не были запущены толькоеще - регионы также позволяют (более раннее) восстановление памяти, но их недостаточно (например, есть программы, которые при запуске с управлением памятью на основе регионов будут демонстрировать неприемлемую производительность).Я думаю, что эти две схемы могут быть смешаны.

Возвращаясь к вашему вопросу, некоторые программы ATS могут работать без сборки мусора.(Я не скажу, что такие программы написаны в «функциональном» стиле, например в SML, но в сочетании императивного и функционального стиля первого порядка.)

1 голос
/ 20 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...