Skina IT Solutions E.U.
 

Python: ¿otro lenguaje interpretado?

Autor:
Ricardo Naranjo Faccini
Fecha de publicación:
lunes 29 abril 2002
Tema:
FOSS y Software Libre
Revisado por :
Ricardo Naranjo Faccini
(viernes 11 marzo 2011)

Resumen

El lenguaje de programación Python fué escrito por Guido Van Rossum en 1991, en este momento, se perfila como el más facil de aprender para estudiantes y profesionales de cualquier disciplina técnica, también como el más versátil y de mayor crecimiento en el momento.

Durante la presentación se muestran brevemente las características que le dan potencia al lenguaje, se realiza un recorrido por los módulos de soporte adicionales y a Jpython: el superSet de Java para desarrollo rápido de aplicaciones


Segúramente la mayoría de los lectores de este artículo no habrán escuchado jamás hablar del lenguaje de programación Python, inclusive, pensarán que es otro lenguaje, utilizado únicamente por su autor y por los amedrentados alumnos de alguna clase de introducción a la programación en algún remoto lugar.

Lo que no ha sido bien divulgado es, que este robusto lenguaje es la base para el entorno de programación Zope, el manejador de listas mailman, la herramienta para gráficos sketch y las herramientas de configuración de la distribución RedHat desde sus inicios.

Fué desarrollado sobre plataforma macintosh por Guido Van Rossum en 1991, basándose en un esquema de licenciamiento libre, similar a la GPL, al mismo tiempo que Linus Torvalds desarrollaba las primeras versiones del sistema operativo GNU/Linux.

En este momento Python es un lenguaje soportado en los mas importantes sistemas operativos disponibles, tanto libres como comerciales.

El nombre del lenguaje se colocó tras el éxito de la comedia de la BBC "Monty Python's Flying Circus" de la cual Guido y varios de sus colaboradores eran seguidores, es por ello que las listas de discusión y la documentación en inglés tienen un toque de humor británico que algunas veces despistan al lector hispanoparlánte.

Cuando el autor de Python comenzó a realizar su desarrollo orientó sus esfuerzos a la especificación de una nueva sintaxis en extremo simple, bien diseñada y consistente, que brindara un sentimiento de naturalidad en el desarrollo, haciéndo que todas las instrucciones de un complejo programa sean evidentes a los ojos de un programador novato.

Sin embargo, no se limitó a la sintaxis, también se implementó un interpretador del lenguaje que realizaba un eficiente manejo de la memoria, una robusta interacción con el sistema operativo en el cual estuviera soportado y que permitía facilmente tener cooperación con otros programas. Adicionalmente se orientó el lenguaje a la teoría de objetos la cual ha demostrado su facilidad para la escritura de código de mayor calidad, para ello se implementaron características de soporte a clases, polimorfismo y sobrecarga de operadores, entre otras.

En el momento en que nace python existían varias alternativas para los programadores, la lista la encabezaban los lenguajes C y Perl, el primero en extremo especializado, brinda la gran posibilidad de interactuar en alto nivel con los dispositivos informáticos. Sin embargo en C, por ser un lenguaje altamente especializado, la realización de programas requiere igualmente un entrenamiento que puede tomar años antes de dominar el lenguaje. Durante este entrenamiento un programador puede generar fácilmente código erróneo y nefasto para un equipo.

Por otro lado se encontraba Perl, lenguaje utilizado actualmente por el 85% de las páginas WWW, el cual se perfila hoy como el lenguaje interpretado más rápido y completo. El interpretador de perl fué desarrollado pensando en la eficiencia. Un claro ejemplo de ello se observa cuando se requiere realizar el postprocesamiento de información almacenada archivos tipo texto de gran tamaño, Perl realiza este tipo de tareas en rangos de tiempo sustancialmente menores.

El grán obstaculo presentado por Perl está basado en la peculiar sintáxis que utiliza, la cual se caracteriza por tener comandos en extremo crípticos y adicionalmente tiene la posibilidad de realizar los mismos procedimientos de varias maneras diferentes.

En el momento en que se comienza a utilizar perl para realizar desarrollos, el programador queda deslumbrado por un gran conjunto de comandos muy concretos para realizar labores complejas y comieza poco a poco a aprender una serie de artificios del lenguaje que cada vez le permiten escribir en menor cantidad de instrucciones los mismos algoritmos. Un programa en Perl, escrito por un experto, se convertirá en un jeroglífico ejipcio a los ojos de un programador novato, inclusive, un programador entrenado por una escuela diferente tendrá dificultades para la interpretación del código. Por lo tanto, lo que en un principio parece un lenguaje excéntrico, se convierte en una pesadilla en el momento en que hay que hacer mantenimiento a un programa de 300 líneas o más dos o tres meses después de haber sido desarrollado inicialmente.  Ese es el momento en que el programador advierte las dificultades de este lenguaje.

Introducción al lenguaje Python

La primera sorpresa asombrosa al trabajar en este lenguaje de programación es que la indentación del código deja de ser un simple adorno para convertirse en una utilidad del lenguaje, en efecto, es necesario realizar una correcta indentación durante la escritura del código o el programa reportará errores. En un principio es algo extraño y confuso para un programador que no utilice la indentación a diario, pero es una característica muy sencilla y después de escribir unas pocas líneas de código el desarrollador se ha acostumbrado a ella.

