2.28.2008

java... oh no

Java no me gusta y no me gusta por muchas cosas que ya he comentado, odio ese quiero pero no puedo, ni es totalmente dinámico ni totalmente dinámico, ni es multiplataforma ni deja de serlo... y es que java ahora mismo está a medio camino entre C++ y otros lenguajes de alto nivel como python, ruby o C#.

El caso es que llevo unos días trabajando con python para diferentes tareas de administración y automatización y te me doy cuenta que soy mucho más productivo y puedo dedicar el tiempo a otras cosas que no sean poner try catch, casts e interminables líneas para crear una simple lista.

A nadie que tenga cierta experiencia en programación se le escapa que las listas, maps, sets y demás son estructuras de datos básicas, que se usan para casi absolutamente todo y por tanto que el lenguaje los tenga "siempre a mano" y mantenga cierta simplicidad en su uso es vital. Por ejemplo, en java para filtrar una lista tienes lo siguiente:


void filter(List src) {
List li = new ArrayList();
for (Type t: src) {
if( t != null)
li.add(t);
}
}


Menudo coñazo, es que dan ganas de morir según lo tecleas... la misma cosa en python:

li = [t for t in src if t != None];


Una cosa tan simple se convierte en algo tedioso, cuando tienes que hacer bastantes operaciones con listas, maps, etc, ya es el súmun. Y no se trata de apelotonar todo en una línea, al final eso es una bomba de relojería para un proyecto, pero tampoco estamos hablando de un tema complejo, es una simple lista que usamos para absolutamente todo. Ya no digo nada cuando veo frameworks como ruby on rails, con el que recientemente he tenido algo más de contacto.

3 comentarios:

ZuNdFoLGe dijo...

Quieres comparar java con python? Decirte que eso no se hace :)...

List li = t.removeAll(null);

Y si tuvieras que filtrar una coleccion de elementos...

li = t.removeAll(coleccion);

facil...no?

Estando tan enamorado del python le encontraras defectos a cualquier lenguaje XD...

salu2

javi dijo...

pobre...
vale, ahora esto:

[t for x in li if t.method() in [1,"2",3]]

javi dijo...

perdón:
[t for x in li if x.method() in [1,"2",3]]