martes, julio 13, 2010

Introducción a LINQ (Language Integrated Query)

Vamos a dividir esta serie de artículos en 3 partes:

1. Arquitectura e implementación

2. Ejecución (LINQ to Objects)

3. Operadores avanzados y expresiones

Breve Historia de LINQ

Para comenzar hablemos un poco de historia. Los conceptos de LINQ se originan en lenguajes de programación funcional como Haskell, que se basa en el cálculo lambda (otros lenguajes funcionales conocidos son LISP, APL, Erlang, ML y Scheme). Podemos decir que los lenguajes imperativos como C# o VB procesan las acciones para realizar una tarea en una serie de pasos, en lugar de ejecutar una secuencia de pasos los lenguajes funcionales evalúan expresiones. En estos lenguajes el desarrollador especifica lo que debe realizar el programa no como debe hacerlo.

Por ejemplo SQL es un lenguaje de consultas que emula a un lenguaje funcional, una sentencia SQL define las tuplas que se quieren obtener o actualizar, y el motor de base de datos decide como realizar las tareas solicitadas.

El cálculo lambda es una aproximación matemática formal para definición de función, aplicación y recursión, y es referido en Haskell y otros lenguajes funcionales como funciones lambda. Haskell y otros lenguajes funcionales manejan conceptos como funciones, closures, inferencia de tipos, lazy evaluation, monads (un método flexible para combinar operaciones I/O con lazy evaluation). En el Microsoft Research se trabajó en lenguajes experimentales como X#, Xen y finalmente CѠ ( c-omega). El objetivo de este lenguaje era reducir el ROX (Relational-to-Objects-to-XML) impedance mismatch agregando conceptos y operadores del dominio relacional y XML como una extensión a C#. Microsoft libero una versión preliminar del compilador de CѠ a mediados del 2004.

Algunos miembros del equipo de X#/Xen/CѠ se unieron al grupo que trabajo en LINQ ,en el cual Anders Helsberg (Arquitecto de Pascal, Delphi, J++, C#) quería añadir “operadores de secuencia” a C# para que los desarrolladores los aplicaran a colecciones que implementaran el tipo genérico IEnumerable<T> . Erick Meijer, uno de los diseñadores de Haskel98 y llamado creador de LINQ, comenzó a hacer propaganda sobre el presente y futuro de las versiones de LINQ en algunas conferencias técnicas.

La primera versión preliminar salió en septiembre de 2005 durante el PDC 2005. En septiembre de 2006 se lanzo la CTP. y en la versión CTP de enero de 2007 de VS2008 (orcas) se incluyó un add-on para el compilador de Visual Studio. La versión RTM de VS2008 no incluyó significantes cambios a LINQ. La versión final de Visual Studio 2008 SP1 incluyo la versión 3.5 del .Net Framework con soporte para EF, EDM y LINQ en Agosto de 2008.

No hay comentarios.:

Publicar un comentario