Здравствуйте, gandjustas, Вы писали:
НС>>Да не особо. Приведенные тобой примере это точно не доказывают.
G>Ты везде сводишь к тому, что можно написать свои функции и потом их както мапить. Вот только с ranking function ничего хорошего не получается, увы.
Почему?
G>В линке нет готовых средств для обхода деревьев
В линке вообще нет готовых средств. Средства предоставляют конкретные провайдеры.
G>Ты куда-то в сторону ушел.
G>3) Все пляски с Expression Trees и linq-comprehensions сделаны только для трансляции запросов в SQL. В других языках есть query comprehensions, которые гораздо лаконичнее с такой же выразительной силой.
Это Мейер говорил? Ты точно в этом уверен? Потому что когда я с ним разговаривал, он говорил совсем иное.
G>У тебя есть возражения?
Не не не. Ты давай расскажи, где это Мейер рассказывал что выразительность у линка меньше, чем у SQL.
G>Во-первых внутри ET можно написать любое выражение языка, например создание несериализуемых объектов.
Это мелочь. Проблема не в этом. А вот то что легко написать GroupBy, который придется транслировать в килограмм запрросов — вот это уже конкретная проблема выразительности SQL.
G> Во-вторых linq работает с последовательностям
Это — в корне неверно. Последовательности для линка — лишь частный случай. И даже в рамках последовательностей — у линка свойство элемента последовательности легко и логично может быть последовательностью. А вот у SQL с этим совсем не все так просто.
G>, а SQL с множествами, разница в семантике делает многие linq выражения бессмысленными в SQL. Но оба эих факта никаким образом не связаны с выразительной силой.
Это ты так думаешь. А на самом деле это прямое следствие большей выразительности линка.
G>Фактически выразительная сила — возможность получить больше результатов выражений, используя меньше кода.
Угу. И уже одна возможность не писать в линке большую часть джойнов вполне себе наглядно демонстрирует, какой из языков выразительнее. А если к тому добавить убогость и громоздкость CTE по сравнению с простейшими способами декомпозиции в линке, то я вообще не понимаю как можно не видеть очевидного.
Скажи, кстати, а зачем приделали возможность писать хранимки на дотнете? Это тоже от очень большой выразительности SQL?
G> Если мы рассматриваем работу с данными, то Linq, увы, в не дотягивает до SQL.