Re[27]: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 19.02.10 15:43
Оценка: -1
Здравствуйте, Lloyd, Вы писали:

L>Хорошо, пример попроще:

L>
L>var customers = GetCustomers();
L>if (customers.Any()) {
L>  Console.WriteLine(customers.First().Name);
L>}
L>

L>Только не говори, что проблема в Console.WriteLine.

Эту кривульку лучше переписать так:

var customer = GetCustomers().FirstOrDefault();
if (customer != null)
  Console.WriteLine(customer.Name);

И проблем не будет.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 15:45
Оценка:
Здравствуйте, 0x7be, Вы писали:

VD>>Не. Это называется Lisp way. А C++ way — это если что-то можно сделать через анальное отверстие, то делать именно так. А на предложение изменить язык обяснять, что религия не позволяет.

0>Ты преувеличиваешь Делание через анальное отверстие — это результат комбинации двух идей (что тоже очень С++-но по натуре):
0>1. Нежелание вводить в язык то, что можно сделать самому.
0>2. Отсутствие средств по-человечески сделать самому то, чего нет в языке.
0>

ОК. Согласен с этим определением. Но результат то тот же — все через зад.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 19.02.10 15:45
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Хорошо, пример попроще:

L>>
L>>var customers = GetCustomers();
L>>if (customers.Any()) {
L>>  Console.WriteLine(customers.First().Name);
L>>}
L>>

L>>Только не говори, что проблема в Console.WriteLine.

VD>А какая здесь проблема то? Какой-то урод написал кривую коллекцию?


Любой linq-провайдер такие коллекции отдает на раз. Предлагаешь отказаться от linq-а для доступа к базам данных?

VD>>>Есть такое простое правило нельзя принимать тип более общий чем требуется. Если оно нарушается, то можно долго искать ошибки там где их нет.


L>>Где это правило тут нарушается?


Так правило нарушается или нет?

VD>А где тут проблема? Два раза энумератор запросили что ли?


Да.
Re[5]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 15:47
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Вот тут я бы с тобой поспорил. Что происходит, при замене конструкций вида foreach на вызов функций linq2objects? Повышается уровень абстракции — ты не просто делаешь foreach, а применяешь к последовательности определенные преобразования, реализация которых скрыта. В чем профит? Появление Plinq дает ответ на этот вопрос.


Фиг бы со всеми Plinq — ками. Главный профит в том, что код пишется на более высокоуровневых абстракциях. Их проще распознавать в коде, а значит проще понять что делает сам код. А Plinq и т.п. — это уже следствие.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Linq : неудачный маркетинг?
От: igna Россия  
Дата: 19.02.10 15:48
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это как раз говорит о том, что программистам по сути по фигу какой там тип у этой переменной.


Программисты в большей свой части лет так дцать использовали контейнеры of Objects, кастили доставаемые из них объекты перед использованием и не видели в этом никакой проблемы. Ну по фигу им было и по сути.
Re[28]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 19.02.10 15:48
Оценка: -1
Здравствуйте, IT, Вы писали:

IT>Эту кривульку лучше переписать так:


А как писать кривульку с DataSource-ом. Ты вроде говорил, что "у вас" эта проблема как-то решается. Как?

IT>
IT>var customer = GetCustomers().FirstOrDefault();
IT>if (customer != null)
IT>  Console.WriteLine(customer.Name);
IT>

IT>И проблем не будет.

Код читается хуже + лишняя переменная. Хотя, на вкус и цвет...
Re[41]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 15:51
Оценка:
Здравствуйте, Lloyd, Вы писали:

VD>>Шум ты создаешь описявая явно типы там где в этом нет смысла.


L>"там где в этом нет смысла" аннотацию типов писать нет смысла. Вы правы, кэп.


Ну, вот и консенсус. Осталось только определиться с тем где этот смысл появляется.

VD>>А переменная дает имя значению. Иногда это очень даже способствует чтению кода.


L>А иногда — нет.


Несомненно. В этом мире вообще редко встречаются правила работающие во всех без исключения случаях.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[42]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 19.02.10 15:52
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>"там где в этом нет смысла" аннотацию типов писать нет смысла. Вы правы, кэп.


VD>Ну, вот и консенсус. Осталось только определиться с тем где этот смысл появляется.


Ну, я думаю, мое мнение по этому поводу достаточно очевидно.
Re[19]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 16:03
Оценка:
Здравствуйте, igna, Вы писали:

VD>>Я вообще нахожу тут мало общего. В одном случае нет публичного интерфейса, в другом вывода типов.


I>И фиг с ним.


А, ну, тогда общее есть со всеми видами полиморфизма. Например, с перегрузкой методов по имени.
Есть смысл в такой общности?

