Cuando en algunas empresas dices que vas a utilizar Python para desarrollar su aplicación normalmente te miran raro. No pocas veces es la primera vez que oyen hablar del lenguaje y te pregunta porqué Python y no PHP, "que es lo que utiliza todo el mundo" o Java si estás en un entorno empresarial. Por una parte comprendo las reticencias. En un país donde se prima ante todo no correr riesgos, hacer lo que todo el mundo hace, incluso cuando signifique no ser competitivo , está bien visto e innovar está mal visto, decir que vas a hacerlo en Python porqué los costes serán menores, la mantenibilidad será mejor y además su aplicación web irá más rápida que en PHP, es un factor de menos peso que el de hacer lo que hacen los demás.

El otro día esta preocupación llegó a niveles alarmantes cuando se nos dijo que según una investigación interna creían que Python desaparecería en un par de años. Obviamente me sentí en el deber moral de tranquilizar a mi interlocutor y presentarle un pequeño inform de porqué podía estar tranquilo, Python no desaparecería en los próximos años. Como supongo que esta situación se puede volver a repetir y tras petición popular (bueno, una o dos personas, pero soy fácil de convencer) copio mis conclusiones en este apunte, de modo que pueda servir de referencia a otros programadores y empresas que nos dedicamos a la programación en este excelente lenguaje. El documento podría ampliarse hasta el infinito, hacer referencia y comparaciones con otros lenguajes y frameworks, pero no es ese su objetivo. Se trata de dar una respuesta argumentada al porqué creo que Python no tiene ninguna posibilidad de desaparecer como lenguaje de programación en los próximos años. De hecho tiene menos posibilidades de desaparecer como lenguaje que otros lenguajes comerciales y cerrados, y si nó que se lo pregunten a la gente de Forté tras su compra por parte de Sun, ahora propiedad de Oracle.

Objetivos de este documento

El objetivo de este documento es el de despejar cualquier duda que pueda existir sobre Python como lenguaje de programación con recorrido y futuro. En concreto se trata de establecer el porqué Python no va a desaparecer y porqué vemos que es una plataforma ideal para el desarrollo de sotware.

¿Qué es Python?

Python es un lenguaje de programación de propósito general, interpretado y orientado a objetos, que tanto puede utilizarse para realizar aplicaciones de línea de comandos, aplicaciones de escritorio como aplicaciones web.

Python fue creado por Guido Van Rossum hace más de veinte años. Actualmente Guido sigue implicado en el desarrollo de Python trabajando para Google, que lo considera un lenguaje estratégico en sus desarrollos. El desarrollo de Python es muy estable, se prima sobre todo la claridad del lenguaje y su legibilidad. Se cuida mucho la compatibilidad hacia atrás, filosofía que se ha transmitido también a frameworks como Django.

El futuro de Python está garantizado por la Python Software Fundation  y se realizan numerosas conferencias anuales en distintos paises. La de este año en Europa tuvo lugar el 22 de julio en Birmingham.

Python es un lenguaje multiplataforma, esto significa que se puede ejecutar sobre servidores Linux, Windows, Sun, etc. Incluso se está ejecutando sobre teléfono Android y Nokia.

