La Portada de Java

Abril 2001

Este ensayo surgió de conversaciones que he tenido con varios otros programadores sobre por qué Java olía sospechoso. ¡No es una crítica a Java! Es un estudio de caso del radar del hacker.

Con el tiempo, los hackers desarrollan un olfato para la tecnología buena (y mala). Pensé que podría ser interesante intentar escribir qué hacía que Java me pareciera sospechoso.

Algunas personas que han leído esto piensan que es un intento interesante de escribir sobre algo que no se ha escrito antes. Otros dicen que me meteré en problemas por parecer que escribo sobre cosas que no entiendo. Así que, por si sirve de algo, permítanme aclarar que no estoy escribiendo aquí sobre Java (que nunca he usado) sino sobre el radar del hacker (en lo que he pensado mucho).


El aforismo "no puedes juzgar un libro por su portada" se originó en los tiempos en que los libros se vendían en cubiertas sencillas de cartón, para ser encuadernados por cada comprador según su propio gusto. En aquellos días, no podías juzgar un libro por su portada. Pero la edición ha avanzado desde entonces: los editores actuales trabajan duro para que la portada sea algo por lo que puedas juzgar un libro.

Paso mucho tiempo en librerías y siento que hasta ahora he aprendido a entender todo lo que los editores quieren decirme sobre un libro, y quizás un poco más. El tiempo que no he pasado en librerías lo he pasado principalmente frente a computadoras, y siento que he aprendido, hasta cierto punto, a juzgar la tecnología por su portada también. Puede que sea solo suerte, pero me he salvado de algunas tecnologías que resultaron ser verdaderos desastres.

