sábado, 17 de abril de 2010

IronPython y SharpDevelop, en español.


Hola. En este post vamos a hablar un poco del hermano de Python (ó CPython) para la plataforma de desarrollo de Microsoft .NET, IronPython.


Como he comentado a lo largo de la vida de este blog, alguien que se quiera dedicar a esta bendita profesión no puede estar ajeno a las combulsiones que se originan en este mundo. Si alguien no se había enterado (que creo que no) Microsoft ha lanzado una nueva versión de su archiconocido Visual Studio, versión 2010, junto con la plataforma de desarrollo Framework .NET 4.0. Según parece en esta versión se le empieza a dar una mayor importancia a lenguajes dinámicos, como IronPython. Y es por ello que me he decicido a investigar este territorio, tan inóspito para mí. Y es que aprender nunca pasa de moda.

Decir que IronPython es un lenguaje creado por Microsoft, aunque no hay que pagar ningún tipo de licencia. IronPython es una implementación de CPython (ó Python) escrita en C#.

También he leído (que no probado) que IronPython funciona con la plataforma Mono.

IronPython está ligado a la plataforma .NET en la cual nos encontremos, dándole soporte en su versión 2, y ahora con más fuerza en la versión 4. No es objetivo de este post describir la historia ni características de IronPython en profundidad (¡para eso he puesto los links!).

¿Para qué sirve IronPython? Para trabajar con la plataforma .NET ó Mono, en sistemas Windows. De esta manera nos beneficiamos y aprovechamos de las bondades de este Framework específico, en esta plataforma tan extendida. Es decir, accedemos a .NET, sus espacio de nombres (namespaces), que vendrían a ser como nuestros módulos en Python, y por supuesto a sus clases ya escritas, con un enorme conjunto de implementaciones. Muy interesante.

¿Dónde obtener IronPython? Desde su página web. Aquí la cuestión reside en qué versión instalar. Ahora se encuentra por la 2.6.1. ¿Y la versión del Framework .NET? Podemos descargarnos IronPython 2.6.1 para .NET 2.0 SP1 ó IronPython para .NET 4. Si nos instalamos esta última versión necesitaremos el Framework .NET 4.

Más información sobre descargas en http://ironpython.codeplex.com/releases/view/36280.

Yo me he instalado la versión para .NET 2.0.

Bueno, ya tenemos instalado IronPython... ¿y ahora qué? ¿Por donde empiezo?

Puesto que IronPython está creado para trabajar con .NET y en entornos Windows tiene que haber un IDE con entorno de desarrollo gráfico para poder hacer aplicaciones de escritorio Windows. Es más, hay más de una herramienta. Aquí vamos a ver dos, una gratuita y otra gratuita y de Microsoft (¿una sonrisa?).

SHARPDEVELOP PARA IRONPYTHON

SharpDevelop es un RAD gratuito, (no hay que pagar nada para su uso) para escribir desarrollos para .NET con diversos lenguajes, como Boo (muy parecido a Python, opción interesante), C# ó Visual Basic.


Ahora también soporta IronPython, como podemos ver estas notas sobre las versiones del producto:


Podemos bajarnos la última versión desde http://www.icsharpcode.net/OpenSource/SD/Download/#SharpDevelop3x. Nos lo bajamos, lo instalamos y seguimos.

NOTA IMPORTANTE: Decir que utilizar C# para programar es gratuito, esto es, no hace falta pagar nada para programar con C# y .NET. Podemos utilizar SharpDevelop con la plataforma .NET y el lenguaje que deseemos y no tenemos que pagar ninguna licencia (bajarnos el compilador csc de C# y el framework .NET de la página de Microsoft es gratuito). Ahora bien, si en vez de utilizar SharDevelop usamos otros de pago, como Visual Studio, tenemos que pagar justamente la licencia de este paquete de software (aunque como veremos para IronPython esto no es del todo así). Es importante notar la diferencia.

Una vez descargado e instalado, y supuesto tenemos instalado IronPython, vamos a crear nuestra primera aplicación que visualice "Hola El Viaje del Navegante". Ejecutamos SharpDevelop. Creamos una nueva solución.


Incluimos el nombre del proyecto que queramos y click en botón Crear. A continuación SharDevelop nos crea el código para nuestra primera ventana Windows, de manera automática, tal y como estamos acostumbrados en otros RAD, como puede ser Visual Studio.

Si nos fijamos en el código podemos observar que IronPython trata los namespaces de .NET como módulos (al cual estamos acostumbrados). Y aquí reside el potencial de IronPython. Si vemos el código podemos entender perfectamente lo que hace. En el __init__ inicializa la clase ventana. Para ello utiliza el método que está mas abajo. ¡Más fácil imposible!

