Simplificando la programación asíncrona

”Parallel our sights
And we will find, that we need to be where we belong
Parallel our heights
Display our rights and wrongs, and always keep it strong.”
(“Parallels”, Yes, 1977)

Después de un buen tiempo sin escribir, “rumiando” a cada rato contra la incorporación a C# del tipado dinámico y toda la parafernalia asociada, a los que sigo aún sin encontrarles la “razón de estar” (ciertos anuncios recientes parecen hasta darme la razón), la presentación de la nueva Async CTP durante la PDC 2010 ha venido a insuflarme espíritu y confianza en que no todo está perdido y quedan muchas cosas interesantes aún por venir en relación con mi lenguaje favorito. Pero el lector no debería hacerme mucho caso en lo relativo a dynamic: creo que desde hace algún tiempo me estoy haciendo conservador (aunque, pienso, sin traspasar aún la delgada línea que separa “conservador” de “reaccionario” ;-). Es algo que pensé que jamás podría ocurrirme a mí, educado en la falacia bajo el signo de la “revolución interminable”; probablemente cosas de la edad :-).

En cuanto a la recién publicada Async CTP, pienso que se trata de una propuesta excelente, que simplificará en gran medida la programación asíncrona, cuya complejidad de implementación con la versión actual de C# es alta, algo de lo que puede dar fe cualquiera que se haya enfrentado al desarrollo de una aplicación medianamente “concurrente”. A través de la introducción de dos nuevas palabras reservadas, async y await, la programación asíncrona en futuras versiones de C# se hará casi tan clara y natural como la síncrona, dejando al compilador la tarea de generar prácticamente todo el código de fontanería asociado al tratamiento de los callbacks y aprovechando al máximo las bondades que ofrece la Task Parallel Library (TPL) introducida en .NET 4.0.

Para descargar la CTP y acceder a una gran cantidad de documentación y ejemplos (incluyendo un vídeo introductorio de Anders Hejlsberg), visite http://msdn.microsoft.com/en-us/async.

NOTA: Las opiniones reflejadas en este artículo son mías propias, y no han sido revisadas ni aprobadas por la empresa en la que trabajo.


Pop/Rock tip: Para esta ocasión, he utilizado un tema de uno de los “padres” del rock progresivo, Yes; una banda que dura ya más de 40 años, durante los cuales, a pesar de los numerosos cambios de personal, ha sido capaz de mantener en todo momento un altísimo nivel interpretativo. Mis álbumes favoritos de Yes son los pertenecientes al primer ciclo de la banda, uno de cuyos máximos exponentes es “Going for the One” (1977); álbum al que pertenece el tema “Parallels”.

Octavio Hernandez

Desarrollador y consultor en tecnologías .NET. Microsoft C# MVP entre 2004 y 2010.

4 comentarios en “Simplificando la programación asíncrona

  1. Totalmente de acuerdo, en C# 4.0 Anders se plegó a las exigencias de los Orcos, pero ahora parece que los Elfos han vuelto a tomar el control 🙂

    Creo que async va a ser genial para hacer código WPF y Silverlight, no lo veo tan claro en el servidor.

    ¿Quien va a ser el primero en hacer un compilador js-async –> javascript?

  2. Ya era hora de leerte Octavio.
    Olmo, me interesa saber porqué no ves a async en el lado servidor, y pese a que contestes por aquí, no saldrás vivo de alguna sesión de MADNUG en la que coincidamos. 🙂

  3. Hola Octavio:

    ¡Que placer leerte de nuevo!

    A mí personalmente me da un poco de miedo este asunto. Sin duda facilita el uso de la programación asíncrona, pero por muchas capas de abstracción que pongamos (TPL, OpenMP, PPL o esta que comentas en tu blog), la programación asíncrona es un tema delicado y siempre lo será.

    Todas las abstracciones fugan, es una máxima que nunda debemo olvidar.

    Quizás mucha gente se acabe disparando en el pie con esta característica. Me temo que los deadlocks van a estar a la orden del día, igual que los excesivos cambios de contexto…

    Ya veremos lo que pasa.

    Un abrazo muy fuerte titán!!!

  4. @todos: Gracias por los comentarios!

    @Rodri: Gracias también por recordarme la “Law of Leaky Abstractions”, que no logro poner en primer plano en mi cerebro a pesar de que me “muerde” a cada rato!

    Abrazo – Octavio

Deja un comentario

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