viernes, enero 18, 2008

Java es perjudicial para la ingenieros del mañana

Bien, ahora que tengo tu atención querido lector, puedo detallar un poco más esto. En realidad, creo que ha habido una gran confusión, en un comentario anterior, me pasaron el siguiente artículo titulado: "Eminencias informáticas: 'Java es perjudicial'".
Ahora bien, antes de opinar, lo mejor es ir a la fuente directamente y leer el paper original para saber con exactitud que están diciendo estas "eminencias". Encontré el artículo, pero estoy seguro que debido a la extensión .mil de la url que lo presenta, no se puede ingresar directamente. Pero decidí no darme por vencido encontrar alguna forma de ver el artículo. Aquí tienen 2 opciones:

  1. Google Caché: pueden seguirlo en este link, pero no hay imágenes (de todos modos no importa ya que las únicas imágenes que aparecen son los 2 "eminentes").
  2. Estos .mil hijos de "mil" discriminan a los que pueden ver el artículo por la dirección ip, así que usando el querido Anonymouse.org, se puede ver en este link.
Ahora que todos podemos ver el artículo, quiero mandarle UN SALUDO GRANDE a los servidores de la U.S. Airforce


Realizada mi descarga de rabia, pasaré a expresar mi opinión del artículo. Los autores presentan tres tendencias fundamentales de los ingenieros de software actuales y futuros. Concuerdo completamente con estas falencias, especialmente con una presente consecuencia "We are training easily replaceable professional".

Perspectiva personal - experiencia diaria

El otro día me puse a ver unas charlas de Google Developers acerca de Cluster Computing y Map Reduce (por cierto, tengo que escribir de esto y lo recomiendo muchísimo). Varios algoritmos de árboles y grafos, super interesante. Lo malo fue que para resolver un problema, el presentador empezó a hablar de LISP y lenguajes funcionales. Lo único que vi en la facultad de LISP es "QUE ES UN LENGUAJE FUNCIONAL!!!!!". Tengo como pendiente estudiar un poco más de este paradigma, realmente me avergonzó no saber que es el cálculo lamda y cómo maneja las listas este lenguaje.
En ese momento me di cuenta de que no tengo una formación demasiado amplia en cuanto a paradigmas, salvo por la orientación a objetos y funcional. Pero los demás también sirven!!!!

Perspectiva educativa local - Argentina - Córdoba - UTN

Bien, los que cursan o cursaron hasta hace poco en esta universidad, sin duda pueden ver lo "actualizado" que estamos en relación con universidades estadounidenses. Yo tuve la suerte de comenzar en primero y segundo año con C y C++, después aprendí Java por mí cuenta. Desde hace 3 o 4 años se abandonó C y C++ en favor de Java.

Hagamos una comparación sencilla: Como alumno, después de aprender C++ (y ni siquiera en profundidad), aprender Java fue cosa de niños, la verdad. Sin embargo, me doy cuenta como profesor que enseña Java como lenguaje inicial de lo difícil que les resulta a las nuevas generaciones de programadores, realmente complicado. Y la verdad es que esto me pone un poco nervioso. Y ni siquiera estamos hablando de punteros (a.k.a. apuntadores).

Qué quiere el mercado de ti, querido programador?

Salvo que actualmente no estés trabajando, esta pregunta tiene respuesta sencilla: el mercado quiere piezas intercambiables con facilidad, que sepan lo mínimo e indispensable para terminar las altas, bajas y modificaciones usando Struts, Hibernate, Spring, etc. sin saber bien porqué esos requerimientos (tal vez moda, tal vez recomendación de otros desarrolladores, etc).
Ah, por si no te has dado cuenta, las "pieza intercambiable" eres tú, querido desarrollador. Pero este debate con tintes sindicalistas es harina de otro costal y para otra oportunidad.

Para resumir, el mercado no quiere que reinventemos la rueda, si ya está hecho, no hace falta hacerlo de nuevo, lo que también se puede traducir en "No intentar mejorar lo que está hecho", "No innovar", "No pienses mucho", etc.

Si, mucho bla bla, pero cuál es la conclusión de todo esto?

La conclusión no es ni revolucionaria, ni novedosa, ni pro ni en contra Java, C, C++, LISP. Te lo explicaré con un ejemplo:

Hace varios años fui a una entrevista de trabajo, donde me preguntaron cuál era el mejor lenguaje según mi consideración. Mi respuesta fue C++ y nunca me dieron el trabajo. Por supuesto reflexioné sobre el tema durante mucho tiempo y me di cuenta de la mejor respuesta a era: "Depende ¿Qué problema intentas resolver?"

Y que mejor para resolver un problema, que conocer las opciones que tenemos a mano para resolverlo. Estas opciones NO SON LENGUAJES, son PARADIGMAS de programación.
Si el único paradigma de programación que aprendemos es el orientado a objetos, entonces es probable que podamos resolver muchos problemas, pero siempre quedará la duda: "¿Habrá algo mejor?"

Recuerda: "Cuando la única herramienta que tenemos a mano es un martillo, todos los problemas son clavos"

Saludos

Pablo

7 Comments:

At 1:02 p. m., Blogger Headhunter said...

Desde el departamento de Permanent Placement de General Software dedicados a la selección directa y headhunter estamos realizando un proceso de selección para importante empresa del mundo de internet que necesita incorporar tres PROGRAMADORES JAVA para importante proyectos en internet. Se ofrece: contrato indefinido, incorporación en un equipo joven y dinámico de trabajo, con muy buen ambiente e importante desarrollo profesional. Banda salarial: mínimo 24.000€

 
At 4:04 p. m., Blogger Unknown said...

sencillamente no hay nada mas que agregar hoy dia se buscan soluciones practicas sin perdida de tiempo, y poco analisis, nada de perder tiempo en desarrollo basicamente simplificar las cosas y java ofrece justamente eso con la gran libreria de clases a disposicion.

Headhunter:
[ Banda salarial: mínimo 24.000€ ]

y esto es una broma ??

 
At 7:43 p. m., Anonymous Anónimo said...

Hola, me ha gustado mucho tu conclusión en el artículo y la tendré siempre en cuenta: "Depende ¿Qué problema intentas resolver?".

La cuestión es que tengo un pequeño problema con el JMF. Es el siguiente:

He conseguido instalarlo en mi PC bajo Windows, pero a la hora de añadir la plataforma en el NETBEANS (5.5) no me señala la carpeta que debería marcar como "carpeta del sdk".

¿Como puedo hacer que el IDE me reconozca el JMF?

Muchas gracias por tu atención.

 
At 7:45 p. m., Blogger jorgedeSaliceta said...

perdona

 
At 7:46 p. m., Blogger jorgedeSaliceta said...

ops, tienes que perdonar que se hayan escapado tantos mensajes. Si o te importa ¿me podrías dejar la respuesta como otro comentario? perdona

 
At 7:13 p. m., Blogger Pablo Frias said...

j_hash:
Creo que estos links te pueden ayudar:

De los foros de Sun

Tutorial de JMF

 
At 9:17 p. m., Anonymous Anónimo said...

Hola Pablo, Buen Post, Interesante Reflexion, ya que desarrollo en Java y en ciertos momentos me pregunto "... que estoy haciendo, ...de que se trata todo esto!!!"
Aveces pienso que al utilizar Java estoy Mentido en "La Matrix", comoun simple titere.
Pero bueno, sigo leyendo y aprendiendo y creo que se puede sacar algo bueno.

 

Publicar un comentario

<< Home