Porque Java no termina de gustarme

It’s bureaucratic. From what little I know about Java, there seem to be a lot of protocols for doing things. Really good languages aren’t like that. They let you do what you want and get out of the way.

Es lo que dice Paul Graham en su ensayo Java´s Cover, la traducción sería algo así:

Es burocrático. De lo poco que conozco de Java, parece existir muchos protocolos para hacer las cosas. Los muy buenos lenguajes no son así. Ellos te permiten hacer lo que tú quieres sin estorbar.

Yo soy de los que pienso que un lenguaje de programación es solo una herramienta que te permite decirle al computador que ejecute un algoritmo que tú has diseñado. Las herramientas deben ser hechas para facilitar el trabajo de quien las usa, y esto se ha demostrado con la evolución de muchas herramientas que usamos en nuestro día a día.

Si Java fue diseñado como una evolución de C++ entonces creo que debió haber sido pensado   de manera que muchas cosas fueran más fácil, y en algunas partes lo lograron, (garbage collection, etc…) pero a medida que ha ido avanzando el lenguaje se ha vuelto más complejo, hay muchas cosas más complicadas y entonces la herramienta, para mi punto de vista, deja de ser útil.

Esta filosofía se ha transmitido a otros proyectos derivados o basados en Java, tal como es el caso de los Web Frameworks para Java. Si han usado uno verán la complejidad que ellos agregan al ecosistema, además de las complejidades que el lenguaje en sí tiene, solo traten de configurar uno de ellos y empezar a editar cantidad de archivos xml en un editor de texto.

Java se ha vuelto popular gracias a un gran esfuerzo publicitario que comenzó la extinta Sun Microsystems y que luego ha seguido ejerciendo Oracle. Esto además que fueron capaces de convencer a las universidades de que si no enseñaban Java sus egresados se quedarían fuera del campo laboral.

Hace años tuve una profesora quien me enseño el principio KISS (Mantenlo Simple Estúpido), el cual es importante a la hora de diseñar sistemas. Creo que lo que uno crea debe ser entendible, practico y funcional, si es complicado es difícil  de usar y mucho más difícil de mejorar. En este sentido creo que los lenguajes de programación deben seguir estos principios, esto claro sin restarle Poder, siempre permitiéndote lograr tus objetivos de la mejor manera y no restringido por las limitaciones del lenguaje.

Esto me lleva al Zen de Python y puedo mencionar algunos de sus puntos:

  • Simple es mejor que complicado.
  • Si la implementación es difícil de explicar, es una mala idea.
  • La legibilidad cuenta.

 

Existen lenguajes para cada tarea, así un carpintero usa un martillo para clavar y una sierra para cortar, nosotros los que desarrollamos tenemos varias herramientas para cada caso. Existe C para los casos donde se necesita más control sobre el hardware donde se va a ejecutar nuestro programa, y Python cuando queremos hacerlo ya.

En mi caso particular uso Java solo si el requerimiento así lo pide, y es muy común ya que Java se convirtió en el lenguaje de-facto en las corporaciones. Si tengo control sobre el lenguaje a usar prefiero usar Python, a menos que necesite usar C en casos muy concretos, ya que como dije anteriormente es una herramienta que me ayuda a realizar mi trabajo de una manera eficaz y eficiente manteniendo las cosas simples “KISS”.

Gracias a que Oracle no ha sido un muy buen padre para el lenguaje (así como otros proyectos que tiene bajo su tutela) se ha visto un despunte pequeño pero continuo en la popularidad de Java. Pero esto puede cambiar gracias a la popularidad de los sistemas basados a Android que usan como lenguaje de programación a Java.

En lo general siempre recomiendo a otros a no casarse a ningún lenguaje en específico, ya que como dije antes, son solo herramientas, pero si puedes evitar Java hazlo, te aseguro que no te arrepentirás.

 

You may also like...