jueves, 23 de septiembre de 2010

¿Ya sabes que es IronPython y IronRuby y como va la cosa?

irb-ipy-dotnetNuevos lenguajes emergen por todas partes. Lenguajes dinámicos como las implementaciones de Microsoft de Ruby (IronRuby), Python (IronPython) y PHP (Phalanger). Recientemente también se incluyó un lenguaje funcional denominado F#. Aunque habrá oído muchas cosas acerca de todos estos lenguajes y paradigmas de lenguajes nuevos, se preguntará qué significa todo eso.

Para comprender el tipo de cambios que representan los nuevos diseños, es necesario que entienda las diferencias entre los lenguajes tradicionales (como C# y Visual Basic) y los nuevos (como F#, IronPython e IronRuby). mirando tres temas principales:

  • Programación orientada a objetos (C# y Visual Basic)
  • Programación funcional (F#) y
  • Programación dinámica (IronPython e IronRuby).

La Programación orientada a objetos (POO) permite describir el mundo en términos de objetos y los contratos que vinculan las interacciones entre ellos.

La programación funcional trata el cálculo de programas como la evaluación de funciones matemáticas. La adición de dos números de manera conjunta es una función. Con dos valores de entrada, ejemplo 5 y 10, el valor 15 es la salida. Para solucionar un problema, el programador funcional descompone el problema en pequeños fragmentos que se pueden representar por funciones y, a continuación, éstas se pueden combinar para producir la salida.

me centraré en la programación dinámica que es el tema que toca.

La programación dinámica

La programación dinámica se hizo popular a mediados de los años 90 cuando las aplicaciones basadas en web eran el último grito. Perl y PHP eran dos lenguajes dinámicos que se usaban mucho en servidor para agregar elementos dinámicos e interactivos para los sitios web que dirigían. Desde entonces, los lenguajes dinámicos han ganado incluso más tracción, proporcionando una respuesta técnica a las nuevas metodologías de desarrollo de software como el desarrollo ágil.

Un lenguaje de programación dinámico se diferencia de uno estático (C# y Visual Basic .NET son lenguajes estáticos orientados a objetos) en el modo de compilación y ejecución del código de programa. Con los lenguajes dinámicos, la compilación de código se retrasa hasta la ejecución, cuando el programa ya se está ejecutando. En otros casos, el código sencillamente se interpreta. Estos retrasos en la compilación permiten que el código de programa incluya y ejecute comportamientos como extender objetos sobre la marcha y permitir al programador adaptar el tipo de sistema a voluntad.

De hecho, la compilación Just-in-time (JIT) y la técnica de ejecución que retrasa el proceso hasta el último segundo es lo que confiere eficacia y un conjunto enriquecido de características a los lenguajes dinámicos. Como resultado, a menudo nos referimos a los lenguajes dinámicos como enlazados ya que todas las acciones de enlace (como llamar a un método u obtener una propiedad) se realizan en tiempo de ejecución en lugar de en tiempo de compilación. Para ilustrar algunas de las características de los lenguajes dinámicos, analicemos IronPython e IronRuby.

Python

300px-Python_logo.svg Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.

Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y es multiplataforma.

Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License y que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.

Libros: http://www.espaciognulinux.com/2010/07/libros-para-aprender-python.html

IronPython

Es una implementación del intérprete de Python sobre en entorno de trabajo de .NET/Mono de forma que podemos compilar código Python a código intermedio CLI de entornos .NET/Mono  o .NET Framework con las ventajas que puede traernos esto en entornos Windows.

Su autor es Jim Hugunin, que empezó a trabajar en el prototipo original en su garaje. Seis meses después se unió a Microsoft y creó el compilador IronPython. Puede descargar el código de origen completo y el instalador para IronPython en go.microsoft.com/fwlink/?LinkId=112377.

cc507636.fig01(es-es)

IronRuby

es el nombre de la implementación de Microsoft del lenguaje de programación Ruby. John Lam es el hacker activo de Ruby que escribió el puente original de Ruby a CLR, denominado RubyCLR. Más tarde se unió a Microsoft para trabajar en el equipo IronRuby. Puede descargar el código fuente completo en ironruby.net.

Empecemos con IronPython y echemos un vistazo a una característica estupenda denominada Read Eval Print Loop (REPL). Un bucle REPL está diseñado para tomar una línea de código de entrada y ejecutarla. Realmente alardea de la naturaleza enlazada en tiempo de los lenguajes dinámicos como Python. La Figura 1 muestra el bucle REPL de línea de comandos de IronPython.

Microsoft jodiendo la vida. cambia la licencia de las implementaciones de Python y Ruby para .NET.

Como siempre Microsoft jodiendo la vida por otro lado!!!. Hasta la fecha ambos venían con la licencia MPL (Microsoft Permissive License) una licencia Open Source que permite ver, modificar, y redistribuir el código fuente para uso tanto personal como comercial. 
Pero… Ahora se ha decidido que la MPL va a ser cambiada por la licencia Apache v2.0 que permite al usuario del software la libertad de usarlo para cualquier propósito, modificarlo y distribuir versiones modificadas de ese software sin necesidad que las obras derivadas se distribuyan usando la misma licencia, ni siquiera que se tengan que distribuir como software libre/open source. La Licencia Apache sólo exige que se informe a los receptores que en la distribución se ha usado código con la Licencia Apache.
Todo parece apuntar que el cambio se debe a las presiones de los desarrolladores que trabajan normalmente en proyectos con IronPython y IronRuby.

IronPython y IronRuby podrían morir abandonados por Microsoft

Los últimos movimientos realizados al interior de Microsoft. ventilados por Jimmy Schementi en un artículo en su blog, donde anunció que hace un par de semanas se convirtió en el último empleado de tiempo completo pagado por Microsoft para trabajar en IronRuby.

Jimmy comenzó a buscar un nuevo empleo fuera de Microsoft cuando su jefe en turno le dijo, simplemente: “En qué más quieres trabajar además de Ruby.”

En el mismo artículo nos enteramos de que el equipo dedicado a IronRuby fue reducido a la mitad desde hace un año, y que en una situación muy similar se encuentra en IronPython. Naturalmente, debido a esas decisiones ambos proyectos vieron reducida la cantidad de aportaciones y su crecimiento en consecuencia también se ha limitado.

Lo curioso del asunto, es que a pesar de ser proyectos calificados como de fuente abierta, la verdad es que ambos proyectos están en crisis porque muy difícilmente pueden escapar de las garras de Microsoft. Algunos desarrolladores externos tiene una experiencia negativa contribuyendo a IronPython y IronRuby, como Jean-Baptiste Evain, de Novell, han mencionado que

Con Microsoft excluyendo desde el principio a la comunidad del desarrollo central, no hay conocimiento real de los aspectos internos de IronRuby fuera de Microsoft.

Para Evain, como para mí, si me permiten decirlo, la situación es “extremadamente decepcionante”. Microsoft, —-como Oracle con OpenSolaris y demás—- tendría que ofrecer alternativas para que comunidad que ha trabajado y contribuido a esos proyectos los pueda tomar como suyos para darles nueva vida. Al final del día será la misma comunidad quien deberá probarse si tiene la suficiente fuerza para sobrevivir de forma independiente sin esperar más de la empresa auspiciadora, quien en este caso, hay que decirlo, no hace sino cumplir con su papel.

Mono con soporte IronPython y DLR

Mono es un proyecto de código abierto creado por Ximian para crear un entorno de desarrollo multiplataforma compatible con Microsoft .NET Framework. El Proyecto Mono se puede desarrollar aplicaciones n capas (presentación, lógica de negocio y acceso a la base de datos)  sobre una plataforma Linux haciendo uso de formularios Windows, formularios Web y servicios Web.

Mono Incierto

BwCbM Mono está llevado por Novel principalmente ya que adquirió Ximian. Novel es uno de los socios de negocios de Microsoft. También el proyecto Mono fue creado por Miguel de Icaza, el mismo creador de GNOME, que de paso Microsoft lo nombró MVP.

Después de llamarlo un "traidor", ¿qué opinará Richard Stallman cuando se entere que finalmente Miguel de Icaza fué nominado como un Microsoft Most Valuable Professional (MVP) por sus aportes a C# durante todo el año pasado?

(Citando a Wikipedia): El MVP  es un premio otorgado por Microsoft a los líderes más activos en las comunidades técnicas como reconocimiento a su labor voluntaria en compartir su conocimientos y en proveer respuestas correctas y desinteresadas a preguntas técnicas sobre productos y tecnologías de Microsoft, en foros, blogs, grupos de noticias y comunidades públicas.


Fuentes:

http://msdn.microsoft.com/es-es/magazine/cc507636.aspx
http://www.linuxhispano.net/2010/03/18/ironpython-una-implementacion-de-python-para-mono-net/
http://www.desarrolloweb.com/de_interes/novedades-ironpython-ironruby-3757.html

0 comentarios:

Publicar un comentario