I>Тем не менее твое "если мы не указываем типы внутри методов, то мы оперируем их более абстрактными интерфейсами. В эти интерфейсы входят только те методы, что были применены внутри тела метода" вполне относится и к шаблонам функций C++.


Естественно. Только от этого между шаблонами и выводом типов связи не появляется. Несомненно и то, и то виды полиморфизма.

I>Так ведь и в случае использования шаблонов C++ "типы будут проверены при компиляции и стало быть ошибок типов быть не может".


Не будут. Шаблоны или не компилируются вовсе или компилируются в некие АСТ-макросы. Проблема в том, что раскрываются эти макросы в совершенно другое время и в совершенно другом месте.

Вывод типов же гарантирует непротиворечивость кода при его компиляции. Так что тут больше общего с дженериками. Хотя и эта схожесть не дает ничего толкового.

VD>>А в случае С++ типы при разборе шаблона не проверяются вообще.


I>Ну при инстанцировании проверяются. Хрен с редькой...


Дык она может быть выполнена через 20 лет после того как код шаблона будет написан и признан корректным. А через эти 20 лет в шаблон передадут параметр который приведет к непредсказуемому результату. При чем найти источник проблем будет крайне не просто.

Так что разница как раз очень очевидная. Вывод типов безопасен (доступны проверки компилятора), удобен (работает интеллисенс, код становится компактнее и менее зашумленным) и более абстрактным (мы понимаем под типом только набор используемых членов). В случае же шаблонов С++ мы вынуждены все так же явно описывать все переменные, они не безопасны (нет гарантии что код будет корректен с любыми типами), неудобны (не работает интелисенс), но действительно абстрактен.

По моему, различий куда больше чем сходств.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 16:08
Оценка: -2
Здравствуйте, Lloyd, Вы писали:

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


L>Так правило нарушается или нет?


Нет.

VD>>А где тут проблема? Два раза энумератор запросили что ли?


L>Да.


А это не проблема даже если энумератор на самом деле каждый раз лезет в БД. Ведь раз человек написал код таким образом, то производительность доступа к коллекции его не волнует. Иначе он просто не стал бы так писать код.

Человек обычно прекрасно понимает в каких условиях работает программа, с какими данными и какие требования предъявляются к производительности. И тут одно из двух. Или человек идиот и он будет раз за разом порождать не эффективные решения, или он адекватен и 99% кода будет приемлемого качества, а остальное придется искать с помощью профайлера. Подложить саломку на все случаи жизни невозможно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 16:10
Оценка: -1
Здравствуйте, igna, Вы писали:

I>Программисты в большей свой части лет так дцать использовали контейнеры of Objects, кастили доставаемые из них объекты перед использованием и не видели в этом никакой проблемы. Ну по фигу им было и по сути.


Я почему-то жил в другом мире. Ну, по фигу, так по фигу. Это их проблемы. Многие пишут на Питоне и Руби и не видят в этом проблем, хотя там почти любое вычисление — это "ксты".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[29]: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 19.02.10 16:10
Оценка: :))
Здравствуйте, Lloyd, Вы писали:

IT>>Эту кривульку лучше переписать так:


L>А как писать кривульку с DataSource-ом. Ты вроде говорил, что "у вас" эта проблема как-то решается. Как?


Ты про баиндинг? У нас для баиндинга используются специальные продвинутые списки. Так что по любому перекладывать.

var customer = GetCustomers().FirstOrDefault();

if (customer != null)
    Console.WriteLine(customer.Name);


L>Код читается хуже



А теперь?

L>+ лишняя переменная. Хотя, на вкус и цвет...


Переменных абсолютно столько же. И правда у кого-то что-то с памятью.
Если нам не помогут, то мы тоже никого не пощадим.
Re[43]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.10 16:11
Оценка: -1
Здравствуйте, Lloyd, Вы писали:

VD>>Ну, вот и консенсус. Осталось только определиться с тем где этот смысл появляется.


L>Ну, я думаю, мое мнение по этому поводу достаточно очевидно.


Ну, да. Очевидно не верное .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 19.02.10 16:14
Оценка: -4
Здравствуйте, VladD2, Вы писали:

VD>Или человек идиот и он будет раз за разом порождать не эффективные решения, или...


Судя по тому, что они у себя бэбиситят девелоперов, первое.
Если нам не помогут, то мы тоже никого не пощадим.
Re[30]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 19.02.10 16:17
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>А это не проблема даже если энумератор на самом деле каждый раз лезет в БД. Ведь раз человек написал код таким образом, то производительность доступа к коллекции его не волнует. Иначе он просто не стал бы так писать код.


