Mi carrera la estudié en la Escuela Superior de Cómputo (ESCOM) que forma parte del Instituto Politécnico Nacional (IPN) en la Ciudad de México.
En ese entonces la gran razón por la que muchos compañeros —y uno que otro profesor— preferían programar en Java, era que en dicho lenguaje no existen los temibles apuntadores —y sinceramente dudo que esa razón haya cambiado ahora.—
A decir verdad nunca he sido un gran fan de Java.
Este artículo le da justo al clavo y expresa mi más profundo sentir sobre el tema.
And thus, the ability to understand pointers and recursion is directly correlated with the ability to be a great programmer.
Que quede claro que no demerito al lenguaje en si, o al programador que utilice Java como herramienta principal.
No pude evitar mostrar una sonrisa en mi rostro mientras leía lo siguiente:
The recruiters-who-use-grep, by the way, are ridiculed here, and for good reason. I have never met anyone who can do Scheme, Haskell, and C pointers who can’t pick up Java in two days, and create better Java code than people with five years of experience in Java, but try explaining that to the average HR drone.
¿La razón? en un proyecto de PEMEX tomé Java y en un par de días le di la vuelta al “líder de proyecto” y a su achichincle, ambos decían tener años de experiencia en Java y bueno, no creo que valga la pena comentar acerca de sus otras “habilidades.”


