Mariano Heredia

Mis anotaciones...

sábado 19 de enero de 2008

Python, aquí voy! Los primeros pasos

Para empezar, es necesario familiarizarse con el entorno de Python; el software estándar Python se puede descargar directamente desde el sitio oficial. Si se está utilizando un sistema Linux, es probable que ya se encuentre todo instalado, de todas formas si se desea la última versión es posible obtenerla desde el enlace anterior.
El interprete Python se puede usar de dos formas: el modo interactivo (interactive mode) o el modo script (script mode).

Modo interactivo
Este modo resulta apropiado para situaciones de prueba de expresiones simples o de fragmentos cortos de código, ya que se introduce las sentencias y el interprete inmediatamente devuelve el resultado:

$ python
Python 2.5.1 (r251:54863, Jan 19 2008, 18:13:34)
[GCC 4.1.1 (Gentoo 4.1.1-r3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print '¡Hola mundo!'
¡Hola mundo!

La primera linea corresponde al comando para invocar al interprete de Python en modo shell, a continuación se puede apreciar la versión que se está usando y algunos comandos útiles para obtener ayuda e información.
El prompt del shell está indicado por los símbolos >>>, y a continuación se encuentra el código necesario para imprimir en pantalla ¡Hola mundo!. La última linea es la salida luego de evaluar la sentencia print '¡Hola mundo!'.
Para finalizar la sesión interactiva se debe pulsar la secuencia de teclas para el caracter de fin-de-linea (Control + D para entornos Unix o Contro + Z en Windows) o bien escribir quit().

Modo Script
Crearemos un archivo para ilustrar el modo de ejecución script. Todo programa o script Python debe estar alojado en un fichero con la extensión .py.
El modo script es siempre apropiado cuando se desea desarrollar un programa o aplicación completa. Desde el prompt del sistema operativo, ejecutamos las siguientes instrucciones:

$ echo "print 'hola mundo"'!'"'" > holamundo.py && python holamundo.py
hola mundo!

Para crear el script puede utilizarse un editor de textos, pero en este caso se usa la siguiente instrucción echo "print 'hola mundo"'!'"'" > holamundo.py con lo cual tenemos creado el script en el archivo holamundo.py. Luego es ejecutado con python holamundo.py. El resultado de la evaluación del script es hola mundo!.
Puede hacerse el script ejecutable, situando la siguiente línea sha-bang al inicio del script:

#! /usr/bin/env python

Y luego dando permiso de ejecución al archivo, se procede con la ejecución:

$chmod +x holamundo.py
$./holamundo.py
hola mundo!

La ante última y última línea representan la ejecución y salida del script respectivamente.
Si se presta atención al mensaje mostrado en el modo interactivo y en el modo script, se notará que en el último el caracter ¡ no está incluido. Procedemos a modificar el script de manera que su contenido sea:

#!/usr/bin/env python

print '¡hola mundo!'


Y luego, desde línea de comando:

$./holamundo.py
File "./holamundo.py", line 4
SyntaxError: Non-ASCII character '\xa1' in file ./holamundo.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details


El error arriba indicado significa que el caracter ¡ no es reconocido como uno ASCII válido. Para que el script pueda ejecutarse correctamente es necesario indicar qué encoding se utilizará en el código, se incluye a tal fin la linea siguiente, luego de la linea sha-bang:

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

Ejecutando el script, ahora si se observa el resultado deseado:

$./holamundo.py
¡hola mundo!



Bien, este ha sido un panorama general sobre la escritura y ejecución tanto de expresiones en el modo interactivo, como de scripts con el interprete de Python; para un conocimiento más acabado sobre mismo y sus prestaciones, puede consultarse el capítulo Using the Python Interpreter del tutorial oficial.

miércoles 16 de enero de 2008

Python, aquí voy! Características del Lenguaje

Primero, resultará esencial obtener una visión general de Python. Para ello serán destacadas las características principales del mismo:
Python es un lenguaje de alto nivel: esto significa que es posible realizar tareas de complejidad considerable, con un nivel alto de abstracción con respecto al hardware y al lenguaje de máquina (lenguaje de bajo nivel).
Python es un lenguaje interpretado: Una computadora sólo puede ejecutar lenguaje de máquina, es por ello que un lenguaje de alto nivel necesita ser procesado; esto presenta una perdida en la eficiencia de ejecución, pero una gran ganancia en la reducción de tiempos de desarrollo. Dependiendo del lenguaje en cuestión, es necesario un compilador o intérprete para la ejecución de los programas; en aquellos lenguajes que precisan de un compilador, el código fuentes es tomado por el mismo como entrada y procesado, generando como salida código objeto (dependiente de máquina) para su ejecución. Un lenguaje que es interpretado no necesita ser compilado sino que es leído y ejecutado linea por linea obteniendo la salida o resultado del programa. Algunos lenguajes modernos, llevan a cabo los dos procesos: son compilados a un lenguaje de menor nivel llamado byte-code, independiente de máquina, que luego es interpretado y ejecutado por una máquina virtual, dependiente de máquina. Python es uno de estos lenguajes, pero debido a la forma en que el programador interactúa con el lenguaje (la compilación es transparente) se lo define como un lenguaje interpretado.
Python es un lenguaje multi-paradigma:
Python es un lenguaje imperativo: presenta las estructuras típicas de un lenguaje imperativo; esto es estructuras condicionales (if/then) y repetitivas (while).
Python es orientado a objetos: en Python todo es un objeto, a diferencia de algunos otros lenguajes (basados en objetos) tales como Java. Por ejemplo, en Java un literal o constante numérico no posee propiedades ni métodos, mientras que en Python si.
Python es un lenguaje funcional: a lo largo de su evolución, Python ha ido adquiriendo características de los lenguajes funcionales más conocidos y potentes; estas características incluyen, pero no se limitan, al cálculo lambda y listas por comprensión.
Python es un lenguaje orientado a aspectos:
Todo esto hace que el programador Python no se vea atado a usar un estilo o paradigma de programación, sino que puede usar y combinar aquellas características que mejor se adapten al problema en cuestión.
La sintaxis y semántica de Python son minimalístas: esto es debido a que uno de los objetivos del autor del lenguaje, Guido van Rossum, era la legibilidad.
Python es libre: por último, y no por ello menos importante, la licencia Python es la PSFL (Python Software Fundation License) compatible con la GPL; tanto el lenguaje, las librerías y la documentación principal referente a Python se encuentra ligada a la Free Software Fundation por medio de sus licencias para software y material de lectura.

sábado 12 de enero de 2008

Python, aquí voy!

Han sido innumerables los comentarios que he oído y leído acerca de las ventajas que ofrece Python sobre otros lenguajes actualmente en boga en el mercado. Gran parte de estos comentarios hacen referencia a la superioridad de Python sobre Java en diversos aspectos. Por ejemplo, David Beazley en el prólogo de How to Think Like a Computer Scientist: Learning with Python plantea como respuesta a ¿Por qué Python? o ¿Por que enseñar a programar en Python? simplemente, porque Python es muy divertido y más productivo que C++ y Java, contrariamente a lo que gran parte de la opinión general piensa.
Java es el lenguaje en el que poseo mayor experiencia, y desde hace un tiempo a esta parte me ha surguido la duda de cuán cierto resultarán ser esas afirmaciones. Parece que la única forma de convencerme por mi mismo de la veracidad o falsedad de tales aseveraciones es conocer un poco más de cerca Python, no tanto por incrédulo sino más bien por eso de ver para creer o yo mejor diría, probar para opinar. En esta serie de artículos pretendo plasmar los pormenores de esta cruzada que voy a emprender para adquirir Python como nuevo lenguaje de programación. Además de cuestiones puras y exlusivas de Python, intentaré destacar diferencias, ventajas y desventajas, que a mi entender, presenta con respecto a Java.

Como material de referencia princiapl, me voy a basar en el tutorial oficial de Python y How to Think Like a Computer Scientist: Learning with Python, fuentes alternativas que vayan surgiendo las iré listando cuando sean pertinentes.

Sin más, Python... aquí voy!