Ты никогда не ошибался? Тебя в реале не Чаком Норрисом зовут случаем?

VD>Человек обычно прекрасно понимает в каких условиях работает программа, с какими данными и какие требования предъявляются к производительности. И тут одно из двух. Или человек идиот и он будет раз за разом порождать не эффективные решения, или он адекватен и 99% кода будет приемлемого качества, а остальное придется искать с помощью профайлера. Подложить саломку на все случаи жизни невозможно.


Т.е. var — для тех, кто в 99% случаев не ошибается? Ну я-то явно к этой категории не отношусь.
Re[21]: Linq : неудачный маркетинг?
От: WolfHound  
Дата: 19.02.10 16:24
Оценка:
Здравствуйте, igna, Вы писали:

I>Программисты в большей свой части лет так дцать использовали контейнеры of Objects, кастили доставаемые из них объекты перед использованием и не видели в этом никакой проблемы. Ну по фигу им было и по сути.

Подмена понятий.
Статическая и динамическая типизция это резные вещи.
... << RSDN@Home 1.2.0 alpha 4 rev. 1305>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[21]: Linq : неудачный маркетинг?
От: WolfHound  
Дата: 19.02.10 16:24
Оценка: +2
Здравствуйте, igna, Вы писали:

I>Самодокументирование. Используя Stream stream = new FileStream, я сообщаю, что не использую в дальнейшем методов специфичных для FileStream.

А смысл?
Данное "самодокументирование" не делает алгоритм ни проще ни понятнее.
А то что не делает код понятнее мусор который делает код сложнее.
... << RSDN@Home 1.2.0 alpha 4 rev. 1305>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[30]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 19.02.10 16:27
Оценка:
Здравствуйте, IT, Вы писали:

IT>>>Эту кривульку лучше переписать так:


L>>А как писать кривульку с DataSource-ом. Ты вроде говорил, что "у вас" эта проблема как-то решается. Как?


IT>Ты про баиндинг? У нас для баиндинга используются специальные продвинутые списки. Так что по любому перекладывать.


И как вы защититесь от того, что кто-то не воспользуется вашим продвинутым списком, а задействует напрямую linq-коллекцию?
Или опять будешь сказочки рассказывать про то, что у вас никто никогда не ошибается?

IT>
IT>var customer = GetCustomers().FirstOrDefault();

IT>if (customer != null)
IT>    Console.WriteLine(customer.Name);
IT>


L>>Код читается хуже


IT>

IT>А теперь?

Совсем плохо. Не скомпилится даже.

L>>+ лишняя переменная. Хотя, на вкус и цвет...


IT>Переменных абсолютно столько же.


А какого лешего ты убрал customers? Там может ниже код размером с пол-"Войны и Мира", где в каждой строчке customers — по пять раз.
Re[44]: Linq : неудачный маркетинг?
От: Lloyd Россия  
Дата: 19.02.10 16:30
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>>>Ну, вот и консенсус. Осталось только определиться с тем где этот смысл появляется.


L>>Ну, я думаю, мое мнение по этому поводу достаточно очевидно.


VD>Ну, да. Очевидно не верное .


Конечно, неверное. У меня специализация такая — создаю проблемы там где их не было, а где были — усугубляю.
Без проблем жизнь скушна.
Re[31]: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 19.02.10 16:34
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>И как вы защититесь от того, что кто-то не воспользуется вашим продвинутым списком, а задействует напрямую linq-коллекцию?


Кто именно воспользуется?

L>Или опять будешь сказочки рассказывать про то, что у вас никто никогда не ошибается?


Постоянно ошибаться — это наша профессия. Я вот, например, в предыдущем предложении слово 'ошибаться' сначала без мягкого знака написал. Но потом исправился и в релиз этот текст пошёл без этой ошибки.

IT>>
IT>>var customer = GetCustomers().FirstOrDefault();

IT>>if (customer != null)
IT>>    Console.WriteLine(customer.Name);
IT>>


L>>>Код читается хуже


Ну понятно. Оно, конечно, Any, большинству девелоперов, за которыми надо каждые три дня код проверять, понятнее будет.

L>Совсем плохо. Не скомпилится даже.


А ты попробуй. Кстати, если предыдущий код по-твоему компилировался, то в этом я добавил всего лишь одну пробельную строчку

IT>>Переменных абсолютно столько же.

L>А какого лешего ты убрал customers? Там может ниже код размером с пол-"Войны и Мира", где в каждой строчке customers — по пять раз.

А зачем в этом коде этот мусор. Или ты переменные создаёшь на про запас?
Если нам не помогут, то мы тоже никого не пощадим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.