El intérprete
Como se dijo anteriormente, se trata de un lenguaje interpretado. Por lo tanto, no puedo pasar en alto la existencia de un intérprete. Sin más ni menos, el intérprete es el encargado de ejecutar cada línea de código de un programa de Python.
En los lenguajes compilados, el compilador traduce el código de fuente a un lenguaje que es interpretado por el sistema operativo. Sin embargo, no todos las plataformas corren un programa de la misma manera, razón por la cual existen compiladores específicos para cada una de ellas (GCC en Linux, MinGW y Visual C Compiler en Windows, entre otros).
El ser un lenguaje interpretado establece un gran porcentaje de las cualidades de Python. Por ejemplo, le permite ser multiplataforma, ejecutar el mismo código de fuente en múltiples sistemas sin realizar cambio alguno (en la mayoría de los casos). También, le otorga la posibilidad de que el mismo lenguaje se encargue de examinar el valor de una variable y determinar su tipo, lo que le brinda una mayor flexibilidad (tipado dinámico).
En detalle
El intérprete no es más que un programa escrito en C. A su vez, éste tiene varias etapas desde que lee un archivo de extensión .py
hasta que lo ejecuta.
- Python divide el código de fuente en porciones más pequeñas, según su conveniencia para analizarlas por separado más rápidamente.
- El flujo del programa (cada una de dichas porciones) es representado en un árbol de sintaxis (AST).
- Un compilador interno traduce la representación en AST a bytecode.
- Por último, el bytecode generado anteriormente es ejecutado por la máquina virtual de Python (Python Virtual Machine o Python VM).
Siempre que se ejecuta un script (cualquier archivo .py
) y los módulos que éste puede llegar a importar, Python compila el código de fuente y lo almacena en un archivo del mismo nombre con extensión .pyc
(dentro de una carpeta llamada __pycache__
en Python 3). De esta manera, si el fichero no ha sufrido modificaciones, en la próxima ejecución se evitarán el paso 2 y 3, por lo que la inicialización será más rápida.
Instalación
Es momento de pasar de la teoría a la práctica. Para que todo lo comentado anteriormente sea posible, es necesario instalar Python (cualquiera de sus implementaciones) en nuestro ordenador. Para comenzar, te recomiendo utilizar CPython, el cual puedes descargar desde el sitio oficial.
En sistemas basados en Linux y algunas versiones de Mac OS, de seguro hay un intérprete de Python instalado, ya que es utilizado por varias herramientas de dichas plataformas. Para corroborarlo, deberás ver un mensaje como el siguiente al abrir la terminal (línea de comandos o consola) y escribir python
.
Python X.Y (default, Nov 10 2013, 19:24:18) ...
Type "help", "copyright", "credits" or "license" for more information.
>>>
X.Y
representa el número de versión.
En Windows, puedes utilizar esta guía de instalación para Python 3 y Windows 8 que resulta similar para otras versiones.
Aplicaciones web y de escritorio
Python es un lenguaje multipropósito, puede emplearse para infinidad de proyectos.
Las aplicaciones web y de escritorio son dos grandes campos en los que el uso de Python se destaca, incluso sin utilizar paquetes de terceros, sino a partir de la vasta colección de herramientas que provee la librería estándar.
Por ejemplo, Tkinter
es un paquete incluído por defecto para la creación de interfaces de usuario. Se caracteriza por su simpleza y es generalmente utilizado para prototipos rápidos.
A su vez existen librerías más complejas que se han portado desde otros lenguajes; por ejemplo, PyGTK, PyQt y wxPython.
Dentro de la rama del desarrollo web, se destacan el uso de CGI y WSGI. Este último es mucho más moderno que el primero (que se trató de uno de los primeros métodos para generar webs dinámicas), además de ser más eficiente. Existen infinidad de frameworks webs para Python, algunos de los más populares son Django, Pyramid, web2py y Flask. El desarrollo vía CGI puede implementarse sin necesidad de utilizar herramientas de terceros (véase Introducción a CGI).
Python 2 vs. Python 3
Generalmente al comenzar con Python surge la duda de qué versión utilizar. Tal como lo indica la página oficial, Python 2 es un legado, que se mantiene en pie únicamente para continuar soportando a la infinidad de aplicaciones, sistemas y librerías que aún lo utilizan. En cambio, Python 3 es el futuro del lenguaje, con su desarrollo se han solucionado gran cantidad de errores y aumentado la eficiencia. Para esto se han tenido que dejar atras ciertas características, como sintaxis, módulos y funciones. Por lo tanto, a medida que aumenta la cantidad de código en un determinado proyecto, también lo hace de manera proporcional las incompatibilidades con otras versiones.
Existen herramientas para portar código de Python 2 a 3 y vice-versa, con ciertas limitaciones. Los grandes proyectos ya soportan Python 3 o están en camino para hacerlo. Por ejemplo, Django (el web framework más popular) ya ha indicado que a partir de su versión 1.5 Python 3 está completamente soportado. De la misma manera, versiones más antiguas como la 2.5 o 2.6 van quedando obsoletas, por lo que su soporte se descarta. Por otro lado, Twisted (un framework de red orientado a eventos) aún está en el proceso de portación de código.
La wiki de Python ha escrito un artículo en el que se detalla la problemática Python 2 – Python 3, titulado “Python2orPython3”.
En resumen, si lo que planteas desarollar puedes llevarlo a cabo con Python 3, ve directo a ello. Si te ves limitado por las herramientas que planeas utilizar, ya que éstas únicamente soportan la gama 2.x, ve con Python 2.
Para comenzar, recomiendo la versión 2.7.6, que es y será la última de la serie, ya que la mayoría de guías y libros de programación se basan en esta versión. De todas maneras, puedes tener múltiples versiones del lenguaje en un mismo sistema.
Te esperamos en los próximos artículos en donde hablaremos mas acerca de estos temas que hoy en día son de importancia e interés en el mundo de la tecnología.