C# 4.0…el futuro ya está aquí!

De nuevo desde el Convention Center de Los Ángeles, y después de la conmoción que ha despertado el lanzamiento de Microsoft Windows Azure, ahora le toca el turno a la nueva versión de C # (ya vamos por la 4.0) y a la conferencia que sobre esta nueva versión ha dado un genial Andres Hejlsberg (Technical fellow en Microsoft, uno de los padres de la criatura y arquitecto principal). Tras una pequeña introducción sobre la evolución de C #, y antes de dejar encandilada a la audiencia, Anders ha realizado un pequeño repaso de las tendencias actuales en cuanto a lenguajes de programación:

  • Programación más declarativa.
  • Programación dinámica.
  • Programación concurrente (multicore), ya que como todos sabéis, la tendencia actual (una vez que la ley de Moore podemos decir que se ha parado) es añadir más y más procesadores…¿Cómo construimos aplicaciones para este nuevo escenario en el que la concurrencia es necesaria? En plataforma .NET la respuesta la tenemos en las Parallel Extensions para .NET, que formarán parte de la nueva versión de Visual Studio (VS 2010) y de .NET Framework (4.0).

068 

Después de esta introducción, Anders pasó a detallarnos las principales novedades de C # 4.0. Estas son las que os resumo y detallo a continuación.

Programación Dinámica

Para ello,  C# tendrá una serie de características dinámicas que permitan esta programación dinámica:

  • Objetos tipados de manera dinámica. La clave estará en una nueva palabra clave que aparece en escena: dynamic.
  • Mejorada la interoperabilidad COM.
  • Optinal and named parameters.
  • Co-and Contra-Variance.

Tendremos un nuevo runtime para C# 4.0 que nos habilitará esta programación dinámica sobre la base de innovaciones ya existentes como los árboles de expresión y las expresiones lambda de C# 3.0, pero añadiendo nuevas innovaciones:

  • Dynamic trees.
  • Dynamic Dispatch invocer.
  • Call Site Caching.

Sobre este nuevo runtime, tendremos los lenguajes de programación tradicionales de .NET, C# y VB.NET, pero también lenguajes dinámicos como IronRuby y IronPhyton, y por supuesto cualquier otro lenguaje que cumpla la correspondiente CLS (Common Language Specification). Pero además, podremos hacer desde cualquier lenguaje comentado un binding con otro de los lenguajes, es decir, podremos llamar de manera sencilla código Phyton desde C# y utilizarlo. Tendremos bindings para .NET (Object), para JavaScript (Silverlight), para Phyton, Para Ruby y otros.

Las novedades al detalle

Como os comentaba,  a través de la palabra clave dynamic y otras innovaciones, C# 4.0 adquiere una dimensión dinámica que nos permite hacer conversiones dinámicas de tipos y hacer llamadas dinámicas a métodos:

069

Todas las características dinámicas de C# 4.0 vendrán en un nuevo ensamblado: System.Dynamic.

La segunda de las novedades con las que la audiencia se mostró gratamente sorprendido es la de los parámetros opcionales y nombrados. Lo mejor para entender esta novedad es ver un ejemplo (seguro que a más de uno le suena familiar).

public StreamBuilder OpenTextFile(

                        string path,

              Encoding encoding=null,

              Bool  DetectEncoding =true,

              Int BufferSize=1024)

 

Creo que las ventajas de usar este tipo de parámetros está claro. Finalmente, la tercera y última novedad que voy a comentar es la relativa a las mejoras en la interoperabilidad COM…y en este caso una imagen vale más que mil palabras para ver en que consiste esta novedad:

073

…y un gran final al más puro estilo Anders Hejlsberg

Como no podía ser de otra forma, para cerrar su intervención Anders nos dejó un gran regalo en sintonía con este día lleno de novedades en el PDC: se trata del Compiler as Service…es decir, Microsoft está trabajando en una nueva versión de su compilador para C#, pero con vistas a eliminar la caja negra modelada e implementada en C++ por otra mucha más abierta y que permita evaluar código de manera dinámica:

076

La idea de este nuevo compilador es abrir todo lo que tiene el compilador para poder embeber código C# en otros entornos dinámicos. Se trata de compilar directamente en código manejado. Y como prueba y cierre de la sesión, Anders nos hizo una demo espectacular de un prototipo de evaluador de C# capaz de entender e implementar de manera dinámica código C#.

078

Más información sobre C# 4.0 en la sección C# future de MSDN Code Gallery.

PDC 2008…Comenzamos!

Muy buenas tardes en España desde el Los Angeles Convention Center dónde desde hace un par de horas (aquí son las 10:30 de la mañana) se está desarrollando la Professional Developers Conference 2008, lleno de sorpresas y novedades como os iremos detallando. Está claro que el PDC 2008 ha generado una gran expectación a tenor de la afluencia masiva y de lo atrayente que es uno de los carteles que podemos encontrar en el South Hall del Convention Center:

001

Este cartel, situado justo al lado de la zona de inscripción ya nos daba unas primeras pistas de algunos de los contenidos, por no decir el núcleo central, del PDC 2008: escalabilidad en las aplicaciones, interoperabilidad entres sistemas, plataformas y programas de software, extensibilidad y piensa más allá de los límites que tradicionalmente hemos tenido en el desarrollo de software.

A eso de las 08:30 ha empezado el “show” con un keynote  dirigido por Ray Ozzie (Microsoft Chief Software Architect) y Bob Muglia (Senior Vice President en Microsoft). En este keynote Razy Ozzie nos ha hablado de que se avecina una nueva revolución en el desarrollo de aplicaciones desde la perspectiva de como se conciben, como se implementan y como se gestionan. A partir de aquí Ray Ozzie nos empezó a anticipar el núcleo central del keyonote, y en mi opinión del PDC 2008: los elementos que conforman la denominada estrategia de Software + Services (S+S) de Microsoft, o lo que es lo mismo,  cuáles van a ser los elementos claves para la construcción de la llamada 5ª generación de aplicaciones que se caracterizarán por residir en la nube (in the cloud).

En este sentido, Ray nos comentó que en esta nueva revolución tendremos aplicaciones en la nube, fácilmente gestionables y escalables gracias a la madurez de las tecnologías de virtualización (Microsoft Windows Hyper-V), construidas a partir de herramientas y tecnologías existentes y definiendo toda el núcleo base que permita desplegar fácilmente las aplicaciones en la nube…y este núcleo base del que hablaremos más adelante ha sido una de las grandes sorpresas del keynote: Windows Azure oo lo que es lo mismo el sistema operativo Microsft hosteado y residente en la red al más puro estilo Amazon EC2.

031

Windows Azure, cuya primera versión CTP (Community Technology Preview) será liberado a lo largo del del día de hoy se concibe como el núcleo de toda la plataforma de cloud computing de Microsoft pensado para facilitar la gestión y despliegue de aplicaciones en la red, evitando que los fabricantes de software se tengan que preocupar de aspectos clave como la seguridad, escalabilidad, o necesidad de almacenamiento gracias a que estará apoyado por un enorme datacenter ubicado en U.S.A inicialmente y que poco a poco se irá haciendo crecer a nivel mundial.

image