22 de mayo de 2008

La venganza de los nerds (1 de 11)

Escribí el nueve de mayo que haría más traducciones y anuncié el texto que quería postear en español por entregas. Se trata de 'La venganza de los nerds' de Paul Graham, publicado en mayo del 2002 en internet. Cuando lo dimensioné me di cuenta del número de entregas y de párrafos por post, y va a ser una serie bastante larga. De seis párrafos en adelante y el último fragmento programado para el 20 de agosto, paciencia.

"Estábamos buscando a programadores de C++. Logramos arrastrar a muchos de ellos a medio camino de Lisp"
- Guy Steele, co-author de la especificación de Java

La venganza de los nerds


En el negocio del software hay una lucha en curso entre los académicos cabeza-de-punta, y otra fuerza igualmente formidable, los jefes con-cabello-puntiagudo. Todos sabemos quien es el jefe con-cabello-puntiagudo ¿verdad? Creo que la mayoría de las personas en el mundo de la tecnología no sólo reconocen ese personaje de caricatura, sino que conocen a la persona en su compañía a partir de la cual puede modelarse.

El jefe con-cabello-puntiagudo milagrosamente combina dos cualidades que son comunes por sí mismas, aunque rara vez juntas: (a) no sabe nada en absoluto acerca de tecnología, y (b) tiene opiniones muy firmes acerca della.

Supongamos, por ejemplo, que debes escribir un fragmento de software. El jefe con-cabello-puntiagudo no tiene ni idea de cómo debe funcionar ese software, y no puede distinguir un lenguaje de programación de otro, y sin embargo sabe en qué lenguaje de programación debes escribirlo. Exactamente. Piensa que debes escribirlo en Java.

¿Por qué es que piensa eso? Echemos un vistazo dentro del cerebro del jefe con-cabello-puntiagudo. Lo que está pensando es algo como esto. Java es un estándar. Sé que debe serlo porque he leído de él en la prensa todo el tiempo. Puesto que es un estándar, no me voy a meter en problemas por usarlo. Y eso también significa que siempre habrá un montón de programadores de Java, por lo que si los programadores que trabajan para mí renuncian, como misteriosamente siempre le hacen los programadores que trabajan para mí, puedo reemplazarlos fácilmente.

Bueno, esto no suena tan irracional. Pero todo está basado en una suposición no hablada, y resulta que esa suposición es falsa. El jefe con-cabello-puntiagudo cree que todos los lenguajes de programación son prácticamente equivalentes. Si eso fuera verdad, estaría dando justo en el blanco. Si los lenguajes son todos equivalentes, claro, usen cualquier lenguaje que todos los demás estén usando.

Pero todos los lenguajes no son equivalentes, y creo que puedo probarlo sin siquiera meterme en las diferencias entre ellos. Si le hubieras preguntado en 1992 al jefe con-cabello-puntiagudo en qué lenguaje debía escribirse el software, él hubiera respondido con tan pocos titubeos como ahora. El software debe escribirse en C++. Pero si todos los lenguajes son equivalentes, ¿porqué debería de cambiar alguna vez la opinión del jefe con-cabello-puntiagudo? De hecho, ¿por qué hubieran siquiera debido molestarse lo que desarrollaron Java en crear un lenguaje nuevo?

1 comentario:

Nostromo dijo...

Tus posts son bastante interesantes, me parece. No sé porqué tienes tan pocos comentarios.

"Pero si todos los lenguajes son equivalentes [...] ¿Por qué hubieran siquiera debido molestarse los desarrolladores de Java en crear un lenguaje nuevo?"

Es una pregunta bien interesante. ¿Porqué no seguimos programando en fortran? por ejemplo.

Muchos programadores se aferran (¿nos aferramos?) al primer lenguaje que usaron. Como quien sólo habla su lengua materna y no se molesta en aprender otro idioma. Muchos se conforman estudiando la Lingua franca como el inglés (o java para el caso).

Sin embargo, aunque el lenguaje sea malo un buen programador será capaz de sacarle provecho. PHP es un ejemplo de esto.