Разговор с Luke Hoban
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.03.06 12:15
Оценка: 71 (6) +1
Luke Hoban — program manager C# IDE. Позавчера мне удалось немножко его потерзать на тему C# 3.0. Постараюсь вкратце изложить (но могу чего нибудь забыть, очень спать хочется).
1) 5 дней назад окончательно были выкачены спецификации на join в LINQ-запросе
2) По поводу недоступности анонимных типов вне контекста функции: проблема известна, но по поводу ее решения он ничего сказать не смог. Боюсь, в релизе linq все останется как есть сейчас.
3) По поводу миксинов: вещь однозначно полезная, но они пока не знают как это реализовать в C#. К релизу LINQ ничего сделать они точно не успеют. В дальнейшем вполне возможно.
4) По поводу возможности расширения компилятора (AST-макросы, etc): технических проблем нет, но они этого не делают, потому что это приведет к созданию кучи различных языков разными командами, и этот код будет несовместим, а порог вхождения в команду будет слишком высоким.
5) По поводу компилятора Expression Tree: он не сразу понял что я хочу. Когда понял, сказал что над этим вроде как никто не думал, так что стоит написать ему для чего это нужно. ИМХО лучше все же написать сразу на фидбек, но надо грамотно все оформить.
6) По поводу сроков: очередной CTP выйдет в конце апреля- начале мая. Основные изменения — сильно переделан DLINQ. Про join я уже писал.
7) По поводу конфликтов extension-методов: в случае, если в using будут указаны два расширения с одинаковыми методами для одинаковых типов компилятор сгенерит ошибку ambiguous extension methods.
8) По поводу многострочных лямбд: ошибка компилятора. Будет исправлена.

P.S. Много разговаривали с Клеменсом Вастерсом (он нынче program manager WCF). Описывать долго, так что если у кого есть какие вопросы — могу попробовать ответить.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re: Разговор с Luke Hoban
От: GlebZ Россия  
Дата: 30.03.06 13:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Luke Hoban — program manager C# IDE. Позавчера мне удалось немножко его потерзать на тему C# 3.0. Постараюсь вкратце изложить (но могу чего нибудь забыть, очень спать хочется).


AVK>4) По поводу возможности расширения компилятора (AST-макросы, etc): технических проблем нет, но они этого не делают, потому что это приведет к созданию кучи различных языков разными командами, и этот код будет несовместим, а порог вхождения в команду будет слишком высоким.

Ну-ну.
AVK>5) По поводу компилятора Expression Tree: он не сразу понял что я хочу. Когда понял, сказал что над этим вроде как никто не думал, так что стоит написать ему для чего это нужно. ИМХО лучше все же написать сразу на фидбек, но надо грамотно все оформить.
Я сразу понял чего ты хочешь. Но у меня еще вопрос который я так и не понял. Допустим у меня в файле лежит запрос. Могу ли я его прочитать и выполнить? (никакой инфы не нашел).
AVK>6) По поводу сроков: очередной CTP выйдет в конце апреля- начале мая. Основные изменения — сильно переделан DLINQ.
Успели таки. Только я хотел гневно высказаться по DLinq'у на КЫВТ, а тут они телепатно сообразили. Боятся значит уважают.

С уважением, Gleb.
Re[2]: Разговор с Luke Hoban
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.03.06 14:04
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Я сразу понял чего ты хочешь. Но у меня еще вопрос который я так и не понял. Допустим у меня в файле лежит запрос. Могу ли я его прочитать и выполнить? (никакой инфы не нашел).


Запрос на LINQ? Или Expression Tree? Если первое, то только если csc.exe запускать. Я же тебе уже писал — ты неверно воспринимаешь LINQ — это языковая конструкция. Твой вопрос аналогичен вопросу — можно ли выполнить сохраненный в файле foreach. Ответ на него, я думаю, ты знаешь.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[3]: Разговор с Luke Hoban
От: Ziaw Россия  
Дата: 30.03.06 14:10
Оценка:
AVK>Запрос на LINQ? Или Expression Tree? Если первое, то только если csc.exe запускать. Я же тебе уже писал — ты неверно воспринимаешь LINQ — это языковая конструкция. Твой вопрос аналогичен вопросу — можно ли выполнить сохраненный в файле foreach. Ответ на него, я думаю, ты знаешь.

я правильно понял, что Expression Tree это как раз средство позволяющее
в том числе сохранять и загружать запросы? аналог ICriteria в (N)Hibernate?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[4]: Разговор с Luke Hoban
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.03.06 14:17
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>я правильно понял, что Expression Tree это как раз средство позволяющее

