La consola de C#, Roslyn y Mono

En mis épocas de estudiante fui un gran entusiasta del software libre, pero siempre me gustó .NET como plataforma de desarrollo de software. Afortunadamente ambas cosas, inicialmente antagónicas, tienen un punto de convergencia: El Proyecto Mono.

Actualmente, en Folder IT los que trabajamos en .NET utilizamos tecnologías exclusivas de Microsoft, por lo que estamos obligados a usar Windows. Pero en el pasado tuve una oportunidad de desarrollar en Mono y Linux, y una de las cosas que más extraño (quizás la única) de aquella experiencia es la consola interactiva de C#.

En la consola podía probar cualquier cosa de manera rápida, tal como lo hacemos con Javascript en la consola del navegador, o con muchos otros lenguajes, como Python. Sólo bastaba con ejecutar el comando csharp en la consola de Linux.

csharp
Consola interactiva de C# en Linux con Mono.

Hay ciertas pequeñas cosas que utilizamos de seguido, pero no lo suficiente como para que se grabe definitivamente en nuestra memoria. En mi caso, esto sucede cada vez que tengo de formatear DateTime, por nombrar algún ejemplo. Por lo que de vez en cuando molestaba a alguno de mis compañeros que usaba Linux en la oficina para probar algo de manera rápida.

Siempre me pregunté por qué .NET no tenía esta herramienta tan útil. Lo mas cercano que se podía tener era la ventana Inmediate Windows de Visual Studio, pero con muchísimas limitaciones, que en realidad sirve como una consola de comandos para inspeccionar las variables cuando se esta debugeando, cosa que uno termina ocupando muy poco, teniendo algo mas gráfico como Quick Watch.

La razón de esta «ausencia» es nada menos que una limitación del compilador de .NET respecto su par de Mono. Mientras que el compilador de .NET solo tiene la capacidad de compilar código en modo batch, Mono tiene, además, el modo Compiler as a service, lo cual permite compilar pequeños fragmentos de código de manera parcial. Esto no solo da la posibilidad de tener un interprete interactivo, sino también poder utilizar el compilador en muchas otras herramientas de análisis de código y hasta en el mismísimo IDE, detectando mas que solo errores de sintaxis.

Roslyn al rescate

Roslyn es el codename del nuevo compilador libre (!) de .NET que está desarrollando Microsoft. Aunque todavía en etapa de prueba, ya está dando sus primeros frutos. Y es aquí donde volvemos al principio: gracias a Roslyn ahora podemos tener una consola interactiva de C# en Visual Studio.

roslyn
Consola interactiva de C# en Visual Studio 2012.

Solo basta con instalar la extensión de Roslyn para Visual Studio (primero hay que tener instalado el SDK de .NET 4.5) y listo.

Roslyn y un futuro prometedor

Sabiendo que Roslyn está escrito en C#, que es software libre y que Mono compila C# para muchísimas plataformas, es de esperar que en el corto plazo esté disponible para las principales plataformas. De hecho, en el acto en el que Microsoft hizo público el código fuente, mostró a Roslyn corriendo sobre Mac compilado con Mono y con el mismísimo Miguel De Icaza como co-presentador.

Miguel de Icaza, además de ser el genio creador de Mono (y muchos otros proyectos de software libre exitosos), es CEO de Xamarin, la empresa que llevó Mono a iOS y Android. Él mismo fue quien anunció que empezarán a utilizar Roslyn en Xamarin Studio y Monodevelop. Y siguiendo esta linea, es muy probable que SharpDevelop también lo termine utilizando.

Todo esto:

  • Gracias a Mono, .NET es multiplataforma hace muchísimo tiempo.
  • Microsoft ultimamente ha liberado tecnología de punta (lo hizo con ASP MVC y Web API, por ejemplo).
  • Microsoft patrocina y colabora en proyectos de software libre a travez de Codeplex.
  • Los proyectos .NET libres se multiplican gracias a GitHub y NuGet.

Hace que los que trabajamos todos los días con esta tecnología, nos entusiasmemos y veamos posible ver nuestro software ejecutandose mas allá de Windows.

UPDATE: El video de la presentación de Roslyn que está enlazado en el post es bastante largo (dura casi 3 horas), por lo que les dejo el tiempo en el que suceden los anuncios relacionados a lo que hablé.

  • 1:10:30 – Anders Hejlsberg (creador de Pascal, Delphi, C# y TypeScript, entre otros) comienza a hablar de Roslyn, hace una demo y libera el código fuente.
  • 1:18:50 – Miguel De Icaza hace una demo similar a la anterior pero en una aplicación iOS corriendo una versión de Roslyn compilada con Mono.
  • 1:23:00 – Presentación de .NET Foundation donde se muestran todas las tecnologías de Microsoft que son software libre y a las que sigue dando soporte en conjunto con otras empresas. Hice una captura del video.
net-fundation
.NET Foundation – Contribuciones de Microsoft al Software Libre.

Get in Touch