Los apuntadores son muy bonitos cuando desarrollas espaguettis pero que tal a la hora de hacer refactoria?
Tambien me parece muy obvio que despues de programar 10 años en tablillas de barro se les haga facil dominar Java en un dia (para mi tambien lo fue), despues de todo Java esta pensado para ser de facil aprendizaje.
Natural tambien que alguien que solo conosca Java la tenga calletano para aprender algun lenguaje “bonito” del que solo aparesca un proyecto cada 2 años, el punto ahi es si alguien tendra alguna vez necesidad de aprenderlo una vez encarrerado en proyectos Java.
Es decir: saber manejar automoviles no te garantiza que se te facilite aprender a usar una carreta de caballos,sin embargo saber usar una carreta te da muy buenas bases de detreza que te facilitan aprender a manejar automoviles.
Digo almenos en mi caso fue asi.
Sabía que alguien iba a brincar por brincar y a perder el punto del artículo.
Hmmm veamos:
1. Código espagueti (spaghetti code), no veo mucho que tenga que ver esta definición de código espaguetti con lo expuesto aquí. Creo que ya nadie utiliza GOTO’s (o al menos no debería hacerlo). Y claro que puedes hacer refactorización con apuntadores, todo depende del diseño que utilices o de cómo te las ingenies para arquitecturar tu solución, ¿o crees que el kernel de Linux es reescrito completamente cada que sacan una nueva versión o lo mejoran? ¿o estará escrito en Java? ¿o no se puede hacer refactorización en C++ o C?
2. Si, la facilidad de Java es precisamente lo que se critica, pero en el ámbito de la enseñanza en una carrera de Ciencias del Cómputo (favor de leer el artículo ligado).
3. Jajaja un proyecto cada 2 años… nada más alejado de la realidad. Posiblemente sea cierto si lo único que checas es la sección de trabajo del Universal.
4. Dudo que manejando una carreta de caballos te de la destreza para manejar un automóvil (y menos en la Ciudad de México).
Como mencioné, el punto del artículo no es criticar al lenguaje en sí, ni a los que lo emplean como herramienta principal.
Pero si alguien se siente aludido u “ofendido” por él, es porque programa en Java porque los apuntadores se le hacen difíciles.
Ya tiene tiempo que no le entro a una holywar pero hagamos un poco de practica:
1.”puedes hacer refactorización con apuntadores, todo depende del diseño…”. Tambien puedes podar el cesped con tijeras, igual y hasta queda mas bonito que si lo hiceras con podadora, admito que es un dilema, pero me pagan lo mismo.
Lo que podría decir es que java es fácil refactorizar A PESAR del diseño y del programdor. Mi punto es que java puede conservar un considerable nivel claridad por muy maleta que sea el programador (tiene eso algo de malo?).
Ahora que si de plano el amor por los apuntadores es muy grande ahí esta C#, La onda de POO no es restringir nadamas por que si, el tipado fuerte tampoco se hizo nadamas por joder y hechar a perder la fiesta de los Casteos. Si la bronca es este tipo de restricciones nada impide en java o en C# volver a reinventar las estrucutras de datos ya probadas que puedes utilizar con un simple import.
2. Por segunda vez leido igual y se me escapaba algo, pero no, me encuentro de nuevo con el mismo colega tratando de aceptar la dura realidad sobre su recien manifiesta senectud tanto de el como de sus paradigmas.
Aparte de tachar de “facilones” a los paradigmas nuevos (se supone que eso es una desventaja?) recurre a otros clásicos como:
“Estos chavos de ahora…”
“En mis tiempos….”
“Aprender Griego y Latín tenia sus ventajas…”
Seguido de un intenso derroche de sabiduria milenaria para tratar de demostrar que “facil==malo”, “dificil==bueno”
Que si Linux es de “cuando los hombres eran hombres” (Linus T. dixit).
Y Google… bastante parcial el “chavo”, habría que conocer su opinión sobre el Android SDK de Google .
Espero de todo corazón nunca terminar así, y que cuando a java le llegue su momento el que se haga viejo sea el lenguaje y no yo.
3. Sin importar si buscas en la prensa o en las Craiglist no hay mas que comparar la demanda de progamadores java Vs el que mas te guste año tras año, el punto no seria el dato sino la tendencia completa (ahí me falto claridad lo admito).
Hecharle la culpa a los drones de RH o a los yupis de Direccion no ayuda mucho.
4. Hacer que un animal vivo haga exactamente lo que tu le ordenas con una cuerda no son piñas ni es lo mismo que girar una llave y usar dirección hidráulica, aun así si mi analogía salio chafa espero al menos que la idea si se haya visto.
5. “Como mencioné, el punto del artículo no es criticar al lenguaje en sí, ni a los que lo emplean como herramienta principal.” Aja, si como cuando doña Margara dice “Con todo respeto….”
Aprender apuntadores fue difícil para mi, así también me costo mucho trabajo lograr alcanzar la punta de mi nariz con el dedo gordo del pie. Al final logre dominar ambas técnicas y en el futuro me sirvieron para lo mismo.
¿Que no le gustan las holy wars? si usted mismo prendió la mecha.
Ay compañero, ya va a empezar como en ESCOM, pero bueno.
1. Aquí no discutimos si le pagan más o menos que a alguien de C++. Y si nos pusieramos a investigar no creo que los programadores mejor pagados del mundo programen en Java.
→ con ese A PESAR le dio justo al clavo sobre lo que discute ese señor.
Esos malos programadores también se convierten en líderes de proyecto (y malos por cierto), en gente que programa las interfaces con las bases de datos (de lo menos optimizado) y efectivamente, Java les ayuda a tapar sus porquerías. ¿No sería mejor tener en esas posiciones a gente capaz en lugar de peleles?
2. Obviamente esos comentarios sobre las tecnologías y la edad eran para traer algo de comedia al artículo. Pero de nuevo, perdió el punto central. Tacha de fáciles algunas cosas, si, pero ese no es el meollo del asunto.
→ tache, eso no es lo que trata de ilustrar el señor en su artículo.
3. Nadie necesita ayuda con eso, no se está debatiendo el mercado de los lenguajes, de nuevo perdió el punto del artículo.
4. Si, creo que su subsistema de analogías anda mal, a lo mejor le andan fallando los apuntadores.
5. Yo no aplico la tech de doña Márgara, usted lo está interpretando mal. Me gusta decir las cosas directas y si creyera que todos los que programan en Java son una bola de …, simplemente lo diría, para eso tengo un blog.
6. Felicidades. También para mi fue muy complicado en mi primer acercamiento, de hecho no los entendí a la primera (y no me da pena decirlo ni me siento agredido), pero agradezco el haberlos comprendido plenamente y créame que me sirvieron para volverme un mejor programador (y fue gracias a un maestro de ESFM, los de ESCOM muy pocos rifan.)
Y esta es mi participación final, no voy a discutir sobre un sin sentido, y menos si la discusión va en una dirección diferente al tema que se plantea.
Saludos.
De hecho yo tampoco pensaba agregar mas, normalmente cuando hago platica suelo meter muchos temas ruido, hacerla de jamón es para mi una manera de hacer una platica con buena retroalimentacion, vaya usted conoce mis tecnicas. Aveces quiza sea mala idea pero debe admitir que es una buena manera de generar ideas on the fly. Apoco no has visto aquella celebre Holywar que se hecho Linus Torvalds con un sujeto que le pregunto porque no uasaba C++ en sus proyectos y Linus simplemente le contesto que “C++ era una *!$%@” ?, o aquella de Linus vs. Tanenbaun, leerlas aparte de divertido es una mina de informacion.
Se me acaba de ocurrir la idea de hacer un post sobre Holywars.
Vale, ahí me avisa cuando lo publique porque no veo la dirección de sus feeds por ningún lado.
Saludos.
Hola!
Que bien, un compañero escomita! (ya pasó de moda lo de escomios
)
Pues el artículo me resultó bastante bueno, yo tampoco pude evitar la sonrisa al leer lo mismo que tu.
A pesar de todo, aunque mis lenguajes favoritos son ensamblador, C y PHP. También usé java mientras estaba en la vacacional (vocacional) Y no creo estar muy perdido al afirmar que cuando uno aprende a manejar un lenguaje, aprender otros es mas sencillo :).
Algunos como tu dices, somos de la vieja escuela, el comentario de “Cuando los hombres eran hombres y programaban sus propios controladores…” es la neta. Pero las cosas cambian y pues ni modo.
Recuerdo cuando hice mi primera instalación de FreeBSD … era una tremenda joda!!! estar viendo todos los irq’s ver conflictos, arreglarlos… pffffffffff. Y ahora ya es mucho mas sencillo :).
Aún así lo nuevo también tiene ventajas. Lo chido de JAVA es que es una navaja suiza. Pero C es C y se le respeta xD.
chido tu blog! me latió el post!
Saludos
Hola, ¡Yo también estudio en ESCOM! No he visto que hablen muy bien de la escuela… A mi me ha gustado mucho, maestros y todo, aunque tal vez solo sea suerte… Pero yo creo que todo depende de uno mismo, la escuela, aunque influye, no es un pretexto válido para ser malo.
La holywar (¿Es como flamewar?) de no ser por la diversion que les provocó me pareció infundada, a mi me parece que el post expresa correctamente la idea, ¡Hasta el título lo dice!
Java fue mi primer lenguaje, conocí C++ y los punteros hasta dos cursos después; En estructuras de datos, pero nos dieron la libertad de elegir en que lenguaje realizar nuestras prácticas, yo elegí java, principalmente por costumbre, no usamos hashtables ni nada de las librerías que incluye java, las desarrollamos “desde abajo” utilizando “referencias” que hasta donde yo las he utilizado hacen lo mismo que los punteros de C/C++ y también tienen su grado de complejidad.
En resumen: Al igual que pienso que la escuela no hace al alumno sino al revés, el lenguaje solo es una herramienta para el programador, lo que importa es su habilidad para resolver problemas y otra habilidad también muy importante, pero que no se mencionaba con tanta frecuencia como la anterior (hasta el boom que tuvo RoR), es la de elegir el lenguaje que mejor se ajuste a las necesidades del proyecto.
Esto último viene por lo que escribiste aquí: “Que quede claro que no demerito al lenguaje en si, o al programador que utilice Java como herramienta principal”
Tal vez si utiliza java es porque el trabajo o los proyectos que realiza dicho programador asi lo requieran, y si lo utiliza para otras cosas es que le falta la segunda habilidad que mencione, o que la costumbre con “su lenguaje” es muy fuerte.
¡Esta “bueno” el blog, saludos!
@BRIO:
Gracias por los comentarios.
@Miguel:
Totalmente de acuerdo, la escuela no hace al alumno, aunque influye en el desarrollo acelerado de su potencial.
Si, el señor Nation84 y yo somos viejos conocidos, estudiamos juntos en ESCOM (graduados del 2005 si no mal recuerdo je).
Las referencias em Java creo son más bien como las referencias de C++, no sabría decir si hay algo realmente igual a los apuntadores.
Gracias por los comentarios.
Hola!, yo tambien voy en Escom, salu2, y bueno, me parece muy importante el hecho de no solo utilizar un lenguaje, pues considero que un buen programador debe saber y usar de todo un poco. Y que mal que haya personas que se limiten al uso de un solo lenguaje.
Y claro que Java no es todo, existen tantas cosas que explorar.
Por cierto la imagen esta excelente, muy divertida parece genial.
La razon x la q sun hizo a java sin pointers es para seguirdad, integridad y encapsulacion, y el efecto secundario fue la facilidad para los programers