Насколько уникальный LINQ?

NSMutableArray *viewController = [NSMutableArray arrayWithArray:[navController viewControllers]];
[viewController replaceObjectAtIndex:1 withObject:replacementController];
[navController setViewControllers:viewController];

См. ссылку на класс UINavigationController для получения дополнительной информации.

9
задан andy 5 June 2009 в 01:21
поделиться

8 ответов

Идея языкового интегрированного запроса не нова, способ, которым MS выразился, уникален и нов. . На него влияют синтаксис Haskell и SQL, у Haskell была идея счетчиков и ленивых вычислений, которые являются основным принципом подчеркивания при реализации LINQ, на самом деле LINQ - это просто синтаксический сахар.

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

7
ответ дан 4 December 2019 в 09:38
поделиться

Я думаю, что LINQ очень интересен.

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

Также интересно, что Microsoft не пришлось менять среду выполнения, чтобы сделать LINQ работает, все волшебство происходит из-за новых языковых функций в C # 3, в компиляторе и в библиотеке классов - потому что, по сути, ваши запросы внутренне переводятся на синтаксис лямбда (см. LINQPad для хорошей демонстрации этого)

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

2
ответ дан 4 December 2019 в 09:38
поделиться

Если говорить о запросах к коллекциям в памяти, нет, это не уникальная функция. Возьмем, к примеру, оператор прямого канала в F #. Он позволяет писать операции, очень похожие на стиль запроса linq.

Возьмем, к примеру, следующий код, который извлекает цифры из строки и суммирует их

"foobar42".ToCharArray() 
  |> Seq.filter System.Char.IsDigit 
  |> Seq.map (fun x -> x.ToString() ) 
  |> Seq.map System.Int32.Parse 
  |> Seq.sum
3
ответ дан 4 December 2019 в 09:38
поделиться

Я думаю, что все это начал с LINQ.NET. В настоящее время существует несколько других реализаций: http://en.wikipedia.org/wiki/Linq#Other_language_implementations , но MS LINQ был первым, если я правильно помню.

2
ответ дан 4 December 2019 в 09:38
поделиться

В Microsoft очень похожий синтаксис был разработан в C-omega ( Cw) до того, как он был принят в C # и VB.

2
ответ дан 4 December 2019 в 09:38
поделиться

Концепции в Linq (Where, Select, Aggregate) были в LISP лет , и это совсем не ново. Однако реализация на C # особенно элегантна, особенно как ей удается добавить довольно разрушительную концепцию, но при этом так хорошо сочетается с существующим кодом C # 2.0. «Переинтерпретировать Linq AST как SQL» тоже чертовски умно.

2
ответ дан 4 December 2019 в 09:38
поделиться

Эта идея «Интегрированных языковых запросов» нова? а если нет, то какие еще языки реализуют подобную функцию

Если вы считаете sql языком, то нет. Я думаю, что понимание MS заключалось в том, что все в массиве, таком как контейнер, по сути, является базой данных в памяти. Не только это, но многие операции над этими коллекциями одинаковы. Программисты должны написать миллионы .selects, .wheres и .first в течение года. Многие из этих реализаций имеют временные массивы и переменные, которые загромождают код. В LINQ логика становится намного более лаконичной, без переменных / массивов temp / holder. MS уничтожила целый класс ошибок с помощью стандартных операторов LINQ.

Чем отличаются другие реализации от Microsoft? Не уверен

Это немного субъективно, но насколько важен LINQ как идея для других?

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

2
ответ дан 4 December 2019 в 09:38
поделиться

Linq имеет прямое отношение к пониманиям списков , которые вы можете найти в функциональных языках и в более распространенных языках, таких как Python, где это стандартная и очень широко используемая функция для довольно давно.

В качестве хорошего примера понимания списков, эта функция Python взята из простой проверки орфографии Питера Норвига

def edits1(word):
   s = [(word[:i], word[i:]) for i in range(len(word) + 1)]
   deletes    = [a + b[1:] for a, b in s if b]
   transposes = [a + b[1] + b[0] + b[2:] for a, b in s if len(b)>1]
   replaces   = [a + c + b[1:] for a, b in s for c in alphabet if b]
   inserts    = [a + c + b     for a, b in s for c in alphabet]
   return set(deletes + transposes + replaces + inserts)

. Она очень похожа на Linq с (неявным) выбором написано в начале выражения, а не в конце, как в Linq.

лямбда-выражения несколько осуждаются в Python, а понимание списков по умолчанию в Python нетерпеливо (подумайте List ) вместо ленивого ( IEnumerable ), но это очень близко.

Что касается концепции наличия (в некоторой степени) чистой цепочки функций,как и другие люди здесь ответили, это одна из старейших концепций в компьютерных языках (Лиспу уже за 50 ...)

2
ответ дан 4 December 2019 в 09:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: