Является ли LINQ (или linq) нишевым инструментом или находится на пути становления основополагающим? - PullRequest
7 голосов
/ 01 августа 2009

После прочтения « Что такое Java-эквивалент LINQ? », я хотел бы знать, является ли (строчный) языковой запрос - другими словами, возможность использовать краткий синтаксис для выполнения запросы к коллекциям объектов или внешним хранилищам - будет ли путь будущего для большинства языков общего назначения? Или LINQ - интересная технология, которая останется ограниченной языками Microsoft? Что-то среднее?

РЕДАКТИРОВАТЬ : Я не знаю других языков, но когда я учусь, кажется, что LINQ не является ни беспрецедентным, ни уникальным. Идеи в LINQ - лямбды и запросы - присутствуют на других языках, и идеи, похоже, распространяются.

Ответы [ 8 ]

6 голосов
/ 02 августа 2009

До LinQ у Python было выражений генератора , которые являются специфическим синтаксисом для выполнения запросов к коллекциям . Синтаксис Python более ограничен, чем у Linq, но позволяет вам выполнять те же запросы, что и в linq. Несколько месяцев назад я написал в блоге сравнение запросов в C # и Python , вот небольшой пример:

C # Linq:

var orders = from c in customers
             where c.Region == "WA"
             from o in c.Orders
             where o.OrderDate >= cutoffDate
             select new {c.CustomerID, o.OrderID};

Выражения генератора Python:

orders = ( (c.customer_id, o.order_id)
           for c in customers if c.region == 'WA'
           for o in c.orders if o.date >= cutoff_date)

Синтаксис запросов на языках программирования - чрезвычайно полезный инструмент. Я считаю, что каждый язык должен включать что-то подобное.

4 голосов
/ 01 августа 2009

Проведя годы

  • Доступ к базе данных ручной работы (на очень многих языках)
  • Пройдя сквозь рамки сущности
  • Извлечение и хранение данных через модные ORM месяца

Пришло время, чтобы somone сделал легкий доступ и интегрированный в язык способ общения с базой данных. LINQ to SQL должен был быть сделан несколько лет назад. Я приветствую команду, которая придумала это - наконец, структуру доступа к базе данных, которая имеет смысл.

Пока что он не идеален, и моя главная головная боль на данный момент - это отсутствие реальной поддержки LINQ2SQL для других распространенных баз данных, и нет ничего подобного для Java.

(LINQ вообще неплох, кстати, не только LINQ to SQL: -)

2 голосов
/ 02 августа 2009

Я думаю, что функциональные концепции, лежащие в основе LINQ, станут популярными на многих языках. Передача последовательности объектов через набор функций для получения нужного набора объектов. По сути, использование лямбда-синтаксиса над синтаксисом запроса.

Это очень мощный и выразительный способ кодирования.

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

  • Лямбда
  • Основные методы запроса

Большинство новых языков поддерживают лямбды (даже C ++ наконец-то их получает!). Добавление поддержки библиотеки довольно дешево и обычно может быть сделано мотивированным человеком.

Получение синтаксиса запроса на языке, однако, требует гораздо больше работы.

2 голосов
/ 01 августа 2009

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

LINQ - это, безусловно, одна из главных причин, по которой я лично придерживаюсь .NET, в любом случае - это стало для меня основополагающим, и я готов поспорить, что многие разработчики тоже так считают.

1 голос
/ 02 августа 2009

Я не думаю, что linq будет ограничен языками Microsoft, проверьте это, уже есть что-то для php, проверьте это http://phplinq.codeplex.com/

Я думаю, что Linq - отличный инструмент в процессе разработки, и лично я был бы очень рад, если бы он был переведен на другие языки (как в моем примере с php)

1 голос
/ 01 августа 2009

Отказ от ответственности: я никогда не использовал LINQ. Пожалуйста, поправьте меня, если я ошибаюсь.

Многие языки имеют конструкции, которые допускают то же самое, что и LINQ с типами данных языка. Очевидно, наиболее интересной особенностью является то, что конструкции LINQ можно преобразовать в SQL, но это не относится к LINQ: http://www.aminus.org/blogs/index.php/2008/04/22/linq-in-python?blog=2.

0 голосов
/ 01 августа 2009

Для меня это звучит очень похоже на активную запись Руби, но я никогда не использовал LINQ. Кто-нибудь использовал оба? (Я бы опубликовал это в качестве комментария, но мне бы очень хотелось, чтобы ответ был обновлен - возможно, я ошибаюсь, поэтому за него проголосуют :))

(На самом деле я должен сказать, что AR похож на LINQ to SQL, насколько я знаю, они не реализовали AR для других целей)

0 голосов
/ 01 августа 2009

Я не думаю, что вы действительно можете классифицировать это (или многие вещи) как либо. Хотя я вряд ли скажу, что LINQ - это нишевый инструмент - у него много приложений для многих людей - это не «основополагающая» IMO. Тем не менее, я бы также не сказал, что наличие LINQ (или эквивалентного) языка запросов для конкретного языка может быть действительно фундаментальным на данном этапе игры. Возможно, в будущем, но прямо сейчас вы можете создать запрос многими различными способами, которые приведут к ЗНАЧИТЕЛЬНО меняющимся уровням производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...