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 Anders 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.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

17 comentarios en “C# 4.0…el futuro ya está aquí!”

  1. Hola Juan Carlos!

    Es una pena que los que lleváis (al parecer, claro) toda la vida anclados en lenguajes y entornos de desarrollo Microsoft, no hayáis tenido la oportunidad de disfrutar de todo lo que el grandísimo Anders Hejlsberg ha hecho por los desarrolladores, desde los tiempos de Turbo Pascal y pasando por el que, personalmente, sigo considerando el mejor lenguaje (y entorno!) para programar en Win32: Delphi. Sí, durante mucho tiempo fui “Borlander” y renegaba de Microsoft casi tanto como lo haría hoy un “taliban linuxero”.

    Delphi es hoy en dia un muerto viviente, un lenguaje sin evolucionar y totalmente obsoleto (ahí se ve la contribución que tuvo Anders en Borland hasta que se fue en 1996). SIN EMBARGO… fijate lo que son las cosas, esa “novedad revolucionaria” de C# 4.0 que son los parámetros opcionales, los que trabajamos con Delphi llevamos disfrutándolo (y sacándole partido) desde hace ya muchos años… 😉

    Que por cierto, más que una novedad revolucionaria, visto friamente, es una simple sobrecarga de métodos. Y de hecho yo ya lo “apaño” actualmente en mis programas C# 😉

  2. Buenas,
    Andrechi, está claro que tanto cambio da vértigo….pero si ves las demos que ha hecho Anders entenderás que tienen su lógica y que no vienen dados por que sí, sino porque alguien ha pensado que son necesarios.

    PabloNetrix, no conozco Delphi y no tengo la experiencia que tienes (ya me gustaría tenerla), pero está claro que en el mundo del software pasa como con la economía, tenemos círculos y siempre volvemos a rescatar cosas del pasado.

    Un saludo

    JC’s

  3. Coincido con Juan Carlos, es muy bonito sacar una versíon nueva cada dos años cuando puedes dedicarte sólo a una especialidad, pero la mayoría de nosotros tenemos que estar al dia de las novedades en el windows Server, Sql Server y visual studio .net como poco.

    Y aparte de las novedades mantener los aplicativos existentes, por lo que acabamos necesitando dias de 36 horas y no tener vida social.
    No necesitamos tantas novedades, necesitamos que mejoren lo existente sin revolucionar la ciencia cada año

  4. Colegas… con esa mentalidad todavía habría “modelos T” en las calles.
    Los problemas de mantener código legado mal desarrollado son de mala educación y/o administración.
    Los cambios introducidos a C# son mejoras que nos facilitarán la vida a todos vía simplificación. Me adhiero totalmente a la filosofía de concentrarse en el “que” hay que hacer (originado en el análisis del problema) más que el “cómo” (mucho de lo cual se puede automatizar).
    Se los dice alguien que todavía de vez en cuando tiene que volver al mundo pre-generics, pre-linq e incluso pre-oop.

  5. Los que seguimos la evolución de C# un poco día a día vemos con cierto interés estas mejoras del lenguaje, pero me imagino que alguien que llegue nuevo le puede explotar la cabeza con los lambdas, genericos, linq, etc…

    Yo hecho de menos que no se preocupen un poco más por mejorar el rendimiento del lenguaje. Es posible conseguir rendimientos parecidos a los que se consigue con aplicaciones escritas en C, pero los desarrolladores de C# han descuidado ese aspecto.

  6. Asu, tan rapido y yo recien me certifique en web 2.0 T_T , jeje pero esta bien ahi mas cosas pa investigar , pero ahora toy trabajando con java oracle , tmles quisiera que hubieran dias de 48 horas

  7. Yo ya tengo 43 años.. edad, que hace unos 10, me dijeron que no era opcional seguir programando.. pensar, en una persona mayor de 40 años, desarrollando, era una tonteria (creen que el oficio de desarrollador es para crios) y aqui estoy.. disfrutando de .NET y de sus mejoras año a año.. si, que me repatina un poco lo de sacar una version cada vez.. deberian de buscar una opcion escalar que permita seguir progresando en un lenguaje, sin necesidad de cambios bruscos (por parte de la empresa, la cuala, reniega optar por cambiar a nueva version, refactorizando el codigo, cuando hay dinero por medio)… asi, que vamos hacia delante.. y a lo que nos suelten… los de +40 años, nos sentimos jovenes ante tantas novedades :o))

  8. Pensad también en la competitividad entre profesionales. Cada vez hay más desarrolladores y mejor preparados. Que la tecnología evolucione es una oportunidad de diferenciación.

    Saludos

  9. Veo esos cambios como algo natural, incluso, pienso que deberían haberse efectuado antes. Pero a uno siempre le queda la sospecha del marketing. Me llama mucho la atención cómo es que los lenguajes dinámico han ganado terreno, que ha sido tanto, que han logrado tomar protagonismo dentro de grandes tecnologías como Java y .NET.
    Tal parece que la moda es lo dinámico y lo MVC y a la altura de esa moda hay que estar. ¿Es solo moda? No lo creo.
    Me gustaría ver en clases a mis profesores que antaño defendían a capa y espada los lenguajes con un fuerte chequeo estático de tipos.
    Para mi hay una cosa clara, es como un teorema, si existe un mecanismo de reflection, ¿por qué no va a existir tipado dinámico? Es como hacer la reflexión más cómoda.
    En lo que si pienso que hay que estar más alerta es a las buenas prácticas de programación, mientras más dinámico sea el entorno menos nos podrá ayudar una herramienta no solo a señalar/corregir nuestros errores, sino a manipular el código de los programas (puede entenderse refractoring).
    Alguien decía más arriba que en lugar de andar mejorando el lenguaje deberían mejorar otros aspectos de mayor impacto. Creo tiene algo de razón, me da la impresión que a la plataforma .NET le falta cosas. Soy apenas un crio, pero veo en el mundo Java un montón de estandares y frameworks y bibliotecas, lo cual seria deseable que existiesen sus equivalentes en .NET, que ya no es tan nuevo y ha tenido su tiempo.

  10. Muy buenas Aria,
    Completamente de acuerdo contigo, excelente reflexión la que planteas…y está claro que .NET tiene sus carencias, pero que poco a poco las va llenando.

    Un saludo

    JC’s

  11. Llegué un poco tarde a este post.
    Me parece que lo más significativo es la posibilidad de programar paralelo. C# 4.0 incluye PLINQ (LINQ paralelo) y las extensiones de paralelismo. Muy bueno!

    Hace un par de días atrás, adquirí un libro muy bueno que incluye muy buena información sobre la versión actual y la 4.0 (2010) de C# para paralelismo y sobre LINQ y PLINQ: “C# 2008 AND 2005 THREADED PROGRAMMING” de GASTON C. HILLAR, publicada por PACKT PUBLISHING LTD (Editorial inglesa de muy buenos libros, pero un poco caros…).
    Igual, recomendado, pues, hay que mantener el trabajo y mostrando mejores tiempos para algunos procesos, es una buena técnica para convencer a otros que estamos haciendo algo productivo 🙂
    En el hipervínculo hay un capítulo para descargar y código
    http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book

  12. Buenas Federico,
    Todo es significativo, espero este año volver a escribir sobre el tema…creo que tendré oportunidad de probar todo lo nuevo de C# 4.0.

    Un saludo

    JC’s

  13. La evolucion desordena de caracteristicas que luego son abandonadas son algo normal en Microsoft. Tengo mucho tiempo de trabajar con microsoft y algo de lo que lamento es como destrozan el capital humano, dejando abandonas tecnologias que ha tomado tiempo asimilarlas.

    Por eso estoy con Java mucho mas estable y maduro, y en el cual no se agregan caracteristicas a la ligera, y se trata de no crear cambios tan drasticos.

  14. Que tal, actualmente desarrollo para una empresa transnacional, en la cual aun usamos el Framework 2.0, es una pena que microsoft no piense en los elevados costos que implica capacitar a los desarrolladores en estas “nuevas tecnologias”, el proceso de migracion se ve reflejado en un retrazo en una entrega, es facil actualizarce cuando tienes tiempolibre, pero cuando estas en un proyecto de millones????

  15. Mi opinion al respecto es que nadie ha dicho que haya que migrar a nuevas tecnologias cada vez que salga una. Eso tiene un costo y sobre todo si el sistema que esta implantado es rentable y da ganancias entonces no hay que salir corriendo hacia el proximo. Claro, para eso estan las versiones y por tanto eso conlleva una inversion, preparacion del personal o incorporacion de personal nuevo etc.
    El asunto es que el desarrollo no tiene porque detenerse. Todos los anhos se incorporan nuevos informaticos que ya vienen con la base del conocimiento de las nuevas tecnologias y son los que llevaran el peso del desarrollo en lo adelante. Los que estamos desde hace tiempo en esta esfera tenemos dos caminos o nos sumamos o nos quedamos. En resumen que la velocidad del desarrollo de estas tecnologias vienen orientadas a los que llegan nuevos.
    Y esto me parece muy bien.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *