Здравствуйте, ·, Вы писали:
·>Ты сам шутишь, с шашкой наголо на танки.
Так вся разница пока в том, что эта шашка ещё не доросла до гаубицы.
Пару лет развития и вообще в Большую Берту превратится...
·> Давай-ка добавь хотя бы ещё два параметра, посмеёмся вместе:
Именно в этих — проблемы нет (если ты ничего не скрыл).
Просто кусок марудной работы, в которой очень легко сделать тупую ошибку.
N>>Сразу дисклеймер: нет, я не поддерживаю позицию alex_public, что это всё лучше делать так вручную — хотя бы потому, что я банально ленив (той ленью, которая достоинство программиста), и в первую очередь побежал бы за готовым средством. Но и рассказ про 1024 варианта, мягко говоря, неадекватен.
·>Да к тому же ты не compile-time генерацию предложил, твой питонный код источник жутких тормозов, т.к. не обладает Нулевым Оверхедом™.
Питон — это потому, что мне легче на нём быстро формулировать. Мог быть любой другой язык.
Ты не понял другое (может, я криво объяснил). Я не верю, что компилятор сам соптимизирует это в compile time в готовые выражения — для этого он должен сгенерировать 1024 ветки. Обычно компиляторы так не поступают
Показанный код был для метагенератора исходника. (А, теперь понимаю — надо было не if categoryFilter is not None, а if generatingWith('categoryFilter') или как-то похоже.) Вот если это сгенерировано — то уже компилятору деваться некуда.
А в случае безвариантно заданного вида запроса и целевого движка — да, можно сделать такой набор шаблонов, чтобы он генерировал запрос ещё при компиляции. Но мне бы не понравился выходной бинарь с, например, 1024*12 веток кода... как-то это противоестественно. Несмотря на то, что "Нулевой Оверхед", который ты вспомнил (чьё?), похоже,таки будет.