metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-06-24 03:03 pm

Лямбды и Firebird, ад продолжается

А теперь, внимание, бородатая женщина будет есть червей мнение разработчика Firebird о лямбда-функциях:

Отвратительная возможность, провоцирующая написание нечитаемого
и несопровождаемого спагетти-кода, созданная на пустом месте чисто в
маркетинговых целях.
Вот такое моё частное мнение о лямбда-функциях.

[identity profile] volodymir-k.livejournal.com 2011-06-27 07:00 pm (UTC)(link)
> Переменные не в фильтре приходится явно биндить, а переменные в фильтре переводить в строку, рискуя получить injection vulnerability.

По-моему это невалидный аргумент, уже лет 20 как передаётся строка и массив объектов в любое API.

> Конструкции получаются громоздкими (удвоение кавычек, переносы строк и прочая фигня).

Да, во многих языках нету литералов, и некрасивенько.

> когда его приходится вызывать сотню тысяч раз за расчет... и на парсинге тоже стоит поэкономить

Как правило такое вычисление экономят на клиенте и не пересекают 10 слоев, а БД обычно делается сетевое с 50 мс задержкой.

А кто делает расчёты на T/PL-SQL на сервере...тот ценитель извращений.


А знаете, какая самая проблема передать лямбду? потому что будет хотеться передать с контекстом, и непредсказуемой сложности вычисление. А ведь одно дело -- условие where a < b и другое where factorial(x) < 12345678. То есть лямбду в общем случае не оптимизируешь, как условие.