Linq : неудачный маркетинг?
От: 0x7be СССР  
Дата: 16.02.10 20:55
Оценка: +2
Добрый день.

По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?". Все попытки объяснить, что linq является воплощением аппарата операций над множествами, который ортогонален языку, и с необходимостью которого никто не спорит, сталкиваются с такой стеной непонимания. Это приводит меня к мысли, что linq подан неудачно. Его SQL-подобный синтаксис вызывает затруднения и у тех кто не знаком с SQL (выглядит больно непривычно) и у тех, кто знаком (не совсем понимают, что SQL делает в языке и сталкиваются с тем, что синтаксис всего лишь похож, а не повторяет SQL). Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?
Re: Linq : неудачный маркетинг?
От: Temoto  
Дата: 16.02.10 21:11
Оценка: :)
0>По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?". Все попытки объяснить, что linq является воплощением аппарата операций над множествами, который ортогонален языку, и с необходимостью которого никто не спорит, сталкиваются с такой стеной непонимания.

Все попытки объяснить обезъянам, что такое дерево, приведут ровно к тому же. Может быть просто не надо с ними это обсуждать?

0> Это приводит меня к мысли, что linq подан неудачно. Его SQL-подобный синтаксис вызывает затруднения и у тех кто не знаком с SQL (выглядит больно непривычно) и у тех, кто знаком (не совсем понимают, что SQL делает в языке и сталкиваются с тем, что синтаксис всего лишь похож, а не повторяет SQL). Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?


Это такая же мелочь, как лямбда в питоне состоит из одного выражения, стейтменты нельзя вписать. Затруднения — первые пару дней. LINQ — это инструмент для решения определённого класса задач. Если люди пишут код, чтобы решать задачи (а не чтобы поболтать про разные фичи), то они будут его использовать. Инструменты надо использовать, а не подавать.

"Подавать" надо маркетинговые безделушки, типа делегатов или встроенного в IDE списка задач.
Re: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.10 21:15
Оценка: +2
Здравствуйте, 0x7be, Вы писали:

0>По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?". Все попытки объяснить, что linq является воплощением аппарата операций над множествами, который ортогонален языку, и с необходимостью которого никто не спорит, сталкиваются с такой стеной непонимания. Это приводит меня к мысли, что linq подан неудачно. Его SQL-подобный синтаксис вызывает затруднения и у тех кто не знаком с SQL (выглядит больно непривычно) и у тех, кто знаком (не совсем понимают, что SQL делает в языке и сталкиваются с тем, что синтаксис всего лишь похож, а не повторяет SQL). Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?


Мое мнение такое... Линк не очень хорош (во многих отношениях), но подан он очень даже хорошо. Это первая, реально успешная попытка преподнести массам функциональное программирование. Другие попытки провалились полностью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.10 21:18
Оценка: 1 (1) +2
Здравствуйте, Temoto, Вы писали:

T>Инструменты надо использовать, а не подавать.


T>"Подавать" надо маркетинговые безделушки, типа делегатов или встроенного в IDE списка задач.


Гы. Это даже заблуждением назвать язык не поворачивается. Если бы это было правдой, то мир был бы иным.

К сожалению зомбоящики, пиар и реклама правят миром. И можно придумать просто супер-пупер-опупенную фиговину, но если она не будет красиво завернута, грамотно пропиарена, разжевана и положена в рот массам, она не выживет в этом мире.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Linq : неудачный маркетинг?
От: Temoto  
Дата: 16.02.10 21:44
Оценка:
T>>Инструменты надо использовать, а не подавать.

T>>"Подавать" надо маркетинговые безделушки, типа делегатов или встроенного в IDE списка задач.


VD>Гы. Это даже заблуждением назвать язык не поворачивается. Если бы это было правдой, то мир был бы иным.


Это правда. Вы давно видели "пиар" редактора (бросайте писать программы через open,write,close)? Тут можно спорить о том, что относится к общепризнанным благам, а что нет.

VD>К сожалению зомбоящики, пиар и реклама правят миром. И можно придумать просто супер-пупер-опупенную фиговину, но если она не будет красиво завернута, грамотно пропиарена, разжевана и положена в рот массам, она не выживет в этом мире.


