Подтвердить что ты не робот

LINQ: Почему это называется "Синтаксис понимания",

Почему следующий синтаксис LINQ (иногда называемый синтаксисом запроса), называемый синтаксисом "понимание"? Что понимается (конечно, что неправильно)? Или, что полно представлено (может быть, я на правильном пути, сейчас)?

4b9b3361

Ответ 1

Я подозреваю, что это связано со вторым значением Comprehend:

принять или принять; включают; включают в себя

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

Ответ 2

Он исходит из более языкового агностического термина List Consrehension, о котором идет речь на многих языках. История, по-видимому, такова:

Язык программирования SETL (в конце 1960-х годов) имел конструкцию формирования набора, а система компьютерной алгебры AXIOM (1973) имеет аналогичную конструкцию, которая обрабатывает потоки, но первое использование термина "понимание" для таких конструкций был в Rod Burstall и John Darlington описание их функционального языка программирования NPL с 1977 года.

FOLDOC в основном повторяет это:

Согласно примечанию Ришиюра Нихиля (август 1992 года), сам термин, по-видимому, был придуман Филом Вадлером около 1983-5 года, хотя сама конструкция программирования еще больше уходит назад (скорее всего, Джек Шварц и язык SETL).

В приведенных ниже ссылках появляется термин "понимание списка".

Самая ранняя ссылка на обозначение - в описании Род Берстал и Джона Дарлингтона на их языке, NPL.

[ "Руководство OL" Филипп Вадлер, Квентин Миллер и Мартин Расковский, вероятно, 1983-1985 годы.

[ "Как заменить неудачу списком успехов" FPCA Сентябрь 1985 г., Нанси, Франция, стр. 113-146].

Ответ 3

Я думаю, что эта статья может пролить свет http://dl.acm.org/citation.cfm?id=181564 Они спорят и определяют (я думаю), что такое синтаксис понимания. Он выпущен в 1994 году и, возможно, повлиял на концептуальные концепции LINQ.

Ответ 4

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

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

Ответ 5

Мое понимание термина linq comprehension синтаксиса как разработчика .NET заключается в том, что он позволяет вам писать linq на знакомом языке запросов стиля. По мере улучшения понимания человеком linq они могут перейти к тому, что известно в .NET как синтаксис метода расширения, а также то, как компилятор .NET будет интерпретировать linq во время компиляции.