IronPython es una implementación de Microsoft del intérprete Python escrito totalmente en C#. El proyecto trata de seguir al pie de la letra el lenguaje Python, como implementación de Python que es. Esto hace que cualquier programa escrito en Python pueda ser interpretado con IronPython, con las ventajas añadidas de poder usar las bibliotecas de la plataforma .NET y poder compilar el código a bytecode. Apareció en 2006, y su última versión estable es la 2.7.2.1 , aparecida en marzo de 2012. IronPython es a lenguaje dinámico, construido para correr sobre Microsoft .NET Framework 2.0 (o mayor), así que ese es el requerimiento que debe tener en cuenta, antes de instalarlo.
¿Qué es un Lenguaje Dinámico?
En los lenguajes tipeados dinámicamente, no tiene que definir el tipo de una variable antes de usarla. Vamos a ver un código escrito en C# (un lenguaje tipeado estáticamente), y luego lo compararemos con el mismo código escrito en IronPython. El siguiente es un método escrito en C#, que demuestra los tipos estáticos:
public void TiposEstáticos()
{
// el tipo de la izquierda obliga a que en la derecha
// asignemos un valor válido.
int number = 15;
string pais= "Panamá";
bool isPar = true;
// La línea siguiente disparará un error en tiempo de
// compilación ya que 34 no es un valor booleano válido
bool isPrincipante = 34;
}
Ahora compararemos el código C# con un método IronPython que realiza la misma tarea, aunque tiene un resultado ligeramente diferente:
def DynamicTyping():
# El valor del tipo a la derecha, determina el tipo de
# la variable a la izquierda
number = 15
pais = "Panamá"
isPar= True
# Esto NO dispara un error, ya que el compilador infiere
# el tipo de la variable a partir de su valor
isPrincipiante = 34
Veamos las diferencias: En un lenguaje de tipos estáticos como C#, el compilador necesita saber en tiempo de compilación cuál es el tipo de una variable. El intento de asignar un valor cuyo tipo no coincide con el tipo de la variable, genera un error y el código no compilará. (en el código C# tratar de asignar el número 34 a la variable booleana isPrincipiante genera un error en tiempo de compilación.) En cambio, en el código IronPython, a la variable llamada "isPrincipiante", se le asigna un valor de 34 y esto no genera un error, ya que el compilador inferirá a partir de esta asignación el tipo de la variable asignada. Es muy importante conocer este tipo de asignación, ya que si bien es muy diferente a muchos lenguajes de programación, es muy potente si se usa correctamente. En la definición del método de C#, se incluyó la palabra "void" para indicar que el método no devuelve un valor. Pero si en algún momento queremos devolver el valor de la variable "pais", habría que cambiar la palabra "void" por "string" para indicarle al compilador de C# que queremos devolver un valor de tipo string, y además deberíamos agregar return name al final del método para evitar un error del compilador y devolver el tipo de dato correctamente. Esto no es el caso de IronPython, que se encargará de manejar esto examinando el tipo de datos del valor devuelto al salir de la función. Además, IronPython, no necesita ni puntos y comas al final de una sentencia, como tampoco abrir y cerrar llaves para marcar un bloque de código. En realidad, IronPython, confía en los espacios en blancos y en la identación (sangría) para controlar el flujo del programa. Puede bajar la última versión de IronPython, desde esta dirección Una vez que haya descargado el archivo, ejecute el paquete de instalación. Siga las directivas que aparecen en pantalla y así instalará IronPython 2.7.1. Después que lo haya instalado, abrimos una ventana de comandos y vamso al directorio dónde se instaló IronPython (por defecto, "C:\Program Files\IronPython 2.7.1"). Si escribe ipy y pulsa Enter, deberá ver la ventana siguiente, que le indicará que la instalación fue exitosa:
Figura 1 - IPY es un intérprete interactivo de IronPython
Ejemplos de uso de IPY
Si todavía no lo ha hecho, abra una ventana de comandos y vaya al directorio IronPython (para no tener que hacer esto cada vez que quiera usar ipy, puede agregar el directorio a la variable de entorno path). Escriba
ipy y presione Enter. El intérprete IronPython debe comenzar. Ejercicio 1: en el indicador (prompt >>>), escriba 12 + 20 + 4 y presione Enter. La salida será el número 36, seguida de un nuevo indicador (prompt), como se muestra en la figura 2:
Figura 2 - Salida del ejercicio 1 corrido en el ipy (intérprete IronPython)
Ejercicio 2: Escriba resultado = 21 y presione Enter. El intérprete debe responder inmediatamente con un nuevo prompt, como se ve en la figura 3:
Figura 3 - Salida del ejercicio 2 corrido en el ipy (intérprete IronPython)
Ejercicio 3: Escriba print "El resultado es", resultado y presione Enter. El intérprete inmediatamente responderá como se ve en la figura 4:
Figura 4 - Salida del ejercicio 3 corrido en el ipy (intérprete IronPython)
Ejercicio 4: Escriba exit() y presione Enter para salir del intérprete. La salida se ve en la figura 5:
Figura 5 - Terminando el intérprete IronPython
El intérprete no es sólo para escribir código en tiempo real, si no que también puede ser usando para correr scripts de IronPython, que son basicamente archivos de texto que contienen instrucciones específicas para hacer que IronPython haga lo que querramos que haga. Estaré cubriendo eso en un próximo artículo de La Escuela del Programador...
respag
Panamá - © 2012