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

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

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

На практике такие задачи встречаются крайне редко.

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

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

Меньше 5.

EP> И это всё же передёргивание.


Нет, это все же факт. Причем 5 лет назад мы тут слышали ровно те же самые песни.

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

EP>Каких конкретно макросов?

http://rsdn.ru/forum/dotnet/6462036.1
Автор: Evgeny.Panasyuk
Дата: 05.06.16


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

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

И? Понимаешь, никто тут не утверждает, в отличие от любителей С++, что С# круче всех и лишен каких либо недостатков. Они у него, разумеется, есть. Один из недостатков — отсутствие арифметики в дженериках (точнее этот недостаток не у него, а у платформы). И именно из-за него пришлось делать ту самую кучу перегрузок.
Это проблему можно частично решить — см. Operators там же, в CodeJam. Но все равно остается некоторый оверхед, поэтому в максимально универсальном коде проще перегрузки сгенеритью.
К счастью, на практике в прикладном коде писать дженерик-арифметику с высокими требованиями к перформансу приходится редко (а там где часто — там .NET не лучший выбор).
В общем, совершенно стандартная ситуация — где то выигрываем, где то проигрываем. И только любители С++ чудесным образом не замечают кучу недостатков любимого языка, и разводят на тему "С++ круче всех" километровые флеймы.

НС>>Или давай вспомним, что куча плюсовых OR/M вообще не поддерживают NULL в value колонках, видать из-за крутой алгоритмической выразительности.

EP>Причём тут ограничения каких-то левых OR/M

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.