Python se ha convertido en el arma secreta de muchos desarrolladores y empresas. Durante los últimos años ha logrado infiltrarse en numerosos nichos y actualmente está preparado para asumir papeles protagonicos en cualquier proyecto de desarrollo..
Python es un lenguaje de programación de muy alto nivel creado por Guido van Rossum en 1991. Ha sido diseñado sobre una filosofía que hace énfasis en la legibilidad y la importancia en la reducción de esfuerzo del programador sobre el de computación. La sintaxis y semántica de Python son minimalistas, aunque la biblioteca estándar es extensa y completa. Python es un lenguaje multiparadigma, principalmente imperativo, orientado a objetos y funcional. Posee un sistema de tipos dinámico y usa administración de memoria de forma automática; en esto es similar a Perl, Ruby, Scheme y Tcl.
Python es maduro, estable y multiplataforma. El lenguaje posee un alto rendimiento y productividad durante todas las etapas del ciclo de vida de software: análisis, prototipado, progamación, testing, documentación y por supuesto, mantenimiento.
Organizaciones y proyectos hechos con Python
La lista de organizaciones que usan Python es larga. Desde la NASA, Google, Firaxis Games, empresa que emplea Python en Civilization IV, Phillips hasta ONG, organizaciones gubernamentales y pequeñas empresas que se especializan en brindar servicios alrededor de tecnologías desarrolladas con Python. Asimismo, es amplia la diversidad de los proyectos en los cuales es empleado: biología, química, web, multimedia, gestión empresarial y educación son apenas algunos de los sectores donde existen aplicaciones programadas con Python.
Inmersión en python
Python ha logrado reconciliar varios conceptos aparentemente contradictorios porque es elegante y al mismo tiempo pragmático, es simple y poderoso, es un lenguaje apropiado para aprender a programar como para expertos.
Escribir un programa no requiere mucho esfuerzo en Python, de hecho sólo alcanza con ejecutar el intérprete y escribir en el modo interactivo. Los resultados de los comandos son mostrados de inmediato:
$ python
>>> entero = 32 * 3
>>> entero
96>>> arreglo = ‘Evaristo’
>>> lista = [‘calculadora’,’lapiz’]
>>> print ‘Hola ‘ + arreglo + ‘, traes %s’ %lista Hola Evaristo, traes [‘calculadora’, ‘lapiz’]
Por supuesto que esto solo tiene sentido para programas muy sencillos. En programas más extensos, es posible guardar código fuente en un archivo con extensión .py para luego ser ejecutado. Por ejemplo, almacenando las siguientes líneas en el archivo contar.py:
def contar(numero):
”’ Cuenta hasta numero ”’
for i in range(numero):
print “cuento “, i contar(5)
Y luego ejecutando ‘python contar.py’ se podrá ver como python puede contar hasta 5.
Estas líneas de código son un ejemplo de un programa completamente funcional, y se puede apreciar la claridad de la sintaxis y si se posee conocimientos elementales de programación, no deberían aparecer inconvenientes en entender el significado de cada línea.´
Baterías incluídas
En el uso diario, la Biblioteca Estándar de Python y otros módulos de extensión desarrollados por terceros, son tan importantes como el lenguaje en sí mismo. La Biblioteca Estándar provee módulos listos para ser reusados resolviendo problemas de representación y proceso de datos, arreglos y texto, interacción con el sistema operativo y el sistema de archivos, programación web, etc. Debido a que estos módulos están escritos en Python, los programas que los reusan, funcionan de igual manera en todas las plataformas que soporta el lenguaje.
Los módulos de extensión, sean los de la biblioteca estándar u otros, permiten al código Python acceder a funcionalidades provistas por sistemas operativos o componentes de software como interfaces gráficas de usuarios, base de datos, redes, etc.
Además de la Biblioteca Estándar, es posible obtener miles de paquetes para fines específicos y aplicaciones en el Repositorio de Paquetes Python (pypi). En pypi es posible bajar desde kits para desarrolladores, bibliotecas, programas para música, imágenes, hasta módulos y herramientas para desarrollo de software para PDA.
Python en el escritorio
En Python es posible desarrollar aplicaciones de escritorio con widgets de TK, Qt y GTK, entre otros. Dependiendo del soporte del kit de herramientas para GUI, será el soporte de las plataformas, aunque la mayoría funciona al menos en Linux, Mac y Windows.
El kit por defecto de Python es TK vía TKinter. Este es minimalista y muy sencillo de usar y acompaña a la mayoría de las distribuciones Python.
Idle, entorno de desarrollo desarrollado con TKinter
Una alternativa a Tkinter es PyQt. PyQt es un conjunto de bindings para Qt, widgets empleados por KDE. PyQt es rápido y todo su diseño es orientado a objetos, del mismo modo que Qt, el cual posee una colección más extensa y con mejor diseño de widgets que Tk. Es soportada por Windows, Linux y Mac, aunque las licencias poseen restricciones en plataformas diferentes a Linux.
PyQt es más que un kit de herramientas para GUI. Junto con una rica colección de widgets incluye abstracciones para sockets, threads, Unicode, expresiones regulares, base de datos SQL, SVG, OpenGL, XML, etc. Además de PyQt, los mismos autores han desarrollado PyKDE que provee bindings para el entorno de escritorio KDE.
Kreissy, un lector de RSS argentino desarrollado con PyKDE
PyGTK es similar a PyQt pero está desarrollado sobre la biblioteca GTK+ que provee los elementos visuales, utilidades y si es necesario todo lo requerido para desarrollar una herramienta para el escritorio Gnome.
PyGTK es multiplataforma y también soporta Linux, Windows. MacOS X entre otras. PyGTK es software libre y posee un esquema más sencillo de licencias que PyQt, haciendo uso de la licencia LGPL.
IDEs para Python
Existe un número importante de entornos de desarrollos integrados que soportan Python, tal es el caso de Eclipse, Kdeveloper, emacs, etc. También existen IDEs desarrollados con el mismo lenguaje, algunos son Wing Ide, idle, PyDev, Eric Python Ide, etc.
Eric Python Ide, entorno integrado para desarrollo Python
Junto con las IDEs existen programas para diseñar GUIs. Ejemplos de estos son Glade para GTK+ y QTDesigner para Qt. Estos programas permiten construir GUI de aplicaciones por medio de interfaces gráficas muy sencillas de usar.
Screen shot de glade
Las discusiones de widgets e IDEs son extensas y se podrá encontrar bastante en la web, de todos modos, Python soporta widgets e IDEs para todos los gustos, aunque siempre habrá usuarios que usen simplemente vi o gedit, los cuales también poseen agregados especiales para Python.
Python para la web
Python posee implementaciones de un gran porcentaje de los protocolos empleados en internet. Gracias a esto, es posible escribir un sencillo servidor web en pocas líneas de código, por ejemplo.
Haciendo uso de diversos frameworks es posible desarrollar complejas aplicaciones web con poco esfuerzo. Un framework web es una colección de paquetes o módulos que permiten desarrollar servicios o aplicaciones webs sin necesidad de tener que lidiar con detalles de bajo nivel como son los protocolos, sockets, procesos, etc.
Django, TurboGears y Pylons son framworks livianos para desarrollo rápido de aplicaciones webs con enfoques similares a Rails.
Otro enfoque es el de Zope. Zope es un framework y un servidor de aplicaciones webs desarrollado sobre una arquitectura de componentes comparable a j2ee. La primera versión de Zope fue lanzada en 1999 y desde entonces se han construido cientos de componentes, dentro de los que se destaca ZODB, un motor de persistencia de objetos y el framework de gestión de contenido CMF, empleado para desarrollar Sistemas de Gestión de Contenido como Plone.
Gestor de contenidos Plone desarrollado sobre Zope
Desarrollo Juegos con Python
Dos maneras diferentes de desarrollar juegos en Python son provistas por PyGame y Panda3D. PyGame está desarrollada sobre la biblioteca multimedia SDL. Posee un conjunto de módulos para administrar diversos componentes de hardware como por ejemplo cdrom, joystick, mouse, sonido, etc; módulos para dibujo, uso de fuentes, manejo de eventos, tiempo, etc.
Panda3D es un motor 3D, una biblioteca de subrutinas para desarrollo de juegos y renderización 3D. Es desarrollada por Disney y Carnegie Mellon con el lenguaje de programación C++ y puede ser usada en Python mediante bindings. Panda3D esta orientada al desarrollo de juegos comerciales, haciendo énfasis en cuatro áreas: poder, velocidad, completitud y tolerancia de errores
Pirates es un juego recientemente desarrollado por Disney sobre Panda3D
Python y un juego en una semana
Dos veces por año, miembros de la comunidad Python organizan un concurso de programación de juegos llamado Pyweek. Luego de votar y seleccionar una consigna para el certamen, la cual puede ser tan amplia como “siempre va para arriba”, “twisted”, cada equipo deberá seguirla para desarrollar un juego con Python en tan solo una semana.
Pyweek cuenta con 5 ediciones y en varias de ellas, equipos argentinos han obtenido muy buenas ubicaciones, incluyendo el primer puesto en la tercera edición con Typus Pocus
Typus Pocus un juego argentino desarrollado en solo una semana con pygame.
Comunidad Python en Argentina
La comunidad de Python en Argentina se reune en PyAr. El objetivo de PyAr es reunir a los usuarios de Python y centralizar la comunicación a nivel nacional. Llegando a usuarios y empresas, promueve el uso, intercambio de información y experiencias, siendo el referente local en la difusión de esta tecnología.
PyAr posee una lista de correos donde es posible conocer a sus miembros y obtener ayuda de Python. Lleva adelante proyectos como WikipediaOffline, una versión de wikipedia en castellano almacenable en CDROM. Organiza reuniones y eventos en diversos puntos del país.
Otra comunidad relacionada a Python es Plone Cono Sur, la cual reúne a los usuarios del Sistema de gestión de contenidos desarrollado sobre Zope y Python.
Recursos
Libro Introducción a la programación con Python http://marmota.act.uji.es/MTP/pdf/python.pdf Libro Inmersión en Python: http://es.diveintopython.org
Qt and PyQt en IBM Developerworks http://www-128.ibm.com/developerworks/linux/library/l-qt
IDEs para python en wikipedia
http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python Web frameworks http://wiki.python.org/moin/WebFrameworks
Comunidad Python Argentina http://python.com.ar
Comunidad Plone Cono Sur http://plone.org/countries/conosur Roberto Allende
-Director Comercial en menttes – empresa dedicada al desarrollo en Python, Zope y Plone basada en Software Libre. Miembro de Zea Partners.
-Miembro de Plone Foundation, Texas, EE.UU.
-Cofundador y administrador del proyecto Plone Conosur.-
-Contacto para Latinoamérica del proyecto PloneGov y miembro del proyecto CommunesPlone.
-Cofundador de la comunidad Freenets (http://www.freenets.org.ar).
-Autor del blog robertoallende.com dedicado a Software Libre, Plone y temas relacionados a la web.
-Por Roberto Allende, (Menttes, Plone Foundation)
Enlaces de interés
http://plone.org/countries/conosur
http://python.com.ar http://trolltech.com/products/qt/features/designer
http://freshmeat.net/projects/kreissy
http://pypi.python.org http://www.python.org/about/success
Fuente: tuxinfo.com.ar