31 de mayo de 2008

La venganza de los nerds (2 de 11)

Es de suponer que si creas un lenguaje nuevo, es porque piensas que será mejor de algún modo que lo que otras personas ya tienen. Y de hecho, Gosling lo pone claramente en el primer informe de Java que Java fue diseñado para corregir algunos problemas con C++. Ahí lo tienen: los lenguajes no son todos equivalentes. Si sigues el rastro a través del cerebro del jefe con-cabello-puntiagudo hasta Java y luego de regreso por la historia de Java hasta sus orígenes, terminas con una idea que contradice la suposición con la que empezaste.

Entonces, ¿quién está en lo cierto? ¿James Gosling o el jefe con-cabello-puntiagudo? No es sorpresivo, Gosling acierta. Algunos lenguajes son mejores, para ciertos problemas, que otros. ¿Y saben qué?, eso despierta algunas dudas. Java fue diseñado para ser mejor, para ciertos problemas, que C++. ¿Qué problemas? ¿Cuándo es Java mejor y cuándo lo es C++? ¿Existen situaciones en las que otros lenguajes sean mejores que los dos anteriores?

Una vez que empiezas a considerar este asunto, has abierto una verdadera lata de gusanos. Si el jefe con-cabello-puntiagudo tuviera que pensar acerca del problema en toda su complejidad le explotaría el cerebro. Pero mientras considere a todos los lenguajes equivalentes, todo lo que tiene que hacer es elegir aquel que le parezca tener más momentum, y ya que se trata más de un problema de moda que de tecnología, incluso él podría tener la mejor respuesta. Pero si los lenguajes varían, repentinamente debe de resolver dos ecuaciones simultáneas, intentar encontrar el balance entre dos cosas sobre las cuales no sabe nada al respecto: la conveniencia de los aproximadamente veinte lenguajes de vanguardia para el problema que necesita resolver, y las probabilidades de encontrar programadores, bibliotecas, etc, para cada uno. Si eso es lo que hay al otro lado de la puerta, no es sorpresivo que el jefe con-peinado-puntiagudo no quiera abrirla.

La desventaja de creer que todos los lenguajes de programación son equivalentes es que no es verdad. Pero la ventaja es que hace tu vida mucho más simple. Y creo que esa es la razón principal de que esa idea esté tan difundida. Es una idea cómoda.

Sabemos que Java debe ser bastante bueno, porque es el nuevo lenguaje cool de programación. ¿Lo es acaso? Si ves el mundo de los lenguajes de programación desde lejos, parece que Java es la última novedad. (Desde aún más lejos, todo lo que se ve es el enorme y destelleante espectacular pagado por Sun.) Pero si miras dentro de este mundo de cerca, encuentras que hay grados en lo cool. Dentro de la subcultura hacker, hay otro lenguaje llamado Perl que es considerado mucho más cool que Java. Slashdot, por ejemplo, es generado con Perl. No creo que encuentren a esos tipos usando Java Server Pages. Pero hay otro lenguaje nuevo llamado Python, cuyos usuarios tienden a desdeñar a Perl, y hay más en sala de espera.

Si miras de cerca a esos lenguajes en orden, Java, Perl, Python, puedes notar un patrón interesante. Al menos, notas ese patrón si eres un hacker de Lisp. Cada uno es progresivamente más como Lisp. Python copia incluso características que muchos hakers de Lisp consideran errores. Podrías trasladar programas simples de Lisp a Python línea a línea. Es 2002, y los lenguajes de programación ya casi se ponen al día con 1958.

No hay comentarios.: