Re[180]: Тормознутость и кривость linq. Compile-time EDSL DB
От: Evgeny.Panasyuk Россия  
Дата: 10.07.16 21:47
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>>>Практические соображения и алгоритмическая выразительность это разные вещи. Алгоритмически все это можно было бы уложить в один небольшой метод.

EP>>Номинально да, на практике же имеем совсем не номинальный boilerplate.
НС>На практике такие задачи встречаются крайне редко.

У меня постоянно.
Тем не менее, разговор-то не про часто/нечасто.

НС>>>Далеко не только. Еще недавно она была нужна даже для таких базовых вещей как лямбды.

EP>>"Недавно" это уже лет шесть как назад.
НС>Меньше 5.

Они появились раньше релиза стандарта 2011 — в MSVS 2010 и GCC 4.5 (2010).
Кстати, какого года там в C# стандарт ISO/ECMA?

НС>>>И для плохонького аналога анонимных типов она понадобилась. Причем ее не хватило в итоге, и пришлось допиливать при помощи макросов препроцессора.

EP>>Каких конкретно макросов?
НС>http://rsdn.ru/forum/dotnet/6462036.1
Автор: Evgeny.Panasyuk
Дата: 05.06.16


Так в языке запросов это не используется, там не нужны анонимные типы. Все макросы что там есть используются исключительно для определения таблиц:
DEFINE_TABLE
(
    foo,
    (int, id)
    (int, code)
    (double, value)
    (int, number)
);
Это же можно заменить на внешнюю кодогенерацию, так как всё равно придётся как-то синхронизироваться со схемой данных. В Linq2DB также предлагается внешняя кодогенерация.

НС>>>Ты обсуждаешь простейший алгоритм на С++ с его конкретной реализацией для дотнета, содержащей кучу подробностей, связанных со спецификой платформы. Это самая натуральная демагогия.

EP>>На C++ из всей "специфики платформы" к этому алгоритму будет несколько десятков строк врапперов для Range интерфейсов
НС>И?

И то что в полной реализации C++ будет намного меньше чем то что есть в CodeJam. Это пример к исходному тезису.

НС>Понимаешь, никто тут не утверждает, в отличие от любителей С++, что С# круче всех и лишен каких либо недостатков.


А я разве утверждал что C++ круче всех? Я говорил про конкретный аспект, в котором он действительно лучше, но из этого не следует что "C++ круче всех"

НС>В общем, совершенно стандартная ситуация — где то выигрываем, где то проигрываем. И только любители С++ чудесным образом не замечают кучу недостатков любимого языка, и разводят на тему "С++ круче всех" километровые флеймы.


К чему это? Я вполне замечаю недостатки и сразу признаю, и поэтому флеймов из этого не вырастает. Более того, без проблем использую C# когда требуется, и если нужна будет ещё и работа с БД — посмотрю на linq2db, и ЕМНИП я даже успел сказать это в текущем топике.

Километровый флейм тут (да и соседней теме) вырос от нежелания признать что простейший алгоритм вылился в несколько сот строк boilerplate, причём плохо поддерживаемых, ибо много копипасты + текстовая кодогенерация.
Аргументация же оппонентов постоянно витает где-то в далеких от исходного тезиса темах, типа экономической целесообразности, наличия мух в голове авторов кода, редкости таких ситуаций, метапрограммирования на макросах и шаблонах и т.п.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.