lunes, abril 17, 2006

Java, Python y Algo más..

Incluso los menos amañados en el mundo de la programación seguramente hemos escuchado aunque sea remotamente disputas sobre lenguajes de programación, cosas del tipo Fortran es mejor que C, ó Cobol te permite…, (¡Sigamos! que puedo pegarme todo el post con frases de este tipo xD ); incluso sin conocer los nombres de esos lenguajes de programación con un par de minutos de escucha ya sabremos que es lo que se cuece y una cosa es seguro cuando alguien defiende un lenguaje es poco probable que le hagan cambiar de opinión así que en este post trataremos Python y Java desde un punto de vista productivo, y ver ambas como herramientas las cuales deberíamos usar según nuestras necesidades y/o nuestros objetivos; esto que les cuento en parte me lo ha transmitido Stephen Ferg el escritor de un articulo que me ha dado la inspiración y me ha dado ese empujón que muchas veces nos hace falta para plasmar y reafirmar ideas que desde hace tiempo, quizás nos hubiese gustado gritar xD (ha hablado mi lado espiritual).
Comencemos hablando de estos dos gigantes: Python y Java. El primero de estos es un lenguaje de programación interpretado y esta entre nosotros desde 1990 y nos da muchas facilidades para comenzar ya que hay muchas cosas hechas que nos pueden servir como ejemplo ó como material para nuestro proyecto. Java esta inspirado en la sintaxis de C++ y nace casi al mismo tiempo que su colega Python aunque a partir de 1995 fue cuando empezó su mayor popularidad, es compilado e interpretado.
En cuanto a estos dos lenguajes lo que al parecer no hay duda es que Python es mucho más productivo que Java:
+ En Java los nombres de variable incluyendo tipos deben ser declarados explícitamente y esta claro que si asignamos un objeto de tipo incorrecto esto generara un error o “excepción de tipo”(hablando con mas propiedad); en cambio en Python no necesitamos declarar nada podemos asignar a una variable un objeto y luego asignarle otro de un tipo diferente. Esta diferencia hace que hablemos de “estáticamente mecanografiada” (Java) y “dinámicamente mecanografiada” (Python).
+ Python es mas conciso, necesita menos palabras para realizar una tarea donde Java requeriría muchas mas palabras. El clásico “Hola mundo” en estos lenguajes seria:

Java:
public class HelloWorld
{public static void main (String[] args)
{ System.out.println("Hello, world!");
}

}

Mientras que en Python:
print "Hello, world!"

+ Imaginemos que tenemos una clase a la que se le pueden pasar 1 ó 2 ó 3 argumentos en Java tendremos que crear 3 constructores para dicha clase mientras que Python solo 1 constructor con valores defaults para los argumentos opcionales.
+ De forma general en Java los caracteres de control ( ) { } ; se tienen que usar probablemente en cada sentencia y sino un ultimo ejemplo:

if ( a > b )
{
a = b;
b = c;
}
Vs.
if a > b :
a = b
b = c

Estas son algunas de las cosas por la que el Ferg en su articulo, califica a Python como un lenguaje de 5 a 10 veces mas pruductivo que Java. Mas información.

En conclusión y a mi parecer, lenguajes como Python nos dan la ventaja de tener que teclear menos, el ahorro considerable esta en el tiempo que necesitamos para realizar la misma aplicación en uno y en otro. Aunque yo con mi poca experiencia me decante mas por lenguajes compilados pienso que deberíamos tener claro que cada lenguaje es una herramienta que debemos tener en nuestro cajón y no cerrarnos a usarla en circunstancias graves ó no tan graves, pienso que todo programador no deberia depender exclusivamente de un lenguaje para crear una aplicación... Bueno y ¿Ruby?...

Fuentes:
Articulo Original de Stephen Ferg
Java en iec.csic.es
Python en Wikipedia

Menéame      Del.icio.us