Hasta ahora, Java me parece un desastre. Nunca he escrito un programa en Java, nunca he mirado más allá de los libros de referencia sobre él, pero tengo la corazonada de que no será un lenguaje muy exitoso. Puedo estar equivocado; hacer predicciones sobre tecnología es un negocio peligroso. Pero por lo que vale, como una especie de cápsula del tiempo, aquí explico por qué no me gusta el aspecto de Java:

  1. Ha sido promocionado con tanta energía. Los estándares reales no necesitan ser promocionados. Nadie tuvo que promocionar C, o Unix, o HTML. Un estándar real tiende a estar ya establecido para cuando la mayoría de la gente oye hablar de él. En la pantalla del radar del hacker, Perl es tan grande como Java, o más, solo por sus propios méritos.

  2. Está dirigido hacia abajo. En el white paper original de Java, Gosling dice explícitamente que Java fue diseñado para no ser demasiado difícil para los programadores acostumbrados a C. Fue diseñado para ser otro C++: C más algunas ideas tomadas de lenguajes más avanzados. Al igual que los creadores de sitcoms o comida chatarra o paquetes turísticos, los diseñadores de Java estaban diseñando conscientemente un producto para personas no tan inteligentes como ellos. Históricamente, los lenguajes diseñados para que otros los usen han sido malos: Cobol, PL/I, Pascal, Ada, C++. Los lenguajes buenos han sido aquellos diseñados para sus propios creadores: C, Perl, Smalltalk, Lisp.

  3. Tiene motivos ocultos. Alguien dijo una vez que el mundo sería un lugar mejor si la gente solo escribiera libros porque tenía algo que decir, en lugar de porque quería escribir un libro. Del mismo modo, la razón por la que oímos hablar de Java todo el tiempo no es porque tenga algo que decir sobre lenguajes de programación. Oímos hablar de Java como parte de un plan de Sun para socavar a Microsoft.

  4. Nadie lo ama. Los programadores de C, Perl, Python, Smalltalk y Lisp aman sus lenguajes. Nunca he oído a nadie decir que amaba Java.

  5. La gente se ve obligada a usarlo. Muchas de las personas que conozco que usan Java lo hacen porque sienten que tienen que hacerlo. O es algo que sintieron que tenían que hacer para obtener financiación, o algo que pensaron que los clientes querrían, o algo que la gerencia les dijo que hicieran. Son personas inteligentes; si la tecnología fuera buena, la habrían usado voluntariamente.

  6. Tiene demasiados cocineros. Los mejores lenguajes de programación han sido desarrollados por grupos pequeños. Java parece estar dirigido por un comité. Si resulta ser un buen lenguaje, será la primera vez en la historia que un comité diseñe un buen lenguaje.

  7. Es burocrático. Por lo poco que sé de Java, parece haber muchos protocolos para hacer las cosas. Los lenguajes realmente buenos no son así. Te permiten hacer lo que quieres y se apartan del camino.

  8. Es pseudo-moderno. Sun ahora pretende que Java es un esfuerzo de lenguaje de código abierto y de base como Perl o Python. Este, casualmente, está controlado por una empresa gigante. Por lo tanto, es probable que el lenguaje tenga la misma monotonía y torpeza que cualquier otra cosa que salga de una gran empresa.

  9. Está diseñado para organizaciones grandes. Las organizaciones grandes tienen objetivos diferentes a los de los hackers. Quieren lenguajes que sean (se cree) adecuados para ser utilizados por grandes equipos de programadores mediocres, lenguajes con características que, como los limitadores de velocidad en los camiones U-Haul, impiden que los tontos hagan demasiado daño. A los hackers no les gusta un lenguaje que les hable condescendientemente. Los hackers solo quieren poder. Históricamente, los lenguajes diseñados para organizaciones grandes (PL/I, Ada) han perdido, mientras que los lenguajes de hackers (C, Perl) han ganado. La razón: el hacker adolescente de hoy es el CTO del mañana.

  10. A la gente equivocada le gusta. Los programadores que más admiro no están, en general, cautivados por Java. ¿A quién le gusta Java? A los ejecutivos, que no distinguen un lenguaje de otro, pero saben que siguen oyendo hablar de Java en la prensa; a los programadores de grandes empresas, que se sorprenden al descubrir que hay algo incluso mejor que C++; y a los estudiantes universitarios que les gusta seguir la corriente, que están listos para que les guste cualquier cosa que pueda conseguirles un trabajo (¿estará esto en el examen?). Las opiniones de estas personas cambian con cada viento.

  11. Su padre está en apuros. El modelo de negocio de Sun está siendo socavado en dos frentes. Los procesadores Intel baratos, del mismo tipo que se usan en máquinas de escritorio, son ahora más que lo suficientemente rápidos para servidores. Y FreeBSD parece ser al menos un sistema operativo tan bueno para servidores como Solaris. La publicidad de Sun implica que necesitas servidores Sun para aplicaciones de fuerza industrial. Si esto fuera cierto, Yahoo estaría en primera fila para comprar Suns; pero cuando trabajé allí, todos los servidores eran cajas Intel ejecutando FreeBSD. Esto augura mal para el futuro de Sun. Si Sun tiene problemas, podrían arrastrar a Java con ellos.

  12. Al DoD le gusta. El Departamento de Defensa está animando a los desarrolladores a usar Java. Esto me parece la señal más condenatoria de todas. El Departamento de Defensa hace un trabajo excelente (aunque costoso) defendiendo el país, pero aman los planes y los procedimientos y los protocolos. Su cultura es lo opuesto a la cultura hacker; en cuestiones de software tenderán a apostar mal. La última vez que al DoD le gustó un lenguaje de programación, fue Ada.

Tengan en cuenta que esto no es una crítica a Java, sino una crítica a su portada. No conozco Java lo suficientemente bien como para que me guste o me disguste. Esta es solo una explicación de por qué no me encuentro ansioso por aprenderlo.

Puede parecer frívolo descartar un lenguaje antes de haber intentado escribir programas en él. Pero esto es algo que todos los programadores tienen que hacer. Hay demasiadas tecnologías ahí fuera para aprenderlas todas. Tienes que aprender a juzgar por las apariencias cuáles valdrán tu tiempo. De manera similar, he descartado frívolamente Cobol, Ada, Visual Basic, el IBM AS400, VRML, ISO 9000, el protocolo SET, VMS, Novell Netware y CORBA, entre otros. Simplemente olían mal.

Podría ser que en el caso de Java me equivoque. Podría ser que un lenguaje promocionado por una gran empresa para socavar a otra, diseñado por un comité para una audiencia "mainstream", promocionado hasta el cielo, y amado por el DoD, sea a pesar de todo un lenguaje limpio, hermoso y potente en el que me encantaría programar. Podría ser, pero parece muy poco probable.