Proyecto Mono

Proyecto Mono
Información sobre la plantilla
Proyecto mono.jpg
Última versión estable2.8.2, 7 de enero de 2011
GéneroLenguaje de programación
Sistemas Operativos compatiblesMultiplataforma
LicenciaGPL, LGPL y MIT
Sitio web
Mono-project

Proyecto Mono. Proyecto propuesto por Miguel de Icaza para crear un entorno de desarrollo y producción utilizando alguna de las tecnologías propuestas en la arquitectura .NET.

Bases del proyecto

Básicamente el proyecto Mono ha comenzando con un compilador de C#. La idea inicial es explorar hasta que punto el lenguaje C# y la arquitectura propuesta para su máquina virtual (VM) puede ser una opción que mejore las condiciones de producción de los desarrolladores de software libre. Como lenguaje de programación, C# recuerda mucho al lenguaje Java.

Interés en la comunidad de desarrolladores

Hay varios factores que han hecho que C# genere un interés en la comunidad de desarrolladores:

Estandarización

La primera es que las especificaciones del lenguaje están siendo estandarizadas por la European Computer Manufacturers Association (ECMA) desde el principio. Esta ya es un hecho excepcional viniendo de Microsoft.

Clases

Otra parte interesante de usar C# es el conjunto de clases que lleva asociado. La idea es que este conjunto de clases permita realizar cualquier tipo de programación. La parte innovadora es que estas clases, y en general el uso de librerías, está también normalizado, de modo que estas pueden ser utilizadas por otros lenguajes. Para que estas librerías puedan ser utilizadas, estos lenguajes tienen que tener compiladores que generen CLI.

Gestión y recolección de memoria

Además, C# tiene una gestión y recolección de memoria no usada que le hace muy interesante. Realmente esta opción esta implementada en la máquina virtual que ejecuta el código CLI generado.

Compilador

El compilador de C# del proyecto ha sido desarrollado en C#. De las múltiples alternativas para realizar el compilador se ha elegido ésta por razones "educativas". Desarrollar un compilador es un ejercicio de programación complicado y hacerlo en el lenguaje que se esté implementando hace que se descubra todo el potencial que tiene dicho lenguaje.

Existen otros proyectos libres interesados en la creación de un compilador de C#, pero no ha habido una convergencia por disparidad de criterios o herramientas utilizadas.

Implementación de otros lenguajes

Aunque C# va a ser el primer lenguaje soportado por el compilador del proyecto Mono, ya se están implementando otros lenguajes como VB Object. No esta previsto de momento el soporte de otros lenguajes en el compilador, pero la arquitectura actual de Mono permite con bastante facilidad que se puedan integrar otros lenguajes gestionados como Python .NET o Perl.NET.

Áreas de la primera fase del proyecto

En la primera fase del proyecto Mono se está trabajando en tres áreas:

Compilador C#

Solo existe un compilador completo de C# desarrollado por Microsoft para Windows. El compilador de C# esta a un 50% y esta desarrollado en C#. La idea era hacerlo en C# para aprender a programar y conocer al 100% el lenguaje.

Al parchear el código, este es capaz de verificar la sintaxis y generar el 95% de los árboles de código. La idea es que genere CLI y código C. Cuando esté terminado se compilara con el compilador de C# y generará su propio código fuente en CLI y C, haciéndolo transportable a otros sistemas.

Programas compilados

Actualmente esta compilando programas sencillos estilo: impresión de "hello world", cálculo de series de fibonucci o creación de una ventana basada en las GTK. No solo compila estos códigos sino que además genera ejecutables que son correctamente interpretados por el JIT de Mono y el de MS.

Clase de librerías C#

Esta es la base fundamental del lenguaje C#. Realmente C# como lenguaje no es más que otro lenguaje. Lo que hace realmente potente a C# y todos los lenguajes que utilicen la arquitectura .NET son las bibliotecas de clases que pueden ser utilizadas por cualquier lenguaje. Dentro del proyecto Mono ya están implementadas más del 50% de las clases.

Máquina Virtual

La máquina virtual que ejecute CLI es la parte clave del proyecto. Si se consigue que funcione óptimamente y que cualquier lenguaje pueda generar CLI, se puede estar ante la solución a los problemas de portabilidad e integración entre lenguajes.

En el diseño del Common Language Runtime (CLR), se esta teniendo en cuenta la portabilidad desde el comienzo del diseño. Esto permitirá que funcione bajo otros sistemas operativos sin demasiados esfuerzos.

Conclusiones

El proyecto Mono pretende convertirse en la opción libre a la arquitectura .NET de Microsoft. Pero esto genera muchas cuestiones en la comunidad: ¿Debe existir una opción libre que soporte las virtudes de .NET?, ¿se esta apoyando a Microsoft y su iniciativa?, ¿se están perdiendo recursos implementando Mono?, ¿volverá Microsoft a utilizar la estrategia de primero ayudar y luego ahogar a sus acompañantes de viaje?.

Hay demasiadas buenas ideas que no se deben desaprovechar aunque vengan del departamento de ingeniería de Microsoft. Microsoft no va a solucionar los problemas, ni mejorar las condiciones de programación y desarrollo del software libre. Luego, haga lo que haga, solo las iniciativas libres van a beneficiar con toda seguridad.

Fuentes