Вы имели в виду иное, но получилось очень точно. Супер-пупер-опупенную фиговину надо подавать, да. Потому что она даже называется сложно, очевидно, что объяснение "зачем она нужна" займёт уйму времени. Простые в использовании вещи, которые просто упрощают жизнь, не требуя ничего взамен, не требуют и рекламы. Например, оптимизации компилятора, вывод типов, лямбды.
Re[2]: Linq : неудачный маркетинг?
От: Temoto  
Дата: 16.02.10 21:45
Оценка:
0>>По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?". Все попытки объяснить, что linq является воплощением аппарата операций над множествами, который ортогонален языку, и с необходимостью которого никто не спорит, сталкиваются с такой стеной непонимания. Это приводит меня к мысли, что linq подан неудачно. Его SQL-подобный синтаксис вызывает затруднения и у тех кто не знаком с SQL (выглядит больно непривычно) и у тех, кто знаком (не совсем понимают, что SQL делает в языке и сталкиваются с тем, что синтаксис всего лишь похож, а не повторяет SQL). Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?

VD>Мое мнение такое... Линк не очень хорош (во многих отношениях), но подан он очень даже хорошо. Это первая, реально успешная попытка преподнести массам функциональное программирование. Другие попытки провалились полностью.


SQL провалился?
Re: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 16.02.10 21:50
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?


Как ни подавай, а чтобы оценить технологию, нужно в ней разобраться. А подавляющее большинство у нас устойчиво путает Linq с query comprehension. Хоть апподавайся — без толку.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Linq : неудачный маркетинг?
От: 0x7be СССР  
Дата: 17.02.10 02:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Мое мнение такое... Линк не очень хорош (во многих отношениях), но подан он очень даже хорошо. Это первая, реально успешная попытка преподнести массам функциональное программирование. Другие попытки провалились полностью.

Аргументация мнения или ссылки на конструктивную критику Linq всячески приветствуются.
Мое личное мнение — основной косяк скорее зарыт в идеологии перечислителей.
Re[2]: Linq : неудачный маркетинг?
От: 0x7be СССР  
Дата: 17.02.10 02:35
Оценка:
Здравствуйте, IT, Вы писали:

0>>Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?

IT>Как ни подавай, а чтобы оценить технологию, нужно в ней разобраться. А подавляющее большинство у нас устойчиво путает Linq с query comprehension. Хоть апподавайся — без толку.
А вот не потому ли путают, что название такое и в синтаксисе совершенно ненужный закос под SQL? Когда на пальцах объясняешь про map, filter, fold и прочие функции — как-то проще понимают. Начинаешь linq расчехлять — упорно с SQL-ем сравнивают.
Re[3]: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 17.02.10 03:35
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>А вот не потому ли путают, что название такое и в синтаксисе совершенно ненужный закос под SQL? Когда на пальцах объясняешь про map, filter, fold и прочие функции — как-то проще понимают.


Понимают или делают вид, что понимают?

0>Начинаешь linq расчехлять — упорно с SQL-ем сравнивают.


Я как-то не встречал трудностей у тех, кто одинаково хорошо знаком как с функциональщиной, так и с SQL. Перекосы начинаются, когда знания в SQL есть, а ФП ноль.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Linq : неудачный маркетинг?
От: Mazay Россия  
Дата: 17.02.10 05:11
Оценка: :))) :)))
Здравствуйте, 0x7be, Вы писали:

0>По опыту своих бесед с программистами, не знакомыми с linq, я собрал ряд стереотипных заблуждений и проблем с пониманеим linq, которые у них встречаются. В целом среди них преобладает такое мнение "это убогий SQL в С#, зачем он нужен?". Все попытки объяснить, что linq является воплощением аппарата операций над множествами, который ортогонален языку, и с необходимостью которого никто не спорит, сталкиваются с такой стеной непонимания. Это приводит меня к мысли, что linq подан неудачно. Его SQL-подобный синтаксис вызывает затруднения и у тех кто не знаком с SQL (выглядит больно непривычно) и у тех, кто знаком (не совсем понимают, что SQL делает в языке и сталкиваются с тем, что синтаксис всего лишь похож, а не повторяет SQL). Мое мнение по этому поводу: Linq — хорошая штука, но неудачно подан. Ваши мнения?


Я в промышленном программировании уже 2 года как не появлялся, так что мои представления могут быть несколько устаревшими. Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ. Ведь практически все объекты с которыми я работаю, лежат в БД и оттуда их можно спокойно выдернуть SQL запросом, который отработает на сервере, который всё соптимизирует, закэширует и т. д. Зачем мне самому держать коллекции, к которым потом обращаться через заново изобретенный SQL и не забывать синхронизировать с базой? Нет, конечно иногда приходится, но не так часто, и этого лучше избегать.