Un segundo impacto sucede en el momento en que se va a definir una variable, el sistema se encarga del manejo de la memoria de forma tal que no hay necesidad de declarar la existencia de las variables, símplemente se le asigna el valor y elinterpretador del lenguaje se encarga del resto. Mas importante aún es que el interpretador tiene, en la definición de los operadores, capacidad para realizar operaciones entre variables de diferente generando resultados coherentes con aquello que la intuición matemática de un programador esperaría.

Esta segunda característica puede llegar a ser un problema, fuente de errores de programación, sin embargo, esto se compensa con la gran funcionalidad obtenida al permitir realizar este tipo de operaciones.

En el momento en que se necesita manejar una cadena de caracteres, un vector, un arreglo indexado o una lista se presenta la tercera sorpresa, el manejo de este tipo de estructuras es total y absolutamente evidente y sencillo. El manejo de particiones de las estructuras es bastante cómodo al igual que la ubicación de elementos o la realización de búsquedas.

Una vez el programador comienza a acomodarse al lenguaje de programación y búscaayudas para el desarrollo, encuentra una gran cantidad de módulos y librerías que permiten el fácil manejo de encriptación, envío de mensajes vía correo electrónico, manejo de cadenas de caracteres, compresión de archivos, manejo de calendarios y fechas y mas de 100 módulos adicionales diferentes.
Entre los más útiles se cuenta con Tkinter, pyqt y pygtk, librerías que permiten una interacción bastante avanzada con los "toolkits" gráficos TK, QT y GTK, y por medio de ellos generar aplicaciones gráficas integradas al escritorio, con ventanas desplegables, menús en cortina, botones, 'scrollbars' y todo tipo de 'widgets' de una forma bastante sencilla.  Para el programador de JAVA se desarrollo JPYTHON, un superset de Java que permite mediante la sencilla sintaxis de python generar 'applets' bastante elaborados.

Otros módulos importantes son aquellos que le permiten interactuar con motores de bases de datos tales como: PostgreSQL, MySQL, DB/2, Informix, Interbase, Ingres, DCOracle y Sybase, inclusive utilizando estándares como el ODBC.

Python para la vida diaria

Para finalizar, menciono las más importantes instituciones y empresas que han reportado el exitoso uso del lenguaje python:

  • LLNL, Fermilab (steering)
  • Alice project at CMU (3D graphics)
  • ObjectDomain (extend UML tool)
  • Infoseek (ext. Language, scripting)
  • Industrial Light & Magic (everything)
  • Yahoo! (CGI in Yahoo!mail)
  • Digital Creations (Zope website mgt)
  • RedHat (Linux installation tools)

Invito al lector del artículo a investigar mas sobre este excelente lenguaje de programación el cual está orientado a facilitar la vida del programador y a disminuir el tiempo de desarrollo de software. A pesar de no ser el lenguaje de programación más eficiente en manejar los recursos computacionales del hardware de su máquina, es el lenguaje de programación más eficiente en ahorro de tiempo humano, el más fácil de aprender tanto para desarrolladores como para científicos en búsca de un lenguaje de programación sencillo que permita solucionar los problemas que presenta su actividad investigativa.

Igualmente invito a los profesores de programación de carreras profesionales no relacionadas con las ciencias computacionales a utilizar este lenguaje en sus clases introductorias puesto que centrará la atención del estudiante en la algorítmica y no en la complejidad del lenguaje.

Puntos de partida

  • www.python.org
  • www.python.org/doc/current/index.html
  • www.pythonware.com/library/tkinter/introduction

Bibliografía

  • Revista Linux Journal, Special Supplement, Mayo 2000.

Ricardo Naranjo Faccini

Ricardo Naranjo Faccini Desarrollador WWW

Nació en Barranquilla, Atl, Colombia el 14 de enero de 1971

  • Magíster en Ingeniería de Sistemas y Computación de la Universidad de Los Andes 1998
  • Ingeniero Civil de la Universidad de Los Andes 1995
  • Diplomado en docencia en Ingeniería de la Pontificia Universidad Javeriana 2008
  • Gerente de la firma Skina IT Solutions, su gestión ha llevado a la empresa al nivel de exportación de software. Experto en calidad en el desarrollo de software con énfasis en el uso de herramientas libres orientadas hacia WWW.
  • CTO de AuthorsGlobe, empresa participante en el MIT 100K, elegida como parte del "TOP 10" entre 300 proyectos presentados en este concurso del Massachussets Institute of Technology MIT.
  • Durante el periodo 2004-2005 se desempeñó como Gerente de desarrollo de negocios NOVELL en Nexsys de Colombia.
  • Ejerce docencia como catedrático en la Universidad Javeriana, al igual que lo ha realizado en la Universidad de Los Andes, Universidad de Manizales y Universidad autónoma de Bucaramanga.
  • Comprometido con la divulgación del software libre y su aplicación en Colombia, ha dictado más de 60 conferencias en todo el país, co-fundador de LinuxCol, la primera comunidad de usuarios de Linux en Colombia.
  • Colaborador del grupo ACIS-Linux.