query queries operator for curso c# linq syntax naming

c# - queries - LINQ: ¿Por qué se llama "Sintaxis de comprensión"



linq query in c# (5)

Creo que este documento puede arrojar luz http://dl.acm.org/citation.cfm?id=181564 decir, argumentan y definen (creo) qué es una sintaxis de comprensión. Se emitió en 1994 y tal vez afectó los conceptos de diseño de LINQ.

¿Por qué la siguiente sintaxis de LINQ (a veces llamada sintaxis de "consulta") se denomina sintaxis de "comprensión"? ¿Qué se está comprendiendo (seguramente eso está mal)? O, ¿qué se representa de manera exhaustiva (quizás ahora estoy en el camino correcto)?


Dado que el término "comprensión" y "completo" se usan muy a menudo en el idioma inglés para indicar "todo" y "completo", un significado de sintaxis de comprensión podría ser una sintaxis que permite generar expresiones que sean capaces de generar conjuntos de valores. que "incluya todos los valores" (comprenda) que respete las reglas expresadas por esas expresiones.

Otro significado podría estar más relacionado con la generación de subconjuntos de valores (listas) a partir de un conjunto específico y, por lo tanto, el subconjunto de valores que pertenece al conjunto inicial y está "comprendido" en el conjunto original. Por esa razón, la sintaxis de comprensión podría ser la sintaxis para las construcciones de los lenguajes de programación que pueden generar valores de subconjunto comprendidos en un conjunto original específico.


Mi comprensión del término sintaxis de comprensión de linq como desarrollador de .NET es que le permite escribir linq en un lenguaje de consulta de estilo familiar. A medida que la comprensión de linq de una persona mejora, puede pasar a lo que se conoce en .NET como sintaxis de método de extensión, que es también la forma en que el compilador .NET interpretará a linq en el momento de la compilación.


Sospecho que esto está relacionado con el segundo significado de Comprehend :

tomar o abrazar; incluir; comprender

Esta sintaxis tiene que ver con la definición de lo que debe incluirse en un conjunto.


Viene del término más agnóstico a los idiomas, en.wikipedia.org/wiki/List_comprehension que sigue a muchos idiomas. La historia aparentemente es:

El lenguaje de programación SETL (a finales de la década de 1960) tenía una construcción de formación de conjuntos, y el sistema de álgebra computacional AXIOM (1973) tiene una construcción similar que procesa flujos, pero el primer uso del término "comprensión" para tales construcciones fue en Rod Burstall y John. La descripción de Darlington de su lenguaje de programación funcional NPL desde 1977.

FOLDOC su mayoría se hace eco de esto también:

Según una nota de Rishiyur Nikhil, (agosto de 1992), el término en sí parece haber sido acuñado por Phil Wadler alrededor de 1983-5, aunque la estructura de programación en sí se remonta mucho más (probablemente Jack Schwartz y el lenguaje SETL).

El término "comprensión de lista" aparece en las referencias a continuación.

La referencia más temprana a la notación se encuentra en la descripción de su lenguaje, Rod Burstall y John Darlington, NPL.

["El Manual OL" Philip Wadler, Quentin Miller y Martin Raskovsky, probablemente 1983-1985].

["Cómo reemplazar el fracaso por una lista de éxitos" FPCA, septiembre de 1985, Nancy, Francia, págs. 113-146].