¿Ruby o Python? Pues lo mismo da… mientras no sea Java

Durante las últimas semanas nos hemos cansado de patear Internet, intentando decidir un lenguaje de programación para un proyecto considerablemente grande. Conclusión: será Ruby o Python.

Hasta ahora había usado Java principalmente, tanto para cosas sencillas como para cosas complejas. De hecho, siempre había pensado que era un lenguaje bastante decente. Ja.

Puede que para proyectos pequeños sea un lenguaje incluso simpático, aunque obligue a escribir demasiado código comparado con otras opciones. Pero para proyectos grandes, donde debería ser el lenguaje dominante, es algo mastodóntico que no hay por dónde coger.

Es como cuando te tienes que enfrentar con la suegra. Sabes que la tienes que tratar bien, porque si no, te van a dar bien por el buffer. Pero lo mismo da, ya que por mucho que lo hayas intentado, las hostias te van a caer igualmente y probablemente tú no tengas la culpa.

Java es demasiado rígido.  Cada vez que hay que jugar con los tipos, como por ejemplo siempre que se utiliza una base de datos, la genericidad no es suficiente y hay que liarse a crear soluciones demasiado complejas y costosas de probar. Si hay que buscar maneras creativas de implementar algo, automáticamente el desarrollo se volverá ineficiente, y las horas delante del teclado acabarán por el desagüe casi sin darse cuenta.

Lo peor de todo es la gestión de las librerías. Es increíble que a estas alturas aún no haya un sistema mínimamente decente de versionado y compatibilidad de ficheros .jar. Me dijeron que probara Maven, pues tampoco. Al final acabas con toda una lista de posibles .jar, añadiéndolos uno a uno y probando la aplicación completa en busca de incompatibilidades. Y nunca estarás seguro del todo. Pues espérate, que cuando actualicen una de las librerías el lío aún va a ser más gordo, porque van a fallarte todas por efecto dominó.

Ni siquiera se puede defender ya que sea elegante. Cosas como las anotaciones lo sobredimensionan tanto que, por el camino que van, llegarán a traicionar la gran virtud que Java tenía en su nacimiento: esquivar los defectos del chapucero C++.

Por suerte siempre estará Eclipse para hacer la vida más fácil a uno. Pero sólo para J2SE, porque si hay que pelearse con J2EE sin NetBeans, prepárate para entrar en el Infierno. Aunque bueno, NetBeans es otro infierno en sí mismo, más pesado que una vaca en brazos y con tantos automatismos bastos que como necesites un mínimo grado de libertad vas arreglado.

Eso sí, comprendo que para según qué empresas, que puedan permitirse tiempos de desarrollo más amplios y no se salgan demasiado del ámbito de las aplicaciones de gestión, Java es bastante razonable.

Lo que nosotros buscamos es un lenguaje de desarrollo rápido pero escalable, que implemente la máxima del DRY, que permita soluciones creativas para algoritmos de IA y que además tenga un apoyo considerable de la comunidad.

Así que será cuestión de tirarse a la piscina. Ruby y Python parecen los lenguajes de moda y por algo será. Decidirse entre ambos ya sí que parece más complicado, ya que si eliminamos las opiniones de los fundamentalistas de cada uno, los que opinan de manera neutral no parecen decidirse por ninguno de los dos de manera clara.

De todos modos estoy ligeramente inclinado hacia Ruby. De eso tiene bastante culpa que tenga similaridades con LISP o Eiffel (el lenguaje de los que he tocado que más me ha gustado), o algunas features como los blocks o la metaprogramación.