Re[77]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.09.21 06:15
Оценка: +1 :)
Здравствуйте, vdimas, Вы писали:

V>Пи чём тут C# 3.0?

V>Экспериментировал я с выходом linq.
Ну вот он и вышел в C# 3.0. Зачем иметь свои IOperation<Result>, когда есть Expression<Func<Result>>?
Зачем AddIntOp<TLeft, TRight>, когда можно просто сделать Expression.Add(Expression.Variable(typeof(int), "x"), Expression.Constant(42))?
Вызываем на нём Compile(), и получаем полноценный бинарный код, ничуть не хуже, чем у AddIntOp.Execute().

V>Специально не делал то замечание, что сейчас арифметические операторы можно делать в генериках.

V>С тобой же не раз обсуждали способы решения этой задчи.
Это вообще ортогональная задача. Арифметические операторы в интерфейсах позволяют нам делать арифметические функции типа T Sum(IEnumerable<T> operands).
Деревья выражений и без этого позволяли нам строить код динамически.

V>Такое ощущение, что ты не понимаешь, что пишешь.


V>На пальцах: статические локальные ф-ии ввели относительно недавно.

V>Походу, под эту новую фичу не успели доработать некий внутренний ExpressionBuilder.
Эмм, по-моему, кто-то отстаёт от дискуссии. Некий внутренний ExpressionBuilder "не успели" доработать до примерно всего, что появилось после C# 3.0.
Это выглядит не как "неуспевание", а как намеренное решение не копать в эту сторону.
При этом важно понимать, что "внутренняя целостность" сама по себе имеет исключительно академическую ценность.
В реальных проектах решения принимаются исходя из практической, а не академической ценности. Вот, скажем, неумение использовать в деревьях выражений статик локалы аффектит примерно 0 человек в мире.
И для тех, кто на это напоролся, есть простой рецепт: перенесите статик локал в простой приватный статик. Всё, вопрос закрыт.
Альтернатива — давайте расширим библиотеку, расширим компилятор, допишем тесты. А, да, самое главное — ресурсы ограничены, поэтому чтобы сделать это, придётся не сделать что-то другое.
Ну вот и не нашлось никакой фичи в бэклоге, которая была бы нужна меньше, чем эта. Увы.

V>Как ты ставил эксперименты, никто так с Linq не работает.

Ну, "если вы хотите добиться успеха, вы должны быть готовы делать то, чего не хотят делать другие". Мне важно то, что "торчит наружу". Поэтому какие-то внутренние проблемы linq2d имеют низкую важность.
Вот отсутствие в ExpressionTrees тупл-инициализаторов торчит прямо наружу, и это мешает потенциальным клиентам linq2d.

V>Рассуждая так, дешевле совсем ничего не делать.

Нет. Отсутствие некоторых фич приносит прямой или косвенный убыток. Или, наоборот, допиливание каких-то фич может принести пользу большому количеству людей.
Так и принимаются продуктовые решения — постоянно приходится чем-то жертвовать.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.