|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Привет. Для чего, в принципе, могут быть полезны деревья выражений в типичном приложении. В GUI приложении, или WIn-сервис может быть. Вдруг я зря их не использовал ни разу :) Можете привести примеры, может быть из собственного реального опыта, когда деревья выражений как-то существенно улучшили приложение. Если выгода лишь в 1%, то не уверен, что ради этого стоит усложнять поддержку приложения (не очень-то хочется слышать проклятья от своих коллег в будущем :) ) Пока я считаю их лишь неким инструментарием для тех, кто пишет некие компиляторы или еще что-то в этом духе - в общем не особо применимом в обычных приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 17:43 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Ростигай, Вам - незачем. Мне - тоже. Захотите свою ORM создать, с поддержкой LINQ - тогда пригодится. Ну или какие-нить динамические запросы в Where, вводимые пользователем. Хотя в последнем случае шаблон Specifications вроде как рулил. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 18:44 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Спасибо за ответ. Просто интересно стало. Вдруг еще кто-то поделится историей, аналогичной этой (не пойму как вставить ссылку картинкой) : https://lurkmore.to/Файл:Regular_expressions.png :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 19:00 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
РостигайСпасибо за ответ. Просто интересно стало. Вдруг еще кто-то поделится историей, аналогичной этой (не пойму как вставить ссылку картинкой) : https://lurkmore.to/Файл:Regular_expressions.png :) Э... На всякий случай: Regular Expressions и Expressions Tree - это разные вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 19:07 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Arm79, Ну я знаю это. Но спасибо за предупреждение :) Картинко просто в тему первого поста вспомнилась. А вдруг, мол, знание деревьев выражений поможет мне в профессиональном плане. О том и топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 19:13 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Ростигай, Expression это скорее нужно для разработчиков и то строг мидл и выше, для простых программистов достаточно общих представлений.. имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 19:26 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Если неизвестно зачем - значит, не нужно. Когда понадобится - будет понятно зачем, и для чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 19:54 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Та ну, странное предположение. Если ребенок не знает про существование букв и цифр, это еще не значит, что они ему не нужны :) И он такой "Да зачем мне это. Я и без этого проживу, буду водонасосчиком работать" а ему такие "Не, ты смотри научишься читать, в программисты пойдешь, ферари там, 5 этажей апартаменты личные". И вот я такой: "Зачем нужны деревья выражений ? Жил без них программером". А мне тут в теме: "тут ответ на вопрос топикстартера + про ферари и апартаменты" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 20:18 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Ростигай, ну в .NET хватает специфических вещей. Reflection.Emit используете в GUI приложениях? А он есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2014, 20:28 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
РостигайВ GUI приложении...Например, вот: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
vs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Чуешь разницу? В Asp.Net MVC куча хелперов использует такой подход, да много где. Про LINQ-to-XXX уже сказали, это основное применение Expression. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 05:28 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Алексей КРостигайВ GUI приложении...Например, вот: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
vs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Чуешь разницу? В Asp.Net MVC куча хелперов использует такой подход, да много где. Про LINQ-to-XXX уже сказали, это основное применение Expression. пожалуй кроме этого нигде не использовал. Ну один раз собирал "дерево" и компилил вместо аналогичного подхода с рефлекшеном ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 10:56 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
РостигайЕсли ребенок не знает про существование букв и цифр, это еще не значит, что они ему не нужны :) Аналогия некорректна, поскольку предполагает развитие разработчика на уровне ребенка. Хотя такие есть, не спорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 11:49 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Ростигай, Классические программы могут менять свои данные во время исполнения. Используя деревья выражений, можно менять код во время исполнения, а это уже попахивает искусственным интеллектом. То есть такие программы смогут обучаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2014, 12:21 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
Алексей КРостигайВ GUI приложении...Например, вот: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
vs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Чуешь разницу? С версии 4.5 это уже не комильфо. Рулит CallerMemberName. А вот когда надо получить строковое имя переменной или функции: всякие такие штуки и их вариации, типа расширяющих дженериков, для удобства Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2014, 07:03 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
ЕвгенийВРостигай, Классические программы могут менять свои данные во время исполнения. Используя деревья выражений, можно менять код во время исполнения, а это уже попахивает искусственным интеллектом. То есть такие программы смогут обучаться. А ещё можно передавать код через сериализацию, не выходя из рантайма и не используя для этого внешние компиляторы. Правда, я не уверен, что метод Expression<TDelegate>.Compile не использует внешний компилятор и всё делает чисто "средствами рантайма дотнета". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2014, 07:08 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
НемоКэп42А ещё можно передавать код через сериализацию, не выходя из рантайма и не используя для этого внешние компиляторы. Хейсберг обещал сериализацию деревьев выражений, но что то у них не сраслось. НемоКэп42Правда, я не уверен, что метод Expression<TDelegate>.Compile не использует внешний компилятор и всё делает чисто "средствами рантайма дотнета". MSIL генерируется "средствами рантайма дотнета", дальше JIT компилятор, как обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2014, 10:46 |
|
Expression Tree. Зачем оно ?
|
|||
---|---|---|---|
#18+
НемоКэп42Алексей Кпропущено... Например, вот: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
vs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Чуешь разницу? С версии 4.5 это уже не комильфо. Рулит CallerMemberName.StackTrace Class есть с версии 3.5 НемоКэп42А вот когда надо получить строковое имя переменной или функции: всякие такие штуки и их вариации, типа расширяющих дженериков, для удобства Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2014, 10:32 |
|
|
start [/forum/topic.php?fid=20&msg=38749604&tid=1402455]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 21ms |
total: | 160ms |
0 / 0 |