Re[10]: Тормознутость и кривость linq
От: alex_public  
Дата: 19.03.16 15:12
Оценка: -1 :))
Здравствуйте, Ikemefula, Вы писали:

_>>Это ещё почему? ) Когда-то давно мы писали код типа db("select name from users where id="+id.to_string()). Это можно считать (на самом деле это конечно же не совсем так, но это тема уже совсем другого разговора, o необходимости sql и т.п.) за референсный пример с нулевым оверхедом. Теперь же мы хотим написать что-то вроде db(select(users.name).from(users).where(users.id==id)), чтобы sql запрос был проверен компилятором (плюс ещё несколько бонусов на тему безопасности и оптимизации под конкретные БД).

I>Ты в скобках сам себе ответил, при чем ажно дважды. Смена провайдера делается хоть в рантайме, хоть как угодно — без перекомпилирования. А в твоем случае придется перекомпилировать приложение, если вместо обычной БД я использую простое хранилище.

Естественно не придётся перекомпилировать. ))) Максимум что потребуется, это один if на всё приложение. Такого типа:
if(...) db=sqlite3::connection();
else if(...) db=mysql::connection();
else if(...) db=postgresql::connection();


_>>Так вот даже C++ с его убогим метапрограммированием уже умеет такое (правда ценой диких извратов внутри библиотеки, но снаружи их всё равно не видно). А уж языки типа D или Nemerle такое вообще элементарно могут.

I>Такие фокусы, во первых, реализуются с помощью T4 безо всяких извратов, на обычном привычном языке.
I>Во вторых, эти фокусы _не_ _востребованы_

Т.е. примеры реализации ты конечно же привести не можешь, потому что "это не нужно", да? ))) Понятно, понятно... )))

Кстати, с учётом новинок в C++, думаю что мы скоро вернёмся к нормальному текстовому заданию sql строк. В стиле db("select name from users where id={id}"). Только вот при этом в процессе компиляции будет происходить полный разбор этой строки, проверка корректности синтаксиса, преобразование переменных и т.п. ))) Это будет уже действительно максимально удобный вариант, получше и существующих библиотек и всяких linq. )))

_>>>>"разница в скорости между рефлексией и склейкой голых строк"? ) Это ты где такой чуши набрался? )))

I>>>Тебя процитировал
_>>Враньё. ) Покажи у меня такой нелепый текст. )
I>http://rsdn.ru/forum/flame.comp/6387248.1
Автор: alex_public
Дата: 18.03.16


Ну и где там про "разницу в скорости между рефлексией и склейкой голых строк"? Если что, при работе linq2sql происходит и рефлексия и склейка строк и ещё куча всего. Так что говорить про разницу между рефлексий и склейкой строк вообще неадекватно, чего я собственно и не делал. ) Рефлексия (и ещё много чего) в случае linq2sql служит чистым оверхедом. )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.