¿Qué hace este código? Crea una ventana Windows. Si nos damos cuenta, debajo del código hay dos pestanañas, llamadas Fuente y Diseño. Ahora estamos en Fuente. Si queremos ver qué hace en realidad este código podemos ir al Diseño, y ver la ventana:


Como podemos observar en la parte derecha tenemos todas las propiedades de la ventana (par a los que venimos de wx, esto es un widget, no un Windows. En wxPython, un Windows es cualquier objeto. Para ser más exactos esto sería el equivalente a un widget Frame).

Podemos incluir la consola de IronPython en el entorno de desarrollo de la siguiente forma:


Animo al lector a ver todas las posibilidades (opciones) de este RAD de desarrollo.

Siguiendo con nuestro primer proyecto, vamos a incluir objetos. Para ello nos fijamos en el panel de Proyectos, que está a la izquierda. Justo debajo hay dos pestañas, Proyectos y Herramientas. Si hacemos click en esta última nos aparecen las herramientas para poder diseñar nuestro widget frame (que llamaremos ventana ya que estamos en .NET y la plataforma es Windows). Por tanto vamos a incluir algunos objetos a nuestra primera ventana.

Para incluir objetos dentro del contenedor (dentro de la ventana), es simplemente haciendo Drag and Drop, esto es, arrastrar y soltar. Después de incluir algunos objetos tengo la siguiente ventana:

Para cada objeto podemos cambiar sus propiedades (valores de sus atributos, ya que se recuerda al lector que estamos hablando de clases y su instanciación, y posterior creación del objeto) en el panel de la derecha, cada vez que eligamos el objeto que nos interesa.

Si hacemos doble click en el panel de la ventana nos lleva directamente al código, el cual es sintaxis Python, de la que estamos acostumbrados. Ahora se entiende el potencial de esta herramienta. Estamos trabajando en Python con las clases del Framework .NET!!!!!. Todo lo que he creado con SharpDevelop lo podemos ver en el siguiente código:


Si leemos la sintaxis, vemos que la complejidad no es mucha. Es más, lo único que podemos desconocer es .NET, evidentemente. Si en Python tenemos herramientas para explorar los módulos (ó namespaces), en .NET hay aplicaciones muy interesantes con las cuales explorar este framework (ver las clases por dentro, qué hacen, sus atributos y métodos), como Reflector.

Para terminar de ver SharpDevelop vamos a darle un poco de funcionalidad a nuestro primer programa. Para ello a hacer que al hacer click en el botón aparezca una caja de mensaje saludando. Además, se visualizará ó no el mensaje de Hola El Viaje del Navegante. Las modificaciones que he realizado son las siguientes:

En principio, cuando se ejecute nuestra aplicación, no se verá el objeto _label2, tal como se ha definido (observar la modificación hecha por mí, cambiando el atributo de visibilidad a False, para que no se visualice).

Además, he incluido en el método que se dispara al hacer click en el botón lo siguiente:

Darse cuenta que a la hora de escribir código Python no hay completitud de código, pero sí que lo hay al escribir clases y métodos de .NET, tal como aparece en el ejemplo. Este código lo único que hace es que al hacer click en el botón, visualiza ó no el _label2 y muestra por pantalla una caja de texto (MessageBox) saludando.

Una vez realizados los cambios podemos ejecutar nuestra aplicación simplemente pulsando F5 ó haciendo click en el icono con la flechita verde:


Al ejecutar nos muestra lo siguiente:


Y al hacer click en el botón:


Puesto que SharpDevelop es un RAD, tiene características propias de herramientas CASE. Un ejemplo de ello lo podemos ver en una de sus opciones, Mostrar diagrama de clase, que se encuentra en:

Y que para nuestro ejemplo podemos ver:

Una herramienta fantástica, con opciones realmente interesantes. Se recomienda al lector que investigue en todas las opciones que da SharpDevelop con IronPython. Sorprenderá a más de un programador.

En el siguiente post hablaremos de la herramienta que nos brinda Microsoft para desarrollar con IronPython.

Saludos.

3 comentarios:

  1. muy interesante articulo
    me gusto shardevelop con herramientas case
    supongo que para programar en c3 tb se podra usar las herramientas case

    ResponderEliminar
  2. buen articulo, sigue así, hay poca documentación de ironpython en español¡¡¡

    ResponderEliminar
  3. algun ejemplo que se pueda conectar a la base de datos postgres con ironpython

    ResponderEliminar