Здравствуйте, ie, Вы писали:
ie>IntelliSense — вряд ли.
Не вряд ли, а так и есть. Информация из первых рук.
ie>Почему-то с foreach таких заморочек небыло, а тут на тебе. А в для редактора эти проблемы должны решаться с помощью код-сниппетов, а не с помощью дескриминации читаемости выражений.
Нормальный intellisence в SQL невозможен в принципе, это очень серьезная проблема. И никакие сниппеты не спасают.
КО>>Другое дело мы уже к SQL привыкли...
ie>То-то и оно
Это даже хорошо, потому что, при внешней похожести, по семантике LInQ очень серьезно отличается от SQL.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Нормальный intellisence в SQL невозможен в принципе, это очень серьезная проблема. И никакие сниппеты не спасают.
Извини конечно но это полная фигня. Граматика для SQL валяется на АНТЛР-овском сайте. Плюсь своими глазами видел не один редактор SQL с приличным интелисенсом.
И вообще, язык деларативный. Запросы маленькие. Так что проблем тут никаких. Другое дело, что в этом самом линке далеко не SQL. Хотя тому же Васику это почему-то немешает. В нем select пока что спереди. И я уверен, что интелисенс в нем будет.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, AndrewVK, Вы писали:
AVK>>Нормальный intellisence в SQL невозможен в принципе, это очень серьезная проблема. И никакие сниппеты не спасают.
VD>Извини конечно но это полная фигня. Граматика для SQL валяется на АНТЛР-овском сайте. Плюсь своими глазами видел не один редактор SQL с приличным интелисенсом.
О! Покажи мне такой!
Я вот совершенно не понимаю, как может работать хоть какой-то интеллисенс. Он же должен работать слева направо?
Вот я набрал
sel|
Ага, тут мне интеллисенс подскажет — select. Это ежу понятно. Возможных начал стейтментов не так и много в T-SQL.
Ок, я набрал
select |
А дальше что? У меня нет никакого контекста. Я могу набрать *, или алиас.*, или имя поля, или алиас.поле... Вот пример запроса:
select t.id, maxvalue, name from (select id, max(value) as maxvalue from myTable group by id) t
inner join myOtherTable k on k.id = t.id
здесь MyTable.id — это FK в myOtherTable. В myOtherTable есть Name.
Вот тут я повставлял символы | в тех местах, где мне интересно поителлисенсить. Представь себе, что в каждом из них набрано только то, что слева. Что ты собираешься мне показать в списке кандидатов? Как в нем окажется то, что я на самом деле написал? :
select |t.|id, |maxvalue, |name from (select |id, |max(value) as maxvalue from |myTable group by |id) t
inner join |myOtherTable k on |k.id = |t.id
Дай хотя бы намек — ведь проблем никаких нет.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали:
VD>Извини конечно но это полная фигня.
Мне эта фигня жить мешает... Как камушек в ботинке.
VD>Плюсь своими глазами видел не один редактор SQL с приличным интелисенсом.
Приличный он только если с Ноутпадом сравнивать, ты все равно вынужден санчала указать объекты в From, а потом вернуться к select-у и заниматься изнурительным интелисенсом со списком полей. Озлобляет.
VD>Запросы маленькие.
VD>Так что проблем тут никаких.
Влад, "таким бы хлебальцем, да медка бы навернуть"..
VD>Хотя тому же Васику это почему-то немешает. В нем select пока что спереди. И я уверен, что интелисенс в нем будет.
Только такой же кривой как в foreach-е.
Я очень надеюсь что в шарпе все так и останется и они не вынесут select в начало.
Здравствуйте, VladD2, Вы писали:
AVK>>Нормальный intellisence в SQL невозможен в принципе, это очень серьезная проблема. И никакие сниппеты не спасают.
VD>Извини конечно но это полная фигня. Граматика для SQL валяется на АНТЛР-овском сайте.
Грамматика тут не при чем.
VD> Плюсь своими глазами видел не один редактор SQL с приличным интелисенсом.
S>А дальше что? У меня нет никакого контекста. Я могу набрать *, или алиас.*, или имя поля, или алиас.поле...
Это ясно. Но ведь согласитесь, не обязательно настолько круто предугадывать. Варианты:
1. select * from |[выпал список таблиц]
2. select t.|[выпал список полей] from table t
Лично мне достаточно было бы и этого.
Здравствуйте, Sinclair, Вы писали:
S>Ок, я набрал S>
S>select |
S>
S>А дальше что? У меня нет никакого контекста. Я могу набрать *, или алиас.*, или имя поля, или алиас.поле...
Если ты о том как поступают имеющиеся приложения в таких случаях, то все просто. Они просто предлагают список таблиц (а то и полей) из БД. Если уже имеется часть "from", то список алиасов и таблиц из него.
S> Вот пример запроса: S>
S>select t.id, maxvalue, name
S> from (select id, max(value) as maxvalue from myTable group by id) t
S> inner join myOtherTable kon k.id = t.id
S>
S>здесь MyTable.id — это FK в myOtherTable. В myOtherTable есть Name. S>Вот тут я повставлял символы | в тех местах, где мне интересно поителлисенсить. Представь себе, что в каждом из них набрано только то, что слева. Что ты собираешься мне показать в списке кандидатов? Как в нем окажется то, что я на самом деле написал? : S>
S>select |t.|id, |maxvalue, |name from (select |id, |max(value) as maxvalue from |myTable group by |id) t
S> inner join |myOtherTable k on |k.id = |t.id
S>
S>Дай хотя бы намек — ведь проблем никаких нет.
Во втором случае вообще никаких проблем нет. Есть и список алиасов, и джоин. Все это без проблем парсится и предлагается для комплита.
Потом нужно понимать, что если комплит даст несколько больше, то хуже не будет. Так что если ты даже дашь все поля и таблицы/алиасы из запроса, то тебе скажут только спасибо.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>По нынешним временам пожалуй уже обязательно. А главное — ради наличия такой функциональности лично я согласен привыкнуть к select в конце фразы.
А что изменит положение селекта?
Все будет тоже самое. Ну, разве что позволяет надеяться, что from к этому мометну уже будет полностью сформирован. Ну, так нет проблем селек и вперед вписывать только после того как весь запрос сформирован.
Я вообще не понимаю такую заботу о вводе при полной наплевательстве на читаемость текста. Ты его ровно один раз писать будешь, а вот читать еще мног-много раз. Так что это плохое решение.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Merle, Вы писали:
VD>>Плюсь своими глазами видел не один редактор SQL с приличным интелисенсом. M>Приличный он только если с Ноутпадом сравнивать, ты все равно вынужден санчала указать объекты в From, а потом вернуться к select-у и заниматься изнурительным интелисенсом со списком полей. Озлобляет.
Ну, и что. Ну, напишу я "*", а потом вернусь и заменю ее на то что нужно.
Нельзя же ради микроскопического удобства при вводе плевать на читаемость?!
VD>>Запросы маленькие. M>
А что ты улыбаешься? Сравни их размер с мало-мальским проектом на Шапе. Я уеже не говорю о плюсах.
VD>>Хотя тому же Васику это почему-то немешает. В нем select пока что спереди. И я уверен, что интелисенс в нем будет. M>Только такой же кривой как в foreach-е.
Ты видил что говоришь?
M>Я очень надеюсь что в шарпе все так и останется и они не вынесут select в начало.
А я надеюсь они все же исравят эту кривоту. Читать это прийдется все же чаще чем писать. Да и нет особых проблем с написанием. То же мне проблема — отложить написание строчки на пару секунд.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, VladD2, Вы писали:
AVK>>>Нормальный intellisence в SQL невозможен в принципе, это очень серьезная проблема. И никакие сниппеты не спасают.
VD>>Извини конечно но это полная фигня. Граматика для SQL валяется на АНТЛР-овском сайте. Плюсь своими глазами видел не один редактор SQL с приличным интелисенсом. S>О! Покажи мне такой! S>Я вот совершенно не понимаю, как может работать хоть какой-то интеллисенс. Он же должен работать слева направо?
Влад тут уже изложил, совпадающую с моей, точку зрения на эту проблему, поэтому я во многом его повторю.
Работать слева направо — тут, безусловно, никаких возможностей не представляется. Ну не гадалка intellisence, чтоб угадывать откуда я from буду делать и по каким полям буду группировать... Однако, мне понравилось решение предлагаемое разработчиками РеШарпера для цикла foreach (к сожалению, разработчики студийного intellisence не сделали аналогично), т.е. в первую очередь указывается енумератор, а уж затем вводиться тип и название переменной цикла.
Так вот мое мнение, что не имеет смысла пытаться что-то угадать мысли разработчика или выкидывать неимоверный по объему список, а следует уточнить откуда он хочет делать выборку, а уже потом вернуться к select-части.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Sinclair, Вы писали:
S>>Ок, я набрал S>>
S>>select |
S>>
S>>А дальше что? У меня нет никакого контекста. Я могу набрать *, или алиас.*, или имя поля, или алиас.поле...
VD>Если ты о том как поступают имеющиеся приложения в таких случаях, то все просто. Они просто предлагают список таблиц (а то и полей) из БД.
Влад, ты себе представляешь объем этого списка? Учитывая то, что можно указывать а) имя базы и б) имя связанного сервера? Это же бесконечная простыня.
Видел я такое решение у какой-то приблуды к interbase. Полезность = 0, т.к. не дождешься, пока оно список полей вытащит, и угадывает оно крайне редко. VD>Если уже имеется часть "from", то список алиасов и таблиц из него.
Дело хорошее. Но это требует написать сначала from, а потом уже select. Догадываешься, к чему я клоню? S>> Вот пример запроса: S>>
S>>select t.id, maxvalue, name
S>> from (select id, max(value) as maxvalue from myTable group by id) t
S>> inner join myOtherTable kon k.id = t.id
S>>
S>>здесь MyTable.id — это FK в myOtherTable. В myOtherTable есть Name. S>>Вот тут я повставлял символы | в тех местах, где мне интересно поителлисенсить. Представь себе, что в каждом из них набрано только то, что слева. Что ты собираешься мне показать в списке кандидатов? Как в нем окажется то, что я на самом деле написал? : S>>
S>>select |t.|id, |maxvalue, |name from (select |id, |max(value) as maxvalue from |myTable group by |id) t
S>> inner join |myOtherTable k on |k.id = |t.id
S>>
S>>Дай хотя бы намек — ведь проблем никаких нет.
VD>Во втором случае вообще никаких проблем нет. Есть и список алиасов, и джоин.
В смысле? Какой второй случай? Тут ровно один случай. Откуда есть список алиасов? Не знаю как ты, а я лично набираю слева направо. И оказывается, что твой безпроблемный парсинг не подскажет мне ничего почти ни в один момент при наборе этого стейтмента. Я вот вижу всего 3 точки из 11, где есть хоть какой-то шанс включить в список то что нужно. И, спрашивается, нафига нужен такой интеллисенс? Причем еще и назойливый — в 8 точках он будет мне показывать все что угодно вместо того, что мне надо. VD>Все это без проблем парсится и предлагается для комплита. VD>Потом нужно понимать, что если комплит даст несколько больше, то хуже не будет. Так что если ты даже дашь все поля и таблицы/алиасы из запроса, то тебе скажут только спасибо.
Влад, проблема в том, что алиас может появиться в любой момент. И комплит даст не просто больше, а вообще не то.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали: VD>А что же тут причем? Неужели тебе сложно отложить написание этого самого select самостоятельно, а не по тычку авторов языка?
А ЗАЧЕМ?
Влад, читаемость селекта связана только с вредной привычкой. Я тебя уверяю — поработай плотненько с from ... select и ты будешь удивляться, как ты вообще мог читать этот ужасный SQL. Необходимость прыгать вперед-назад при наборе удручает со страшной силой.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали:
AVK>>По нынешним временам пожалуй уже обязательно. А главное — ради наличия такой функциональности лично я согласен привыкнуть к select в конце фразы.
VD>А что изменит положение селекта?
На момент его написания в конце есть полная информация о том, что там можно подставить, следовательно intellisense будет работать в полном объеме.
VD>Все будет тоже самое. Ну, разве что позволяет надеяться, что from к этому мометну уже будет полностью сформирован. Ну, так нет проблем селек и вперед вписывать только после того как весь запрос сформирован.
Только так никто не делает
VD>Я вообще не понимаю такую заботу о вводе при полной наплевательстве на читаемость текста.
А по мне так читаемость не хуже. Просто непривычно несколько. Никакого принципиального ухудшения по сравнению с селектом вначале лично я не вижу.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
Здравствуйте, VladD2, Вы писали:
VD>А что же тут причем? Неужели тебе сложно отложить написание этого самого select самостоятельно, а не по тычку авторов языка?
Сложно. Потому что раком.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
Здравствуйте, ie, Вы писали:
ie>Работать слева направо — тут, безусловно, никаких возможностей не представляется. Ну не гадалка intellisence, чтоб угадывать откуда я from буду делать и по каким полям буду группировать...
В этом-то и проблема.
ie>Однако, мне понравилось решение предлагаемое разработчиками РеШарпера для цикла foreach <...>
Это не решение, а замазка. По удобству оно все равно значительно уступает обычному ителлисенсу.
ie>Так вот мое мнение, что не имеет смысла пытаться что-то угадать мысли разработчика или выкидывать неимоверный по объему список, а следует уточнить откуда он хочет делать выборку, а уже потом вернуться к select-части.
Правильно. Только возвращаться к select части — не удобно, очень неудобно и гораздо правильнее вынести select в конец, раз есть такая возможность.
Здравствуйте, VladD2, Вы писали:
VD>Ну, и что. Ну, напишу я "*", а потом вернусь и заменю ее на то что нужно.
Еще раз: это не удобно, ну неудобно это.
VD>Нельзя же ради микроскопического удобства при вводе плевать на читаемость?!
Никто на читаемость не плюет, читаемость не уменьшается ни на грамм, скорее даже наоборот, когда привыкнешь.
VD>А что ты улыбаешься? Сравни их размер с мало-мальским проектом на Шапе. Я уеже не говорю о плюсах.
С проектом сравнивать некорректно, ты сравни рсредний размер метода, с одним запросом и тут величины окажутся вполне сравнимые.
VD>Ты видил что говоришь?
Ессесно, причем я имел ввиду даже продвинутый решарперовский.
VD> Читать это прийдется все же чаще чем писать.
Читать это нисколько не мешает.
VD> Да и нет особых проблем с написанием. То же мне проблема — отложить написание строчки на пару секунд.
Ну что за привычка поспорить... Ну согласись, что в последнее время, как минимум мы с Тохой с SQL-ем работаем в разы больше тебя, и нам и переучиваться сложнее и проблемы с текущим положением вещей нам известны отнюдь не теоретически, и тем не менее мы в один голос одобряем этот шаг. Странно правда?
Здравствуйте, AndrewVK, Вы писали:
AVK>На момент его написания в конце есть полная информация о том, что там можно подставить, следовательно intellisense будет работать в полном объеме.
Ну, и что помешает на этот момент подняться на строчку и вписать поля в селекте расположеном выше?
VD>>Все будет тоже самое. Ну, разве что позволяет надеяться, что from к этому мометну уже будет полностью сформирован. Ну, так нет проблем селек и вперед вписывать только после того как весь запрос сформирован.
AVK>Только так никто не делает
А кто эти "никто"? Я тебе уже говорил, что видел работающие варианты. Не сказать, чтобы я был в полном восторге, но все работало.
VD>>Я вообще не понимаю такую заботу о вводе при полной наплевательстве на читаемость текста.
AVK>А по мне так читаемость не хуже.
Ага. Точно. Конечно ниже. Надо в комитет по SQL-ю об этом сказать. Вы им глаза просто таки откроете!
Конечно читать: Из таблиц ..., при условии ..., сгрупировав по ..., выбрать ... Куда удобнее и проще чем: Выбрать ..., из таблиц ..., при условии..., сгрупировав по ... Ну, это же как божий день ясно. Извините что с дурными вопросами пристаю.
AVK> Просто непривычно несколько. Никакого принципиального ухудшения по сравнению с селектом вначале лично я не вижу.
Ага. Просто. Причем в Васике будет привычно. А мы пойдем своим путем. Не слов, блин.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Sinclair, Вы писали:
S>Влад, ты себе представляешь объем этого списка?
Да. Он мизерный. В списке методов/классов в мало мальски серьезном проекте на ИЯ он куда больше.
S> Учитывая то, что можно указывать а) имя базы и б) имя связанного сервера? Это же бесконечная простыня.
Да, что уж, там скромничать. Не "бесконечная, "а затмивающая вселенную". Там будет точнее.
А главное, это ведь так хорошо доказывает, что писать нужно "из ..., выбрать ...", а не "выбрать... из...".
S>Видел я такое решение у какой-то приблуды к interbase. Полезность = 0, т.к. не дождешься, пока оно список полей вытащит, и угадывает оно крайне редко.
Угадывать там нечего. Все и так извесно. Про полезность... ну, конечно ручками то куда удобнее.
VD>>Если уже имеется часть "from", то список алиасов и таблиц из него. S>Дело хорошее. Но это требует написать сначала from, а потом уже select. Догадываешься, к чему я клоню?
Ой. Писать прийдется перемещаясь на строчку вверх?! Я угодал? И как же тупые американцы смогут до этого допереть. Пусть уж лучше мучаются когда читают. А чтобы было меньше сомнений зафигачим по больше пиару. Обоснуем (ну, примерно так же как вы тут)... в общем, промоем мозги. Так проще. Американцы ведь код пишут исключительно слева направо и сверху вниз. Перемещаться — это же терять мысль. Вот только я не американец. И я когда код пишу постояно по строчкам туда-сюда прыгаю. И для меня это не проблема! Я уж лучше по прыгаю чуть-чуть, чем потом читать раком написанный текст.
В общем, при такой заботе о ближних разумно было бы вообще не вводить SQL-подобный синтаксис. В функциональном виде обратная запись выгляд куда логичнее. Хотя бы понимашь откуда ноги ростут.
S>Не знаю как ты, а я лично набираю слева направо.
Да? И как же ты бедный с такими способностями SQL-запросы то умудряшся писать. Совсем уж в оправданих этого "решения" до маразма скатился. Прям вижу в твоих глазах тупого американца.
Только не разбивай мне сердце рассказом, что не можешь написать примитивного запроса без QBE.
ЗЫ
В общем, это просто не серьезно. Это попытка оправдать выбор больших дядь любой ценой.
Еще раз, последний, изложу свою позицию серьезно.
Заботиться нужно в первую очередь о читабельности получаемого кода. Никакие угоды интелисоенсам не должны превращать код в бред. Да и нет особых проблем с интелисенсом. Ну, нет проблем вписать селект чуть позже. Нету!
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.