Python se utiliza desde la programación de sistemas (Linux es un buen ejemplo de ello), cálculo numérico (http://www.enthought.com/) y la programación web, con una gran variedad de librerías y frameworks. Existen ports para Java, .Net que permiten ejecutar el intérprete Python dentro de estas máquinas virtuales.

Por la gran cantidad de librerías que acompañan al lenguaje, se suele decir que Python viene con las baterías incluidas.

La información general sobre Python, origenes y filosofía del lenguaje se puede encontrar en:

http://www.python.org/doc/faq/es/general/

Casos de éxito:

http://www.python.org/about/success/

De entre ellos destacaría:

Google App Engine http://code.google.com/intl/ca-ES/appengine/ que es el entorno de Cloud Computing de Google. En estos momentos soport Java y Python y se lanzó inicialmente en Python. Soporta el framework Django.

Zope http://zope.org Un sompleto servidor de aplicaciones al estilo de Tomcat.

Plone: http://plone.org Un cms escrito sobre la base de Zope que da soporte a multitud de sitos web, desde los de Ubuntu (Canonical) hasta sitios web de NASA, en ambos casos con millones de visitas.

OpenERP: http://www.openerp.com/ Uno de los ERPs más galardonados. Compitiendo de tu a tu con ERPs comerciales en potencia y características.

BitBucket Es un servicio de hosting que da soporte a multitud de programadores y webs. Está escrito en Python y Django. http://code.djangoproject.com/wiki/DjangoSuccessStoryBitbucket

The Washington Post http://projects.washingtonpost.com/congress/ Periódico de gran tirada con una buena parte de sus desarrollos en Django.

The Washington Times http://www.washingtontimes.com desarrolla sobre un stack opensource en Python y Django y ha publicado varios proyectos abiertos en http://opensource.washingtontimes.com/.

EveryBlock http://www.everyblock.com/ Gestor de noticias integrable en un blog desarrollado en Django.

Facebook Aunque la estrucutra principal de Facebook esté hecha en PHP, toda la parte de gestión de mensajes e informcación en tiempo real está programada en Python. Facebook mantiene varios proyectos Python, entre ellos uno altamente estratégico llamado Tornado, que es el servidor web asíncrono que mueve la programación en tiempo real. Más información en:

http://developers.facebook.com/blog/post/301

http://github.com/facebook/tornado

El módulo wsgi de Tornado se integra muy bien con Django y tanto se puede utilizar el sistema de plantillas de Tornado como el de Django.

Quora http://www.quora.com Ha elegido Python y Django sobre otras alternativas. El fundador de Quora, antiguo empleado de Facebook eligió Python sobre PHP por los problemas que tenía que tratar diariamente trabajando con PHP. La entrevista está en http://www.readwriteweb.com/start/2010/07/picking-the-right-programming-language-for-your-startup.php

Mark Lutz en la última edición de su libro Programming Python cita algunas más: Industrial Light & Magic, Pixar, BitTorrent, U.S. National Weather Service, NASA, NSA, Fermi, Corel, Red Hat, Lockheed Martin, … por citar algunas de las más conocidas.

Un ejercicio que resulta de lo más interesante es hacer una búsqueda de la cadena python en una distribución Linux para darse cuenta del papel que juega Python como lenguaje para el desarrollo de funcionalidades y herramientas.

¿Va a desaparecer Python?

Rotundamente no. Python se utiliza en gran cantidad de empresas que lo consideran un lenguaje estratégico para su evolución. Google esponsoriza el desarrollo del lenguaje y utilidades en su Google Summer of code, por ejemplo http://wiki.python.org/moin/SummerOfCode/2010, pero además forma pare del día a día de empresas como IBM, que le ha dedicado numerosos artículos en el developerworks, ActiveState, Aptana, que recientemente contrató a tiempo completo al desarrollador del plugin para Python de Eclipse, Netbeans (Oracle) que cuenta con una rama de Netbeans orientada a Python, Oracle con documentación sobre cómo integrar Python en el acceso a base de datos. Etc.

Una de las comunidades más activas, sin contar la de la propia Python es la de Django. Actualmente la lista de usuarios de Django, alojada en Google Groups cuenta con más de 17.800 subscriptores, lo que da una idea del alcance del framework y por ende del lenguaje.

Otras comunidades de usuarios se centran también en otros aspectos de Python y en distintas librerías. Para las librerías Qt de Nokia http://qt.nokia.com/ ha lanzado un port para Python de dichas librerías llamado PySide http://www.pyside.org/, lo que da un impulso oficial a Python como lenguaje de desarrollo para Qt además de las librerías pyQt que ya existían de manera extraoficial.

Otra comunidad especialmente activa es la de wxPython y las comunidades de Turbogears, Pylons, pyNumeric, etc. etc.

Un lenguaje de programación es tan potente como las librerías que lo acompañan. Python tiene un buen número de librerías y utilidades que se pueden utilizar justo después de instalarlo (de ahí el batteries included del sobrenombre de Python), pero como se puede ver, hay una gran cantidad de librerías y utilidades que abarcan practicamente todos los ámbitos de la programación.

La opción de PHP

PHP es un lenguaje que nos permite desplegar nuestras aplicaciones en servidores de bajo coste. El éxito del PHP se debe no tanto a la potencia del lenguaje sinó a que los requisitos técnicos y de máquina que se necesitan para poner en marcha una aplicación en PHP los hacen ideales para su explotación masiva por parte de los ISPs.

Cuando se trata de una empresa y con los costes acutales del Hosting, lo que debe primar en el desarrollo de nuevas aplicaciones es la mantenibilidad. Salvo que se utilice un framework com Cake http://cakephp.org/ o Symfony http://www.symfony-project.org/ que nos premite separar la programación en distintas capa, los programas en PHP tienden a ser una amalgama de código de negocio embebido en páginas HTML junto con páginas PHP y librerías.

Esto no quiere decir que no haya muy buenos programas escritos en PHP y muy buenos programadores en PHP, el problema es que es muy difícil separar el grano de la paja y PHP no favorece en nada esta separación. Python utilizado junto al framework Django nos propone una separación clara entre capas e impica tener que pensar qué se está haciendo. Esta reflexión nos lleva normalmente a programas más mantenibles.

Python desde siempre ha primado la mantenibilidad y la claridad del lenguaje y frameworks como Django han hecho suyo este lema.

La elección de un framework PHP nos da la separación en capas y la mantenibilidad que buscamos en los proyectos web que deben perdurar en el tiempo, pero con unos costes importantes: un rendimiento mucho menor, pasando de las más de 300 peticiones por segundo que aguanta un proyecto mínimo de Django a las 34 peticiones por segundo del mismo proyecto desarrollado en uno de estos frameworks PHP.

El otro precio a pagar es la cantidad de líneas de código. El ratio tipico de un programa escrito en PHP contra el mismo programa escrito en Python es de 3 a 5 veces menos líneas de codigo. Más líneas de codigo implican más tiempo (y por tanto normalmente un mayor coste para la empresa) pero sobre todo mucho más código para depurar y mantener. Esto se acentúa incluso más si utilizamos un framework y la programación orientada a objetos en PHP, ya que las construcciones y el código tiende a hacerse muy farragosos.

¿Qué significa la adopción de Python?

Apostar por Python y Django para una empresa que quiere comercializar sus productos on-line es apostar por el futuro y la mantenibilidad. Es una decisión estratégica que puede diferenciarnos de los competidores que estén utilizando otras tecnologías.Incluso cuando los tiempos de desarrollo sean comparables (caso de un desarrollo en PHP sin utilizar un framework y Python+Django) la arquitectura que nos proporciona Django hace que las aplicaciones sean más legibles y mantenibles a largo plazo. La reducción en el número de líneas de código respecto PHP y la legibilidad del lenguage hacen que podamos hacer sin mayores dificultades modificaciones a código que hemos desarrollados meses, incluso años atrás.

Python está preparado para la web: librerías de plantillas, librerías soap, xml, conexión con sistemas de mensajería como RabbitMQ o Beanstalk, librerías Rest como django-piston. Al ser un lenguaje de propósito general no estamos limitados a lo que podemos hacer en un servidor web, podemos utilizar Python en nuestros scripts de sistemas, utilizarlo para generar documentación y estadísticas off-line, las posibilidades sólo están limitadas por nuestra imaginación. Optar por Python significa tener al alcance de la mano librerías y aplicaciones de última generación para los propósitos más dispares: desde cálculo numérico al envío masivo de e-mails, desde la monitorización de sistemas hasta el screen scrapping.

La capacidad que tiene Python para lanzar un depurador integrado o remoto, de desplegar aplicaciones remotamente a través de ssh con aplicaciones como fabric o de crear sencillos servicios web con servidores como web.py o Tornado lo hacen una herramienta de productividad sin competencia en estos momentos. Significa, por tnato un factor competitivo importante: reduce los tempos de desarrollo, pero reduce aún más los tiempos de mantenimiento correctivo y evolutivo.

 

 

Referencias

Python at Google

http://panela.blog-city.com/python_at_google_greg_stein__sdforum.htm

Curso de Python en Google

http://code.google.com/intl/ca-ES/edu/languages/google-python-class/

Google+Python = world domination?

http://techreport.com/discussions.x/16713

Selling Django to your superiors: Success Stories Panel

http://python.mirocommunity.org/video/1205/selling-django-to-your-superio

Entrevista al fundador de Quora

http://www.readwriteweb.com/start/2010/07/picking-the-right-programming-language-for-your-startup.php

Comparando PHP y Python

http://enbeeone3.com/php-vs-python-analysis

Tutorial de Python en IBM Networks para programadores PHP

http://www.ibm.com/developerworks/opensource/library/os-php-pythonbasics/index.html?ca=dgr-twtrPython4PHPdth-OS

Comparación de Django con diversos frameworks PHP

http://trespams.com/2009/05/10/django-vs-php-framewors/

Switching from PHP to Python

http://www.slideshare.net/aezell/switching-from-php-to-python

Comparando Python y PHP

http://wiki.python.org/moin/PythonVsPhp

The Growth of Dynamic Languages 

http://www.activestate.com/blog/2010/07/growth-dynamic-languages-pythonists-pythonistas-and-pythoneers

Comparación de sintaxis entre php, perl, python y ruby

http://hyperpolyglot.wikidot.com/scripting

TIOBE Programming Community Index for July 2010

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 

 
blog comments powered by Disqus