Yo te aconsejo que aprendas los dos, pero a fondo. Y sólo el tiempo te dirá cuál es lo mejor (yo creo que los dos, cuantos más, mejor).
Yo no sé Python completamente, pero sí lo conozco un poco. Hay cosas que me gustan y otras que no tanto. Yo sé
shell,
awk,
C; un poco de
C++ y
Java, bastante de
PHP y
JavaScript; me enseñaron en la universidad
Prolog,
Fortran77,
Pascal,
Z80,
i386 y
68000; y antes de eso, por mi cuenta,
GWBasic, Atari Basic, GFA Basic, ST Basic,
Delphi,
Visual Basic y
6502. Alguna esperiencia en
ActionScript,
Visual C++,
Lisp,
Tcl y
Logo. Sé como funciona
Smalltalk,
APL,
Ada y
Forth... (el año pasado quise ponerme con
C#, pero lo dejaré para más adelante... o quizás no...).
Y esto es un número ínfimo comparado con los miles de lenguajes que existen. Curiosamente los jóvenes creen que sólo existen 6.
En cuanto a Perl... te puedo decir que no me ha hecho falta usar otro lenguaje en los últimos 6 años para hacer todo lo que necesito...
Y si un día necesito programar en Python, siempre puedo hacerlo desde Perl:
- Código: Seleccionar todo
#!/usr/bin/perl
use Inline Python => <<'END_OF_PYTHON_CODE';
def add(x,y):
return x + y
def subtract(x,y):
return x - y
END_OF_PYTHON_CODE
print "9 + 16 = ", add(9, 16), "\n";
print "9 - 16 = ", subtract(9, 16), "\n";
El lema de Perl es "hay más de una forma de hacerlo".
El lema de Python es "sólo hay una forma de hacerlo: la correcta".
Esto quiere decir que, mientras en Perl es un lío encontrar muchas respuestas para un mismo problema, la programación en Python te 'obliga' en cierto modo a encontrar una solución. Es programación orientada a objetos siempre y eso te da una serie de obligaciones.
Bueno, pues yo elijo el caos y la anarquía... prefiero saber que un día puedo resolver un problema con una solución orientada a objetos -también-, o quizás probar con el tradicional uso de módulos o usar programación líneal o agregarle un par de subrutinas o... hacerlo todo en una-sóla-línea.
Se dice de Perl que es un lenguaje difícil de aprender y fácil de olvidar. A esto hay que contestar que la curva de aprendizaje de Perl es un poco extraña: al principio ves que aprendes las bases muy rápido; luego hay un periodo de tiempo muy largo en que parece que no aprendes nada de nada nuevo. Y hacia el final, si sigues aprendiendo, te das cuenta de que la curva se vuelve a empinar muy fuerte y es cuando te das cuenta de que estás entendiendo la filosofía de este lenguaje (entender que el que lo inventó es un lingüista metido a informático... luego hay que escribir los programas como si fueran
poemas -o casi-).
Otro detalle en contra que se dice es que con tanto '$', '@', '%' y demás, el código es muy 'sucio' o 'complicado'. Pero eso no es culpa del lenguaje, sino de quien lo escribe. Por la misma razón de que la solución se puede reescribir de diez formas distintas, seguro que alguna de ellas será más clara que las demás.
Y otro detalle fundamental... Python no tiene
CPAN, ni tampoco ruby, ni Java, ni JavaScript, etc... tienen algo tan grande....
Es cierto que cada vez que aparece un nuevo lenguaje todos los jóvenes corren como locos porque ese nuevo lenguaje permite programar de forma más eficiente, rápida y limpia. Hay empresas que lo apoyan. Hay documentación por todas partes -lo que está pasando estos días con el lenguaje Ruby-. Pero... ¿y que hacemos con todas las librerías escritas para los lenguajes anteriores y que resuelven AHORA miles de problemas diarios? ¿Hay que volver a reescribir todo de nuevo en el nuevo lenguaje? ¿Hay que reescribir para "reinventar la rueda"?
En resumen... yo llevo 6 años con este lenguaje y estoy muy satisfecho con él... y todos los días alucino con las cosas nuevas que aparecen en CPAN. La última es este módulo:
Deco::Dive, que sirve para simular la inmersión de un buceador, sacando las gráficas de posición y profundidad... y así,
10260 módulos más...