LINQ: Почему это называется «синтаксис понимания» - PullRequest
20 голосов
/ 03 июня 2011

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

Ответы [ 5 ]

18 голосов
/ 03 июня 2011

Это происходит от более не зависящего от языка термина Понимание списка , за которым следуют многие языки.История, по-видимому, такова:

Язык программирования SETL (позднее 1960-х) имел конструкцию формирования множеств, а система компьютерной алгебры AXIOM (1973) имеет аналогичную конструкцию, которая обрабатывает потоки, но Первое использование термина «понимание» для таких конструкций было в описании Родом Берстоллом и Джоном Дарлингтоном их функционального языка программирования NPL с 1977 года.

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

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

Термин «понимание списка» появляется в ссылках ниже.

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

[«Руководство по ПР» Филип Уодлер, Квентин Миллер и Мартв Расковском, вероятно, 1983-1985].

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

5 голосов
/ 03 июня 2011

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

, чтобы принять или принять;включают;include

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

1 голос
/ 13 сентября 2014

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

0 голосов
/ 10 марта 2016

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

0 голосов
/ 25 июня 2014

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

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

...