jueves, enero 22, 2009

¿Por que aprender Python?

Si eres un Power User, Sys Admin, o simplemente realizas toneladas de trabajo frente a la computadora, probablemente te hayas topado con que hay ocasiones en las que se necesita automatizar ciertas tareas tediosas. Por ejemplo, el de buscar una cadena de texto repetida en varios documentos.

"Yo soy un PowerUser, por eso uso Linux!!!"

En el trabajo, en uno de los proyectos en los que estoy asignado, me vi en la necesidad de realizar la tarea mencionada; buscar una cadena de texto (una función) en cada archivo de un modulo, y obtener el nombre del archivo en donde sucede la ocurrencia. Usualmente esto lo podría hacer en Linux, con una sencilla combinación de los comandos: "grep" y "ls" en un script. Pero claro, no estoy usando Linux en mi trabajo, así que me vi "forzado" a utilizar una (basca de) función de búsqueda en el IDE que estamos usando.
Como no obtuve los resultados adecuados, en eso recorde una herramienta multiplataforma, opensource, y mas robusta que el chistoso "command prompt" de Windows...


  • Imaginen que necesitan buscar todas las veces que aparece el nombre de tu exnovi@ en las conversaciones que se guardan del MSN, ¿como harias esto?
  • Y si quieres mover todos los archivos de fotos que tienes regados por toda tu carpeta de documentos, ¿como lo haces?
  • Y para eliminar todos los espacios vacíos de los nombres de tus archivos de música, o los caracteres extraños, ¿que herramienta usarías?
  • Si bien, (yo se que) existen herramientas para realizar estas tareas, a veces ni la mas completa GUI (Interfaz de Usuario) puede asistirnos con tareas masivas de movimiento de datos, respaldo, eliminación de archivos vacíos (archivos de 0 KB), o de nombres extraños ( ###$%__song.mp3 por ejemplo).
  • Y que te parece el caso en que tal vez necesitas una base de datos pequeña y personalizada, realizar un simple juego o realizar una GUI especial.
  • Puede ocurrir que eres un developer de C/C++/Java, y el ciclo usual de codificar/compilar/depurar/recompilar te parece muy lento; ¿que sucede si deseas hacer un programa que se conecte a una base de datos remota y ejecute pruebas automatizadas?

"Si te sientes como un robot realizando tareas repetitivas, tal vez sea tiempo de considerar una herramienta que automatice tus tareas!"
  • ¿O una sencilla aplicación que pruebe rangos de IP que tengan conexión a Internet, y que cambie tu IP cada cierto tiempo, para poder navegar "tranquilo" en el trabajo? (más información sobre esto luego).

En cualquiera de estos casos y en muchos otros más, Python es el lenguaje de programación para ti.

¿Realmente crees que es necesario tener una aplicación diferente para cada una de estas tareas? ¿Necesitas una herramienta diferente para cada problema, o es mejor tener una compacta y elegante Navaja Suiza?

Python es fácil de usar, y disponible (como la mayoría del Software Libre) para Windows, Linux y Mac OS X, y probablemente te ayudara a realizar cada uno de estos trabajos más velozmente.

Si bien es fácil,también es un verdadero y muy robusto lenguaje de programación, que ofrece mucha mas estructura (entiendase legibilidad) y soporte para programas largos, más de lo que cualquier lenguaje de bash script te permitiría. Python también ofrece mucho mas chequeo de errores de los que soporta C, y siendo un lenguaje de alto nivel, tiene tipos de datos bastante útiles, como arreglos flexibles y diccionarios.

Y como Python tiene tipos de datos más generales, es aplicable a un dominio de problemas mucho más amplio que Awk o Perl, y aun así, muchas cosas son tan fáciles de implementar en Python como en esos lenguajes.

Python permite dividir tu programa en módulos que pueden ser reutilizados. Posee una larga colección de módulos estándares (I/O, llamadas al sistema, sockets, PyGame, etc).

Como es un lenguaje interpretado, no necesitas compilarlo y linkearlo (como C/C++). Y se compila "al vuelo" y/o bytecode como Java o .NET

El interprete de Python se puede utilizar interactivamente, lo que facilita experimentar con las características del lenguaje, hacer programas "para una sola vez", o para utilizarlo como una avanzada calculadora científica, je je.

Python permite escribir programas de manera compacta y legible. Y casi siempre, un programa escrito en Python, sera mas corto que su equivalente en C, C++ o Java. Es extensible, se pueden añadir nuevos módulos al runtime de Python con solo saber como programar en C.

Pero lo realmente importante, y por lo que vale la pena mencionar a Python en este momento, es que hace poco salio la nueva versión de Python, la 3.0
Y lo radical de esta versión, es que es TOTALMENTE incompatible con Python 2.6 y menores. Muchos se sorprenderán de semejante movida, pero el creador de Python: Guido Van Rossum, tiene buenas razones para haberla hecho, entre ellas: mejorar la sintaxis del lenguaje, cambiar un buen par de tipos de datos, y proveer una plataforma para convertir a Python, en el lenguaje interpretado de alto nivel de mayor popularidad en el mercado.
Si estabas esperando "el momento adecuado" para aprender un lenguaje de programación, sin lugar a dudas este es el momento para aprender Pyhton (3.0)!!!

"¿Cansado de lenguajes estáticos y compilados?, quizas sea hora de cambiar a un lenguaje de ALTO nivel."

Ya sea que estés comenzando, o simplemente estés cansado de Perl, de Awk, o de los ridículos archivos batch de Windows, etc.

Así que... a bajar Python:
http://www.python.org/download/releases/3.0/
Y la documentación de Python 3.0 (Py3K) puedes encontrarla aquí:


Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...