"воплощение аппарата операций над множествами, который ортогонален языку" это конечно здорово и где-то он видимо действительно необходим, но не в моём проекте. Вот в проектах, в которых требуется самостоятельно оперировать большими коллекциями в памяти, чуть более сложными чем два массива, там LINQ наверное найдет свое применение, но, как мне представляется, таких проектов немного. Так что маркетинговые усилия на эту фичу не соответсвуют размеру целевой аудитории. Если конечно говорить о LINQ как об инструменте решения конкретных задач, а не о средстве продвижения ФП в массы.
Главное гармония ...
Re[2]: Linq : неудачный маркетинг?
От: IT Россия linq2db.com
Дата: 17.02.10 05:18
Оценка: 1 (1) +6 :))
Здравствуйте, Mazay, Вы писали:

M>Я в промышленном программировании уже 2 года как не появлялся, так что мои представления могут быть несколько устаревшими. Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ. Ведь практически все объекты с которыми я работаю, лежат в БД и оттуда их можно спокойно выдернуть SQL запросом, который отработает на сервере, который всё соптимизирует, закэширует и т. д. Зачем мне самому держать коллекции, к которым потом обращаться через заново изобретенный SQL и не забывать синхронизировать с базой? Нет, конечно иногда приходится, но не так часто, и этого лучше избегать.


Вот! Типичный пример того, о чём я говорил. Люди рассуждают о том, о чём имеют весьма смутное и отдалённое понятие. 0x7be, иди и попробуй теперь это удачно подать
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Linq : неудачный маркетинг?
От: Mazay Россия  
Дата: 17.02.10 05:39
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>Вот! Типичный пример того, о чём я говорил. Люди рассуждают о том, о чём имеют весьма смутное и отдалённое понятие. 0x7be, иди и попробуй теперь это удачно подать


О чём я имею "весьма смутное и отдалённое понятие"? О промышленной разработке "типичных" проектов? Не соглашусь. О LINQ? Пожалуй да. Ну дык в том виде в каком её подают я не вижу ей применения для своих задач. Ниже типичный пример использования LINQ. Вот скажите, вам в самом деле часто приходится работать с такими ArrayList'ами? Как правило же все эти данные лежат в БД и дергаются либо тем же SQL, либо HQL.


using System;
using System.Collections;
using System.Linq;

namespace NonGenericLINQ
{
    public class Student
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int[] Scores { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ArrayList arrList = new ArrayList();
            arrList.Add(
                new Student
                    {
                        FirstName = "Svetlana", LastName = "Omelchenko", Scores = new int[] { 98, 92, 81, 60 }
                    });
            arrList.Add(
                new Student
                    {
                        FirstName = "Claire", LastName = "O’Donnell", Scores = new int[] { 75, 84, 91, 39 }
                    });
            arrList.Add(
                new Student
                    {
                        FirstName = "Sven", LastName = "Mortensen", Scores = new int[] { 88, 94, 65, 91 }
                    });
            arrList.Add(
                new Student
                    {
                        FirstName = "Cesar", LastName = "Garcia", Scores = new int[] { 97, 89, 85, 82 }
                    });

            var query = from Student student in arrList
                        where student.Scores[0] > 95
                        select student;

            foreach (Student s in query)
                Console.WriteLine(s.LastName + ": " + s.Scores[0]);

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
}
Главное гармония ...
Re[4]: Linq : неудачный маркетинг?
От: 0x7be СССР  
Дата: 17.02.10 06:36
Оценка:
Здравствуйте, Mazay, Вы писали:

M>О чём я имею "весьма смутное и отдалённое понятие"? О промышленной разработке "типичных" проектов? Не соглашусь. О LINQ? Пожалуй да. Ну дык в том виде в каком её подают я не вижу ей применения для своих задач. Ниже типичный пример использования LINQ. Вот скажите, вам в самом деле часто приходится работать с такими ArrayList'ами? Как правило же все эти данные лежат в БД и дергаются либо тем же SQL, либо HQL.

Вот у меня совсем недавно был свой "пример использования linq" — я писал свой кастомный XML-сериализатор для одного проектика. Итерирование по метаданным, их обработка и так и сяк, отображение самих данных объектов — все это типичные задачи для Linq, и, заметь, с СУБД рядом не лежат.
Re[4]: Linq : неудачный маркетинг?
От: 0x7be СССР  
Дата: 17.02.10 06:38
Оценка:
Здравствуйте, IT, Вы писали:

0>>А вот не потому ли путают, что название такое и в синтаксисе совершенно ненужный закос под SQL? Когда на пальцах объясняешь про map, filter, fold и прочие функции — как-то проще понимают.

IT>Понимают или делают вид, что понимают?
Кто-то делает вид, конечно, но в целом интерес живее.

0>>Начинаешь linq расчехлять — упорно с SQL-ем сравнивают.

IT>Я как-то не встречал трудностей у тех, кто одинаково хорошо знаком как с функциональщиной, так и с SQL. Перекосы начинаются, когда знания в SQL есть, а ФП ноль.
Кстати да, у меня среди собеседников много людей именно с такой картиной кивалифкаций.
Re[3]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.10 07:24
Оценка: 22 (4) +2
Здравствуйте, 0x7be, Вы писали:

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


VD>>Мое мнение такое... Линк не очень хорош (во многих отношениях), но подан он очень даже хорошо. Это первая, реально успешная попытка преподнести массам функциональное программирование. Другие попытки провалились полностью.

0>Аргументация мнения или ссылки на конструктивную критику Linq всячески приветствуются.
0>Мое личное мнение — основной косяк скорее зарыт в идеологии перечислителей.

Это очень большая тема. Не стоит развивать ее в ответвлении другой темы.

В двух словах... у линка есть два вида проблем 1) идеологические, 2) проблемы реализации.

