jueves, abril 28, 2005

 

Boo... el fantasma de Python.

¿Han visto Boo?

Muchos sabrán que yo no soy un gran amante de Python. Entre las cosas que me disgustan están la lentitud de ejecución y la falta de verificación estática en las llamadas a los métodos.

Bueno, me enteré que no soy el único - eso era evidente en realidad :-), y que existe una comunidad de desarrolladores que han creado un nuevo lenguaje, basado en Python pero ligado a .NET (o a Mono, como se quiera decir).

Este es Boo, y ya es posible usarlo para desarrollar programas en serio, por ejemplo usando Mono en Linux.

Un ejemplo:

import Gtk from "gtk-sharp"

def pres():
print "Hola"

def salir():
print "Chao!"
Application.Quit()

Gtk.Application.Init()
w = Gtk.Window("Ejemplo")
b = Gtk.Button("Presioname")
w.Add(b)
w.BorderWidth=10
b.Clicked+=pres
w.DeleteEvent+=salir
w.ShowAll()

Gtk.Application.Run()

Para ejecutar el ejemplo, pueden usar directamente el intérprete de Boo: 'booi ejemplo.boo', o si no puede compilarse: 'booc ejemplo.boo', lo que genera un ejecutable de .NET, 'ejemplo.exe'

Un ejemplo de sesión es:

~/devel/dotnet/boo/ejemplos$ booc example.boo
~/devel/dotnet/boo/ejemplos$ ./example.exe
Hola
Chao!
~/devel/dotnet/boo/ejemplos$
Como se ve, es similar a Python usando pygtk, pero a mi juicio bastante más simple.

El mismo código en Python sería así:

import gtk
from gtk import *

def pres(o):
print "Hola"

def salir(a,b):
print "Chao!"
gtk.main_quit()

w = Window()
w.set_title("Ejemplo")
b = Button("Presioname")
w.add(b)
w.set_border_width(10)
b.connect('clicked',pres)
w.connect('delete_event',salir)
w.show_all()
gtk.main()

Además del hecho de que prefiero BorderWidth=10 a set_border_width(10), Boo tiene muchas otras cosas que me gustan:

Por último, existe ya un plugin para desarrollar en Boo usando MonoDevelop, lo que significa que el depurador integrado, la sugerencia de código y la generación de plantillas funciona. Y más encima, el código generado es multi-plataforma (si se usa gtk#, obviamente).

Si alguien quiere ayuda para instalar en Linux, usando Mono, pregunten.

This page is powered by Blogger. Isn't yours?