Learning Linq I

C-omega fue un proyecto de investigación en microsoft que extendió el lenguaje C# en los siguientes puntos:

  • una extensión para controlar el flujo de la concurrencia asincronica, esto fue conocido como Polyphonic C#.
  • una extensión de tipo de dato para la manipulación de xml y bases de datos, esto fue conocido como X#.

C-omega fue concebido para experimentar con consultas integradas revolviendo C#, Sql y Xquery. C-omega añadió muchas características donde alguna de ellas son similares en C# 3.0 y VB.NET 9.0. este conocimiento pronto se hizo estable y se decidió añadir a C#.

Al momento de desarrollar aplicaciones que hacen uso de una base de datos existe un hueco entre tu lenguaje de programación y la base de datos. existen excelentes desarrollos que proporcionan bases de datos orientadas a objetos las cuales siguen muy de cerca las plataformas orientadas a objetos. al día de hoy las bases de datos relacionales son muy usadas para casi cualquier cosa por lo que hay que seguir peleando con el acceso a los datos y la persistencia en todos tus programas.

con Linq se simplifica la interacción entre objetos y la fuente de datos. Linq define un lenguaje integrado para consultas como una caja de herramientas. esta caja de herramientas puede ser usada para accesar a datos que provengan de objetos en memoria, bases de datos, xml, sistemas de archivos o cualquier otra fuente de datos.

Linq permite acceder a la información escribiendo consultas a diferentes fuente de datos y proporciona el mismo tipo de expresiones que SQL ofrece, la diferencia es que esto va integrando en tu lenguaje de programación.

¿Porque habríamos de necesitar Linq?

Al inicio del proyecto Linq la cuestión fue muy sencilla: la vasta mayoría de aplicaciones que son y están siendo desarrolladas acceden a una base de datos, entonces para poder desarrollar tu aplicación no solo basta con aprender un lenguaje como C#, Perl, Python,Java….el que gustes y mandes!!!!, es necesario aprender otro lenguaje como SQL y por consecuencia las Apis para trabajar con el acceso y tratamiento de los datos para finalmente desarrollar tu aplicación completa.

Problemas Comunes

El problema con la api de ado.net es que forza al desarrollador a trabajar con tablas, registros y columnas..mientras que lenguajes como Java y C# usan paradigmas orientado a objetos. al día de hoy el paradigma orientado a objetos es en la mayoria de los casos el modelo que prevalece en el desarrollo de software por lo que los desarrolladores incurren a diversas técnicas para mapear a diferentes abstracciones como bases de datos relacionales, xml(lo cual en el proximo post describire mas a detalle). el resultado es que mucho tiempo es empleado en escribir código de plomeria y se estima que al desarrollar las tareas de almacenar, recuperar objetos desde y hacia una fuente de datos esta ente el 30 y 40 por ciento del tiempo total del desarrollo de software.

No solo es cuestión de productividad, también impacta en la calidad. escribir código de plomeria puede acarrear efectos no deseados o degradar el rendimiento.

veremos como Linq viene al rescate….primero veremos como trabajar con linq hacia objetos.

Linq hacia Objetos

es mejor si iniciamos con un ejemplo que vamos a compilar con Mono, solo recuerda que necesitas la ultima versión de Mono y C# o bien obtenerla desde SVN.

using System;
using System.Linq;

public class HelloLinq {
 public static void Main(string[] args)
 {
    //declare array names variable to save some funny names
    private string[] names =
                     {"glibero","alberto caras fierro","alma madero benitez","fsharp"};      

    //using a simple Linq to object
    var shortnames = from shortname in names where shortname.Length <=9 select shortname;
     
    //print all values <= 9
    foreach(var shortname in shortnames)
      Console.WriteLine("short name:{0}",shortname);
 }
}

para compilar solo ejecutamos lo siguiente:

$ smcs ejemploLinq.cs

$ mono ejemploLinq.exe

esto debe arrojar la siguiente salida:

glibero

fsharp

basicament el script smcs ejecuta el compilador smcs.exe de esta forma:

/usr/bin/mono $MONO_OPTIONS –runtime=moonlight –security=temporary-smcs-hack /usr/lib/mono/2.1/smcs.exe “$@”

😉

About Jacob

I'm a Bioinformatics Developer, Software Engineer, Open Source Developer, Mobile Developer, Unix/Linux SysAdmin, HPC Sysadmin

One thought on “Learning Linq I

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s