LA PORTADA DE JAVA
OriginalAbril de 2001
Este ensayo surgió de conversaciones que tuve con otros programadores sobre por qué Java me parecía sospechoso. No es una crítica de Java, sino un estudio de caso sobre el radar de los hackers.
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, déjenme aclarar que no estoy escribiendo aquí sobre Java (que nunca he usado) sino sobre el radar de los hackers (sobre el que he pensado mucho).
El aforismo "no se puede reconocer un libro por su portada" tiene su origen en la época en que los libros se vendían con tapas de cartón simples, para que cada comprador las encuadernara según su gusto. En aquella época, no se podía reconocer un libro por su portada. Pero la industria editorial ha avanzado desde entonces: los editores actuales se esfuerzan por hacer que la portada sea algo que permita reconocer un libro.
Paso mucho tiempo en librerías y siento que ya 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 sobre todo delante de ordenadores, y siento que he aprendido, hasta cierto punto, a juzgar la tecnología también por su apariencia. Puede que sea pura suerte, pero me he salvado de unas cuantas tecnologías que resultaron ser una auténtica porquería.
Hasta ahora, Java me parece un desastre. Nunca he escrito un programa en Java, nunca he echado más que una ojeada a libros de referencia sobre el tema, pero tengo el presentimiento de que no será un lenguaje muy exitoso. Puede que me equivoque; hacer predicciones sobre tecnología es una actividad peligrosa. Pero, por si sirve de algo, como una especie de cápsula del tiempo, aquí está el motivo por el que no me gusta el aspecto de Java:
-
Se ha promocionado con mucha energía. No es necesario promover estándares reales. Nadie tuvo que promover C, Unix o HTML. Un estándar real tiende a estar ya establecido cuando la mayoría de la gente se entera de él. En el radar de los hackers, Perl es tan grande como Java, o más, simplemente por la fuerza de sus propios méritos.
-
El objetivo es bajo. En el libro blanco 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 unas cuantas ideas tomadas de lenguajes más avanzados. Al igual que los creadores de comedias de situación o comida basura 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 los usen otras personas han sido malos: Cobol, PL/I, Pascal, Ada, C++. Los buenos lenguajes han sido aquellos que fueron diseñados para sus propios creadores: C, Perl, Smalltalk, Lisp.
-
Tiene motivos ocultos. Alguien dijo una vez que el mundo sería un lugar mejor si la gente escribiera libros sólo porque tuviera algo que decir, en lugar de porque quisiera escribir un libro. De la misma manera, la razón por la que oímos hablar de Java todo el tiempo no es porque tenga algo que decir sobre los lenguajes de programación. Oímos hablar de Java como parte de un plan de Sun para socavar a Microsoft.
-
A nadie le gusta. Los programadores de C, Perl, Python, Smalltalk y Lisp adoran sus lenguajes. Nunca he oído a nadie decir que le encanta Java.
-
La gente se ve obligada a utilizarlo. Muchas de las personas que conozco que utilizan Java lo hacen porque sienten que tienen que hacerlo. O bien 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 dirección les dijo que hicieran. Son personas inteligentes; si la tecnología fuera buena, la habrían utilizado voluntariamente.
-
Tiene demasiados cocineros. Los mejores lenguajes de programación han sido desarrollados por pequeños grupos. Java parece estar dirigido por un comité. Si resulta ser un buen lenguaje, será la primera vez en la historia que un comité haya diseñado un buen lenguaje.
-
Es burocrático. Por lo poco que sé sobre Java, parece que hay muchos protocolos para hacer las cosas. Los lenguajes realmente buenos no son así. Te permiten hacer lo que quieres y no interfieren.
-
Es pseudomoderno. Sun ahora pretende que Java es un lenguaje de código abierto de base como Perl o Python. Resulta que éste está controlado por una empresa gigante, por lo que es probable que el lenguaje tenga la misma torpeza y deslucidez que cualquier otra cosa que salga de una gran empresa.
-
Está diseñado para grandes organizaciones. Las grandes organizaciones tienen objetivos diferentes a los de los hackers. Quieren lenguajes que sean (y se crea que sean) adecuados para el uso de grandes equipos de programadores mediocres, lenguajes con características que, como los limitadores de velocidad de los camiones de mudanzas, impidan que los tontos hagan demasiado daño. A los hackers no les gusta un lenguaje que les hable con condescendencia. Los hackers solo quieren poder. Históricamente, los lenguajes diseñados para grandes organizaciones (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.
-
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 no dejan de oír hablar de Java en la prensa; a los programadores de las grandes empresas, que se sorprenden al descubrir que hay algo incluso mejor que C++; y a los estudiantes universitarios que solo se limitan a enchufar y 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.
-
Su padre está en apuros. El modelo de negocio de Sun se está viendo socavado en dos frentes. Los procesadores baratos de Intel, del mismo tipo que se utiliza en las máquinas de escritorio, son ahora más que suficientemente rápidos para los servidores. Y FreeBSD parece ser un sistema operativo para servidores al menos tan bueno como Solaris. La publicidad de Sun implica que se necesitan servidores Sun para aplicaciones de potencia industrial. Si esto fuera cierto, Yahoo sería el primero en la cola para comprar Suns; pero cuando yo trabajaba allí, los servidores eran todos equipos Intel que ejecutaban FreeBSD. Esto es un mal presagio para el futuro de Sun. Si Sun tiene problemas, podría arrastrar a Java con ellos.
-
Al Departamento de Defensa le gusta. El Departamento de Defensa está alentando a los desarrolladores a utilizar Java. A mí me parece que es la señal más condenatoria de todas. El Departamento de Defensa hace un buen trabajo (aunque caro) en la defensa del país, pero les encantan los planes, los procedimientos y los protocolos. Su cultura es la opuesta a la cultura hacker; en cuestiones de software tienden a apostar mal. La última vez que al Departamento de Defensa le gustó realmente un lenguaje de programación, fue Ada.
Tenga en cuenta que esto no es una crítica de Java, sino de su portada. No conozco Java lo suficientemente bien como para que me guste o no. Esta es solo una explicación de por qué no me siento ansioso por aprenderlo.
Puede parecer despreocupado descartar un lenguaje antes de haber intentado siquiera escribir programas en él, pero esto es algo que todos los programadores tienen que hacer. Hay demasiadas tecnologías disponibles para aprenderlas todas. Hay que aprender a juzgar por las señales externas que harán que valga la pena dedicarle tiempo. Yo también he descartado con desdén Cobol, Ada, Visual Basic, IBM AS400, VRML, ISO 9000, el protocolo SET, VMS, Novell Netware y CORBA, entre otros. Simplemente, me 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 un público "general", promocionado hasta el cielo y adorado por el Departamento de Defensa, resulte ser, no obstante, un lenguaje limpio, hermoso y poderoso en el que me encantaría programar. Podría ser, pero parece muy poco probable.