Z>в том числе сохранять и загружать запросы?

Да.

Z> аналог ICriteria в (N)Hibernate?


Я не знаком в деталях с Hibernate.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[3]: Разговор с Luke Hoban
От: GlebZ Россия  
Дата: 30.03.06 14:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Запрос на LINQ? Или Expression Tree? Если первое, то только если csc.exe запускать. Я же тебе уже писал — ты неверно воспринимаешь LINQ — это языковая конструкция. Твой вопрос аналогичен вопросу — можно ли выполнить сохраненный в файле foreach. Ответ на него, я думаю, ты знаешь.

Запрос на LINQ. Это в принципе даже не чистая языковая конструкция, это препроцессор.
Но допустим мы имеем строку с LINQ, далее мы из нее делаем Expression Tree, как далее ты наверно лучше меня понимаешь. Я думаю, это значительно расширит применимость LINQ( и применимость компилятора).
Re[4]: Разговор с Luke Hoban
От: Oyster Украина https://github.com/devoyster
Дата: 30.03.06 15:17
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>аналог ICriteria в (N)Hibernate?


ICriteria не сериализуется, так что уже точно не аналог

Имхо ICriteria нужен исключительно для того, чтобы построить что-то вроде дерева запроса HQL вместо использования конкатенации строк для построения запроса.
Re[5]: Разговор с Luke Hoban
От: Ziaw Россия  
Дата: 31.03.06 04:05
Оценка:
O>ICriteria не сериализуется, так что уже точно не аналог
ну сериализация не единственный способ сохранения

O>Имхо ICriteria нужен исключительно для того, чтобы построить что-то вроде дерева запроса HQL вместо использования конкатенации строк для построения запроса.

ну да, это и есть Expression Tree. не то что бы незаменимая вещь, но часто
дающая большую гибкость и прозрачность построения и передаче запросов.
необходимость ее использования возникала у меня всего пару раз, но переписывать
тот код без ее использования я бы побоялся.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re: Разговор с Luke Hoban
От: IT Россия linq2db.com
Дата: 31.03.06 05:32
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>4) По поводу возможности расширения компилятора (AST-макросы, etc): технических проблем нет, но они этого не делают, потому что это приведет к созданию кучи различных языков разными командами, и этот код будет несовместим, а порог вхождения в команду будет слишком высоким.


Фиговая отмазка. Беспокоятся они о нас болезных
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Разговор с Luke Hoban
От: prVovik Россия  
Дата: 31.03.06 05:48
Оценка: 1 (1) +1
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, AndrewVK, Вы писали:


AVK>>4) По поводу возможности расширения компилятора (AST-макросы, etc): технических проблем нет, но они этого не делают, потому что это приведет к созданию кучи различных языков разными командами, и этот код будет несовместим, а порог вхождения в команду будет слишком высоким.


IT>Фиговая отмазка. Беспокоятся они о нас болезных


После введения таких фич накроются медным тазом рефакторинг фичи их и не только их ИДЕ. имхо.
лэт ми спик фром май харт
Re[6]: Разговор с Luke Hoban
От: Oyster Украина https://github.com/devoyster
Дата: 31.03.06 06:22
Оценка:
Здравствуйте, Ziaw, Вы писали:

O>>ICriteria не сериализуется, так что уже точно не аналог

Z>ну сериализация не единственный способ сохранения

А как ещё ты будешь сохранять ICriteria?

CriteriaImpl несёт с собой дофига информации, не относящейся напрямую к запросу, так что сделать ручную сериализацию CriteriaImpl будет тяжело. Прийдётся фактически писать для этого какие-то свои классы и использовать их вместо ICriteria... Т.е. сам ICriteria по себе не является аналогом expression trees в DLinq

Z>ну да, это и есть Expression Tree. не то что бы незаменимая вещь, но часто

Z>дающая большую гибкость и прозрачность построения и передаче запросов.
Z>необходимость ее использования возникала у меня всего пару раз, но переписывать
Z>тот код без ее использования я бы побоялся.

Одна из основных фишек этих expression trees в DLinq, насколько я понял, именно в том, что их можно передавать туда-сюда. Так что тут всё зависит от того, как мы используем терминологию.
Re[7]: Разговор с Luke Hoban
От: Ziaw Россия  
Дата: 31.03.06 08:15
Оценка:
O>CriteriaImpl несёт с собой дофига информации, не относящейся напрямую к запросу, так что сделать ручную сериализацию CriteriaImpl будет тяжело. Прийдётся фактически писать для этого какие-то свои классы и использовать их вместо ICriteria... Т.е. сам ICriteria по себе не является аналогом expression trees в DLinq

