Здравствуйте, Dufrenite, Вы писали:
D>По духу да. Но с точки зрения автоматизации разница колоссальна. Были бы в С++ лямбды и замыкания вопросов бы не было а так
Увы, таков "C++ way" — если программист может сам смоделировать что-то, то не вводить это в язык. Хотя, в новом стандарте анонимные функции будут. И что-то смутно напоминающее лексическое замыкание :
Здравствуйте, 0x7be, Вы писали:
0>Увы, таков "C++ way" — если программист может сам смоделировать что-то, то не вводить это в язык. Хотя, в новом стандарте анонимные функции будут. И что-то смутно напоминающее лексическое замыкание :
Не. Это называется Lisp way. А C++ way — это если что-то можно сделать через анальное отверстие, то делать именно так. А на предложение изменить язык обяснять, что религия не позволяет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, 0x7be, Вы писали:
0>Здравствуйте, Mystic, Вы писали:
M>>Сравнительно сложен в изучении и понимании при том, что существующие методы решения таких задач всех устраивают. 0>Каких задач? Меня интересует твой взгляд.
Которые возникают на практике, которые характеризует активное использование foreach и yeild. В большинстве своем такие задачи возникают не часто и изучать что-то новое для их решения нет большого желания. Лучшее враг хорошего.
. Код с использованием LINQ выглядит пугающе. Я понимаю также, что мой набросок в ответе вполне можно было бы переписать с использованием LINQ. Но... я не знаю как. Идей также не много. Плюс нет уверенности, что это все хорошо ляжет на абстракцию LINQ. Опасение того, что вот во что-то упрется и не выйдешь.
Здравствуйте, Lloyd, Вы писали:
IT>>Не огребём. Этот код не ходит в базу вообще.
L>Огребем. Если я понял тебя правильно, ты сцепляешь приведенные методы в цепочку и в конечном итоге у тебя будет происходить чтение stream-а. Если ты "прокрутил" последний enumerable до конца, то стрим у тебя будет спозизионирован на конец. Повторное чтение приведет либо к исключению, либо к пустой коллекции на выходе.
Мы не огнебём. Но не из-за var/не var, стрим может оказаться обыкновенной строкой, но главное, мы не пишем такой код как в твоём примере.
Теперь ты мне, пожалуйста, ответь. Пишешь ли ты такой код, как в твоём примере.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
L>>Огребем. Если я понял тебя правильно, ты сцепляешь приведенные методы в цепочку и в конечном итоге у тебя будет происходить чтение stream-а. Если ты "прокрутил" последний enumerable до конца, то стрим у тебя будет спозизионирован на конец. Повторное чтение приведет либо к исключению, либо к пустой коллекции на выходе.
IT>Мы не огнебём. Но не из-за var/не var, стрим может оказаться обыкновенной строкой, но главное, мы не пишем такой код как в твоём примере.
Что значит "стрим может оказаться обыкновенной строкой"? Ты говоришь о System.IO.Stream?
IT>Теперь ты мне, пожалуйста, ответь. Пишешь ли ты такой код, как в твоём примере.
Нет, именно так не пишу. Это был код для демонстрации. На практике варианты не такии экстремальные, но давольно часто встречается код типа
Здравствуйте, VladD2, Вы писали:
VD>Не. Это называется Lisp way. А C++ way — это если что-то можно сделать через анальное отверстие, то делать именно так. А на предложение изменить язык обяснять, что религия не позволяет.
Здравствуйте, IT, Вы писали:
L>>Мое правило — простое и следовательно лучше.
IT>Твоё 'простое' решение как минимум содержит много мусора и трудно читается, следовательно оно не лучшее.
Нет, в моем правиле нет мусора и оно легко читается.
Здравствуйте, VladD2, Вы писали:
VD>Не. Это называется Lisp way. А C++ way — это если что-то можно сделать через анальное отверстие, то делать именно так. А на предложение изменить язык обяснять, что религия не позволяет.
Ты преувеличиваешь Делание через анальное отверстие — это результат комбинации двух идей (что тоже очень С++-но по натуре):
1. Нежелание вводить в язык то, что можно сделать самому.
2. Отсутствие средств по-человечески сделать самому то, чего нет в языке.
Здравствуйте, Mystic, Вы писали:
M>Которые возникают на практике, которые характеризует активное использование foreach и yeild. В большинстве своем такие задачи возникают не часто и изучать что-то новое для их решения нет большого желания. Лучшее враг хорошего.
Вот тут я бы с тобой поспорил. Что происходит, при замене конструкций вида foreach на вызов функций linq2objects? Повышается уровень абстракции — ты не просто делаешь foreach, а применяешь к последовательности определенные преобразования, реализация которых скрыта. В чем профит? Появление Plinq дает ответ на этот вопрос.
Здравствуйте, Lloyd, Вы писали:
IT>>Твоё 'простое' решение как минимум содержит много мусора и трудно читается, следовательно оно не лучшее. L>Нет, в моем правиле нет мусора и оно легко читается.
В твоём правиле куча мусора, за которым не видно логики.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Mazay, Вы писали:
M> Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ. Ведь практически все объекты с которыми я работаю, лежат в БД и оттуда их можно спокойно выдернуть SQL запросом, который отработает на сервере, который всё соптимизирует, закэширует и т. д.
LINQ — это не про БД.
Нет в природе ни одного проекта больше 10 строчек кода, где не было бы коллекций. Если в коллекции больше двух элементов, то LINQ существенно облегчает жизнь.
Например, вместо того, чтобы писать
bool isAnySpace = false;
foreach (var s in"qeqweqweqwe")
{
if (s == ' ')
{
isAnySpace = true;
break;
}
}
Можно написать:
bool isSpace = "qeqweqweqwe".Any(s => s == ' ');
И это все, только часть области применения LINQ. =)
Здравствуйте, Dufrenite, Вы писали:
D>Если используем Visual Studio и надо узнать точный тип, то для этой цели есть контекстная подсказка. Мне лично хватает. D>Если IDE нет, то пускаем пулю в лоб, меняем профессию или ищем объявление GetCustomers(). Как то так.
Понятно, то есть другими словами, если нам надо делать code-review, то пускаем пулю в лоб. Так и запишем.
Здравствуйте, 0x7be, Вы писали:
0> Ваши мнения?
Сегодня Эрик Мейер начал лекцию со слов "Do you understand LINQ?". очень в тему.. )
Как же он жжет, напалмом просто!!!
И таки да, он показал, что мы нифига не понимаем LINQ ))
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, 0x7be, Вы писали:
0>> Ваши мнения? IB>Сегодня Эрик Мейер начал лекцию со слов "Do you understand LINQ?". очень в тему.. ) IB>Как же он жжет, напалмом просто!!! IB>И таки да, он показал, что мы нифига не понимаем LINQ ))
Здравствуйте, samius, Вы писали:
S>Можно развернуть тезисы?
Ну, это я просто под впечатлением. Эрик в живую — это круто, на видео он такого эффекта не производит. =)
Выступал он с очередным рассказом про Rx, но в течении первых трех слайдов действительно показал, что линк мы не знаем, на каком-то из видео у него этот эпизод тоже есть, где он рассказывает, что линк — это монады. По ходу лекции рекламировал еще решарпер рекламировал, и утверждал что ни он, ни его команда без него не могут...
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, samius, Вы писали:
S>>Можно развернуть тезисы? IB>Ну, это я просто под впечатлением. Эрик в живую — это круто, на видео он такого эффекта не производит. =) IB>Выступал он с очередным рассказом про Rx, но в течении первых трех слайдов действительно показал, что линк мы не знаем, на каком-то из видео у него этот эпизод тоже есть, где он рассказывает, что линк — это монады. По ходу лекции рекламировал еще решарпер рекламировал, и утверждал что ни он, ни его команда без него не могут...
Что линк это монады он неоднократно упоминал в лекциях по хаскелю. А нет ссылки на слайды? Правда я с Rx еще не знаком, только наслышан.