Не знаю, в какую ветку, поместил в эту - поскольку один из тезисов, в частности, И21 - о том, что основные преимущества ФП связаны с автоматическим управлением памятью, и в Обероне это открывает соответствующие возможности...

http://russian.joelonsoftware.com/Artic ... aronA.html
> -- Цитата:
> В начале девяностых многие из нас полагали, что главная битва произойдет между процедурным и объектно-ориентированным стилем программирования, и воспринимали объектно-ориентированное программирование как средство резкого повышения продуктивности программистов. Я тоже так думал. Некоторые до сих пор так думают. Получается, мы ошибались. Объектно-ориентированное программирование прикольная штука, но не повышает продуктивность, как это обещалось. Реальное и значительное повышение производительности мы получили от программирования на языках, автоматически управляющих памятью вместо вас. Это может быть подсчет ссылок или «сборка мусора», это может быть Java, Lisp, Visual Basic (даже 1.0), Smalltalk или любой язык написания скриптов.  Если ваш язык программирования позволяет выделять кусок памяти без раздумий о его последующем освобождении, то вы используете язык с управляемой памятью, и вы будете значительно эффективней программиста, использующего язык, где управление памятью производится в явном виде. Всякий раз, когда вы слышите чье-то хвастовство о том, насколько продуктивен их язык, вероятно, большую часть продуктивности они достигают за счет автоматического управления памятью, даже если  не признаются в этом.ВрезкаПочему автоматическое управление памятью значительно улучшает вашу продуктивность? 1)  Потому что вы можете написать f(g(x)) не беспокоясь о том, как освободить память, занятую возвращаемым значением функции g, значит вы можете использовать функции, которые возвращают интересные сложные типы данных и функции, трансформирующие интересные сложные типы данных, что в результате позволяет вам работать на более высоком уровне абстракции. 2) Потому что вам не надо тратить время на код, освобождающий память или отслеживать утечки памяти. 3)  Потому что  вам не надо аккуратно  координировать точки выхода из ваших функций, чтобы убедиться, что память освобождена  должным образом.