придется писать свои классы для сохранения, зачем их использовать вместо?.

Z>>ну да, это и есть Expression Tree. не то что бы незаменимая вещь, но часто

Z>>дающая большую гибкость и прозрачность построения и передаче запросов.
Z>>необходимость ее использования возникала у меня всего пару раз, но переписывать
Z>>тот код без ее использования я бы побоялся.

O>Одна из основных фишек этих expression trees в DLinq, насколько я понял, именно в том, что их можно передавать туда-сюда. Так что тут всё зависит от того, как мы используем терминологию.


ну мы сошлись во мнениях как я понял.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[8]: Разговор с Luke Hoban
От: Oyster Украина https://github.com/devoyster
Дата: 31.03.06 08:47
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>придется писать свои классы для сохранения, зачем их использовать вместо?.


Да потому, что ICriteria несёт с собой слишком много служебной информации и легче будет написать что-то вроде обёртки, т.е. в итоге реализовать как минимум тот же набор методов у себя. Это будет действительно непросто — поверь мне на слово. Если не веришь — реализацию классов сохранения/поднятия в студию

Это так потому, что ICriteria в Hibernate изначально проектировалась не для тех же целей, для каких проектировались expression trees. Например, дизайнеры Hibernate и не думали, что кому-то прийдёт в голову сериализовать ICriteria. Обрати внимание, что ICriteria даже не может быть приаттачен к другой сессии штатными средствами!

Z>ну мы сошлись во мнениях как я понял.


Ну если ты согласен, что ICriteria != DLinq Expression Tree по набору фич, то сошлись.
Re[2]: Разговор с Luke Hoban
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.03.06 08:51
Оценка:
Здравствуйте, IT, Вы писали:

IT>Фиговая отмазка.


Это не отмазка. Еще раз повторюсь — они утверждают что проблем сделать это нет.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[9]: Разговор с Luke Hoban
От: Ziaw Россия  
Дата: 31.03.06 08:55
Оценка:
O>Ну если ты согласен, что ICriteria != DLinq Expression Tree по набору фич, то сошлись.
я где то писал что у них одинаковый набор фич? я только спросил не аналогичные ли это инструменты. в моем понимании они оказались аналогичными.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[10]: Разговор с Luke Hoban
От: Oyster Украина https://github.com/devoyster
Дата: 31.03.06 09:13
Оценка:
Здравствуйте, Ziaw, Вы писали:

O>>Ну если ты согласен, что ICriteria != DLinq Expression Tree по набору фич, то сошлись.

Z>я где то писал что у них одинаковый набор фич? я только спросил не аналогичные ли это инструменты. в моем понимании они оказались аналогичными.

Ну ок. Это не аналогичные инструменты
Re: Разговор с Luke Hoban
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.03.06 09:21
Оценка: 14 (1)
Судя по всему не все понимают что такое Expression Tree, поэтому простенький пример:
using System;
using System.Query;
using System.Expressions;

class Test
{
    static void Main()
    {
        // Lambda = anonymous method
        Func<int, string> f = p => "p = " + (p + 1);
        Console.WriteLine(f(12));

        // The same lambda, but in expression tree form
        Expression<Func<int, string>> ft = p => "p = " + (p + 1);
        Console.WriteLine(ft);

        // Iterate over lambda parameters and print it
        foreach (ParameterExpression pe in ft.Parameters)
            Console.WriteLine("{0} : {1}", pe.Name, pe.Type);
    }
}


Результат:
p = 13
|p| Concat("p = ",Add(p, 1)
p : System.Int32
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[11]: Разговор с Luke Hoban
От: Ziaw Россия  
Дата: 31.03.06 09:32
Оценка: :)
O>Ну ок. Это не аналогичные инструменты

Expression tree это дерево выражений.
ICriteria это дерево выражений.

в этом смысле они аналогичны, в этом смысле и был задан вопрос.
стоп флейм, разница только в реализации.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[2]: Разговор с Luke Hoban
От: Oyster Украина https://github.com/devoyster
Дата: 31.03.06 10:02
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Судя по всему не все понимают что такое Expression Tree, поэтому простенький пример:


Спасибо. Что-то я сам совсем забыл, что это такое...
Re[3]: Разговор с Luke Hoban
От: IT Россия linq2db.com
Дата: 31.03.06 13:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Фиговая отмазка.


AVK>Это не отмазка. Еще раз повторюсь — они утверждают что проблем сделать это нет.


Проблем сделать нет, но неохота
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.