Идеологическая проблема тут уже озвучивалась. Дел в том, что сама идея создания общего механизма для доступа к данным является как преимуществом так и недостатком. Преимущество заключается в том, что программисту не нужно учить много библиотек и подходов. Недостаток в том, что линк сродни средней температуре по больнице. Он одинаково плохо работаеть с разным иточниками данных. Особенно это заметно в случае доступа к базам данных. В реальных приложениях нужна гибкость и скорость. А именно их линк обеспечивает очень плохо, так как просто не позволяет использовать присущих SQL-ю специфичных возможностей (например, CTE).

Проблем реализации так много, что говорить о них просто не стоит. В качестве примере могу привести ту особенность, что линк-провайдеры вынуждены всю работу осуществлять в рантайми при выполнении каждого запроса. Кое-какие оптимизации сделаны в BLToolkit, но и они приводят к тому, что запросы выполняются вдвое медленнее нежели если их выполнять динамически (через строковые запросы). Правильным подходом тут была бы прекомпиляция запросов во время компиляции программы, но для этого нужно иметь более мощные языки программирования или расширять идеологию линка.

ЗЫ

В этой ветке спорить не намерен. Интересна тема — открывайте новую.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.10 07:49
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Как ни подавай, а чтобы оценить технологию, нужно в ней разобраться. А подавляющее большинство у нас устойчиво путает Linq с query comprehension. Хоть апподавайся — без толку.


Дык в терменологической путаннице виноват МС. Нефига было называть целую груду разной всячины одним именем.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.10 07:55
Оценка:
Здравствуйте, Mazay, Вы писали:

M>Я в промышленном программировании уже 2 года как не появлялся, так что мои представления могут быть несколько устаревшими. Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ.


Ну, так появись. Или хотя бы почитай что-то прежде чем обсуждать то в чем ты вообще ничего не понимашь.
Твои рассуждения о линке выглядят как полная чушь для тех понимает что это такое.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Linq : неудачный маркетинг?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.10 07:58
Оценка: +1
Здравствуйте, Mazay, Вы писали:

M>О чём я имею "весьма смутное и отдалённое понятие"?


О LINQ.

Подписываюсь под каждым словом IT.

Несешь полную чушь и еще сейчас спорить начнешь.

И ладно бы спорили и несли чушь ламеры. Так даже, казалось бы, весьма продвинутые товарищи вроде Гапертона в этот процесс включаются.

Господа. Не выставляйте себя на людях ламерами. Изучайте то что пытаетесь обсуждать!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Linq : неудачный маркетинг?
От: Mazay Россия  
Дата: 17.02.10 08:05
Оценка: -2
Здравствуйте, VladD2, Вы писали:

M>>Я в промышленном программировании уже 2 года как не появлялся, так что мои представления могут быть несколько устаревшими. Но если взять "типичный" проект с SQL БД, то действительно не очень понятно зачем мне ещё и LINQ.


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

VD>Твои рассуждения о линке выглядят как полная чушь для тех понимает что это такое.

Да что ты говоришь?! А то я не понимаю. Если бы я понимал в чём цимес Линк, то наверное не писал бы сюда. Я вообще-то надеялся на диалог с адекватными РСДНерами не на обсирание тобой.
Главное гармония ...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.