Por qu odio Java
=================
Todo es un objeto...
--------------------
... No, no lo es!
No todo es un objeto. Ha ledo alguna vez cdigo Java? Est repleto de acciones
disfrazadas como objetos: Mutator, Traverser, Factory, Maker, Creator,
Generator, Mediator, Eliminator. De forma que no se *muta*, *recorre* o *crea*
nada, en cambio se **fuerza** un **objeto** que puede hacerlo.
Ok, algunas de esas cosas pueden resultar legtimamente tiles para patrones de
diseos *bien utilizados* y obtener un buen diseo, pero la mayor parte del
tempo no lo es!
No fuerce objetos por todas partes. Las clases son buenas cuando se ajustan a la
idea y un buen lenguaje cuenta con capacidades OOP como una **caracterstica**.
Como Steve Yegge lo plante en su articulo: [Execution in kingdom of nouns](
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html),
los verbos no deberan ser ciudadanos de segunda.
La estupidez de Java causa [asombro y comportamientos a los que uno est forzado
a acostumbrarse.]( http://www.j-paine.org/objects/objects/objects.html)
S.O.S
-----
Ok, Se top con un problema, *javac* lanza un error completamente incomprensible
y, por supuesto, se dirige a Google esperando obtener respuestas, y las
consigue:
- Click sobre ese botn
- Una ventana emergente aparece
- Llene aquellos campos de texto
- Marque ese check box
- Click sobre el icono amarillo
- Click "ok"
- Luego reiniciar el IDE
> Me estas jodiendo?
El desgraciado 99% de las "soluciones" que se encuentran son una secuencia de
clicks y acciones en una interfaz grfica de usuario de un IDE, Qu ocurre si no
estoy usando ese IDE en particular? Quizs no estoy ni siquiera en una sesin
Xorg y estoy escribiendo mi cdigo desde la comodidad de mi editor de texto
preferido en una agradable sesin de Tmux o Screen, cmo estoy supuesto a hacer
"click" aqu o all? No tengo iconos!
Cmo es posible que un error producido porque Java no puede localizar una
librera o algo similar requiere una secuencia de acciones en una GUI usando un
mouse? Y peor aun, cmo es posible que es la UNICA solucin!?
Ustedes estn consientes de que el cdigo es texto plano verdad?... VERDAD??
Usa un IDE!
-----------
James Gosling (el padre de Java) dice: [No use
Emacs](http://www.computerworld.com.au/article/207799/don_t_use_emacs_says_java_father/).
Claro, si se escribe Java y no se usa un IDE sino un buen editor de texto, uno
se somete a momentos difciles, pero esto debido a una buena razn.
La programacin en Java se torna difcil con Vim o Emacs porque Java apesta
mucho, y este sntoma habla ms sobre el lenguaje que sobre los editores.
El lenguaje necesita y es *dependiente* de un enorme, sobrecargado y algunas
veces lento programa creado para usar el lenguaje. El IDE se convierte un
soporte para sostener todo aquello en lo que el lenguaje fracasa.
As que el lenguaje que no est pensado para humanos, requiere una capa
adicional, una interfaz (el IDE) para el real uso del usuario.
Ms sobre el tema en el post: [Por qu odio los
IDEs](http://silly-bytes.blogspot.com/2016/03/why-do-i-hate-ides.html)
Proyectos dependientes de un IDE
--------------------------------
Si su proyecto usa, digamos, Eclipse, la otra persona deber usarlo tambin si
no quiere morir en el intento de mantenerlo en Netbeans por ejemplo. Si es
posible, pero se obtienen dolores de cabeza.
Encontr un ejemplo til en Internet sobre algo que necesita? Genial! Roguemos
que use exactamente el mismo IDE...
Ha intentado compilar un proyecto generado en un IDE sin el IDE? Si no se siente
extremadamente aventurero o no esta dispuesto a hacerlo sin varios horribles
hacks, entonces mejor instale ese estpido IDE.
Proyectos dependientes de un IDE ya son lo bastante malos, pero proyectos
dependientes de una **versin** especifica de un IDE?? Si... Podra tambin
simplemente dispararse en la cabeza ahora.
Para qu documentacin cuanto tienes un mouse?
----------------------------------------------
La documentacin real es casi inexistente si el IDE tiene un botn *automagico*
de la GUI para hacerlo, as que si tiene que hacerlo, ms le vale usar el IDE de
forma que pueda presionar el condenado botn!
Intentando escribir una interfaz SOAP para una aplicacin JSF? No hay problema,
solo haga Click aqu y all!. Pero si no use el IDE entonces est bastante
jodido porque documentacin sobre como **escribir** la funcionalidad es
estpida o no existe.
La documentacin se vuelve opcional si el IDE tiene un botn para hacerlo.
La automatizacin es buena!, pero si se **tiene que** usar un IDE para
implementar un servicio web SOAP en una estpida aplicacin JSF porque no hay
otra forma en la que no se necesite atravesar un proceso traumtico, entonces
usted est enterrado en mierda!
Ntese que estoy usando SOAP como ejemplo nicamente por el beneficio del
argumento, existen varios otros ejemplos, cada uno de los cuales tiene ms o
menos documentacin.
Conclusin
----------
- Existen muchos programadores estpidos, y Java es una de las cosas a las que
[culpar](http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html).
- Si no puede escribir software cmodamente sin un IDE, entonces el lenguaje es
una porquera.
- Debido a la dependencia de Java con los IDEs como (posibilitadores de malos
lenguajes)[https://dzone.com/articles/ide-bad-programming-language], **muchos
de los problemas de Java no son ms que la interseccin con los problemas con
los IDEs.**