Date: September 11, 2007 9:08:05 AM GMT-03:00
Subject: Como matar a un dragon
¿Cómo matar a un dragón?
recopilación (desde varios sitios) de formas que tiene un programador
para matar a un dragón, utilizando diferentes herramientas o lenguajes
de programación.
C: Llega, mira al dragón con mirada de desprecio, tira la espada,
degolla al dragón, encuentra a la princesa y la ignora para ver los
últimos checkins del cvs del kernel de linux.
C++: Crea un pincho básico y va juntando funcionalidades hasta tener
una espada compleja que apenas consigue entender. Mata al dragón pero
se atasca en medio del puente por culpa de pérdidas de memoria (memory
leaks).
Ensamblador: Cree que está haciendo lo más correcto y eficiente, pero
pone una A en lugar de una D y mata a la princesa para terminar
comiéndose al dragón.
Java: Llega, encuentra al dragón, desarrolla un framework para
aniquilación de dragones en múltiples capas, escribe varios artículos
sobre el framework, pero no mata al dragón.
Smalltalk: Llega, analiza al dragón y a la princesa, se da la vuelta y
se va. Y luego dice: "Ellos son muy inferiores".
.NET: Llega, ve la idea del desarrollador de Java y la copia, intenta
matar al dragón, pero el bicho se lo come.
Delphi: Crea una aplicación rápidamente, mata al dragón, enamora a la
princesa pero cuando va a donde su padre (el Rey) este le niega el
matrimonio porque le dijeron que los caballeros de verdad conocen C.
ADA: Programa un misil de los EEUU para acabar con el dragón, pero se
olvida de manejar un excepción y mata al dragón, a la princesa, al
castillo, al pueblo debajo del castillo y todo el terreno en un radio
de 15 km.
Fortran: Llega y desarrolla una solución con 45 mil líneas de código,
mata al dragón, va al encuentro de la princesa, pero ella le llama
tirillas y se va corriendo detrás del programador de java que era
elegante y además rico.
COBOL: Llega, ve al dragón y piensa que es demasiado viejo para
conseguir matar un bicho de ese tamaño y quedarse con la princesa, y
entonces se va.
Clipper: Monta una rutina que carga un array de codeblocks para
insultar al dragón, cantarle a la princesa, cargar la espada a
memoria, moler al dragón, limpiar la suciedad, preparar un vaso de
leche condensada con moras para la princesa, darse un baño, encender
el auto, ponerle gasolina y volver a casa. A la hora de ejecutar
recibe un "Bound Error: Array Access" y el dragón se lo come con
patatas.
Lisp: Donde el famoso caballero andante, tras hablar con numerosos
expertos en matar dragones y modelar el conocimiento que ellos poseen
programa el sistema y se da cuenta de que ha dejado algún paréntesis.
Haskell: Define una lista infinita de espadas y una lista infinita de
métodos para enfrentarse al ataque del dragón y matarlo. Hace un map
entre los métodos y las espadas y va a enfrentarse el dragón. El
dragón lo ve, no le suena de nada, lo ignora y se va. El caballero se
queda para siempre combinando espadas y métodos de matar dragones.
Prolog: Piensa que para matar al dragón necesita un arma. Busca en un
catálogo 182014 armas. Para cuando la princesa muere de vieja ya ha
logrado descubrir como fabricar todas las armas que empiezan por la A:
Armas atómicas, Alabardas, Alfanges, Asesinos contratados, Armas
blancas, Antiaéreos, Arcos, .
Pascal: Se prepara durante 10 años para crear un sistema de
aniquilación de dragones. Cuando llega el momento descubre que el
programa sólo acepta lagartijas como entrada.
Python: Lo mata en dos o tres líneas después de instalar un módulo
para matar dragones.
Perl: El caballero decide matar al dragón con una expresión regular,
pero se equivoca en los caracteres de comodín y acaba incluyendo en el
patrón de mortalidad a dragones, iguanas, lagartos, perros, gatos,
osos, princesas y ratones.
Ruby: Llega con muchísima fama, diciendo que es el mejor en hacer
cualquier cosa y cuando va a enfrentarse al dragón muestra una
peliculita de el matando a un dragón. El dragón se lo come de puro
aburrimiento.
PL/SQL: Recoge datos de otros matadores de dragones, crea tablas con n
relaciones de complejidad ternaria, datos en tres dimensiones, OLAP,
tarda quince años para procesar la información y para entonces la
princesa se volvió lesbiana.
SQL-Server: El caballero abre una transacción para que mientras él
mata al dragón nadie se coma a la princesa. La transacción no solo
bloquea al dragón y a la princesa, si no que bloquea a todos los
animales y mujeres del reino. El caballero intenta cerrar la
transacción pero no puede mas que reiniciar todo el reino. El rey le
corta la cabeza después de que resuelve el bloqueo, tras 50 años de
castidad y comida vegetariana.
Shell: Crea un arma poderosa para matar dragones, pero en la hora H no
recuerda como usarla.
Shell (2): El tipo se acerca al dragón con un script de dos líneas que
mata, corta, destripa, pica en pedacitos y empaca al bicho, pero a la
hora de ejecutar el script aumenta, engorda, enfurece y pone alcohol
en el fuego del dragón.
Basic: Crean un arma capaz de matar a dragones de papel, pero por
mucho que la perfeccionan descubren que no sirve para matar a ningún
dragón más grande que una cría de caniche.
Modula 2: Implementa un método académicamente impecable para matar al
dragón, pero no encuentra ninguna espada de verdad con la que usar
dicho método.
Sinclair Basic: El programador introduce la cinta para cargar el
compilador en el sistema y escribe LOAD "". Esta tan concentrado
escuchando los piip piip de la cinta que no se da cuenta que la
princesa, cansada de esperar, le toma la espada y se la clava a si
misma para evitar morir de aburrimiento. Cuando el programador termina
de picar, guardar y cargar el programa el dragón ya se ha ido a otro
país y ya ha encontrado otra princesa a la que comerse.
Fox Pro: Desarrolla un sistema para matar al dragón. Por fuera es
precioso y funciona, pero por dentro está todo parcheado y cuando va a
ejecutar el aniquilador de dragones recuerda que olvidó indexar los
DBF.
HTML: Monta una web sobre espadas famosas usadas para matar dragones,
pero se pasa los estándares W3C por el forro. Cuando se encara con el
dragón descubre que el código no es compatible con su navegador, por
lo que se queda compuesto y sin espada. El dragón se lo merienda como
aperitivo.
PHP: Crea una página web que al ejecutarla eliminará al $dragón
tirando de una base de datos de armas en mysql y sobre un servidor
apache. Sin embargo, se olvidó el Where en la query de delete y mata a
la princesa, al dragón, a los campesinos, a la bruja, al hechicero y
al propio programador.
ASP (el primo de .Net): Como no fue invitado a matar el dragón demanda
a esta Web por $2.000.000 por discriminación, se reparte el dinero con
el dragón y se van a vivir juntos a Florida.
JavaScript: El programador intenta matar al gran dragón verde que
lanza fuego por la boca. Crean un script que borrará al dragón cuando
cargue una página web, para unos segundos después crear unas damiselas
que lancen flores y hagan soniditos de aplausos. Por desgracia no tuvo
en cuenta la estructura DOM del lagarto, también conocido como
Mozilla, y lo único que consigue es rellenar su consola de errores y
que el libro de Mozilla narre como acabó devorado.
ActiveX: Los programadores crean un túnel para entrar a la guarida del
dragón desde el castillo y ejecutar un programa que matará al dragón
desde una distancia segura y prudencial. El dragón descubre el túnel,
se come a los trabajadores que cavaban, a los matadores de dragones y
esclaviza a todos los siervos del castillo que pasan a ser sus
esclavos. El castillo pasa a ser un lugar de cría de dragones lleno
crías que manda en pop-ups a otros castillos. Los restos poco
apetitosos de los caballeros los mete en latas de Spam y manda también
a otros castillos como advertencia.
CSS: Tras crear el caballero un contenedor y un super-contenedor para
mantenerse centrado y estable a pesar de las envestidas del dragón,
olvida definir un DOCTYPE correcto y el dragón se lo merienda cual
pincho de calamares.
Action Script: El programador utiliza un servicio web para consultar
las armas de las que dispone para matar al dragón, pero entre que
tarda dos eternidades en inicializarse y completar la transferencia y
que la variable poema de amor se escribe sobre la variable escudo (a
pesar de ser de tipos distintos) el dragón y la princesa acaban
cenando caballero a la brasa .
Matlab: Crean un bucle que calcula las trayectorias para lanzar una
flecha gigante contra el dragón. El programa funciona perfectamente.
Sólo faltan los voluntarios capaces de lanzar la flecha con la fuerza
y puntería necesaria.
Mathematica: Se crea y modela el objeto lógico dragón. Se modela y
crea igualmente la princesa, la espada, al príncipe. Se modela el caso
especial de la articulación mano-espada, y la discontinuidad piel de
dragon-espada. Cuando todo esta hecho, se le pide a Mathematica que lo
resuelva, y el resultado es: "Hay que matar al dragón con la espada, y
quedarse con la princesa".
Mono: El caballero viene saltando, contento con su fiel espada Gtk#
diseñada con Glade2 y encomendándose a San Miguel de Icaza. Esquiva
las llamaradas del dragón con un par de objetos, lanza una excepción
contra las garras del bicho que le salva por un pelo, y cuando se
presta a dar la estocada mortal, resulta que las estocadas
mata-dragones del objeto espada no están implementadas todavía, y
tampoco hay documentación al respecto. Sus últimas palabras fueron
"To: lista@mono Subject: ¿Alguien sabe como.".
DIV 2: Crea el programa mata-dragones en 2 minutos con todos los
detalles, planos 3d, sprites, etc., pero cuando lo va a correr se da
cuenta de que el dragón es joven y DIV 2 no lo soporta. Entonces es
devorado por el dragón.
VisualBasic: El apuesto caballero ejecuta su flamante VisualBasic6,
que incluye nuevos iconos a todo color. Crea una espada alucinante,
una catapulta que lanza piedras volcánicas, también le da tiempo de
fabricar un sistema operativo completo, lo llama M$ Ventanas Xp!, y a
todo le pone la opción de "_Click".
Se presenta delante del dragón con todos esos botones, cuadros de
texto, y efectos lujosos, (casi no podía ni andar de tanta cosa que
llevaba). Se espera un poco delante del dragón y le vacila un rato, y
de repente sin que el dragón se de cuenta se pone a ejecutarlo, 2
Clicks y ..error!!!! puff bum!!! pantallazo azul de windows, pidiendo
más memoria virtual.
El dragón se lo come de un bocado, y la princesa sale rapidísima y
toma el programa del príncipe que no funcionó, y se lo guarda para
sacar un ServicePack3.
Visual C++: El programador hace un sistema que mata dragones, explora
cavernas, saquea castillos y viola princesas, todo modular, acoplable,
ampliable y con números de versiones, testeado frente a simulaciones
draconianas en el entorno de desarrollo.
Al intentar matar el dragón, descubre que olvido copiar una dll en la
caverna del dragón, aunque escapa por suerte del primer mordisco.
Repasa el sistema, recupera todas las dlls, y vuelve a la cueva.
Desgraciadamente, descubre que le faltaba otra dll y un archivo .ini,
y esta vez el dragón lo quema de una llamarada de fuego sin
contemplaciones.
Visual .Net: El programador repasa las especificaciones y requisitos
del sistema, estudia las grietas de seguridad, y crea un sistema capaz
de resistir mordiscos y llamaradas, manejar la espada masacra-dragones
con eficiencia, recuperar y comerse a la princesa. A 5 días del
enfrentamiento con el dragón, el rey cambia todos los requisitos y le
dice al programador que no es un dragón, sino un troll con garrote, no
le dotará de espada sino de arco y flechas, que ha leído en alguna
parte que están más de moda, y no hay princesa sino un tesoro oculto
que tendrá que apañarselas para encontrar, y que la fecha de la
confrontación no es prorrogable.
FrontPage: Creas una pagina preciosísima, con multitud de
parafernalias. A la hora de enfrentarte al dragón, este navega con
Firefox, todas las parafernalias solo funcionan con IE, tu pagina se
descoloca y no eres capaz de hacer funcionar ninguna función
JavaScript de las que creaste. Serás comida para dragones.
LOGO: Programa a su "tortuga" para que dibuje una cuerda alrededor del
cuello del dragón, y así ahogarle. Pero como la tortuga trabaja sólo
en 2 dimensiones, el plan fracasa. Además, la tortuga y el dragón se
hacen amigos, luego amantes; y de su amor nace un bicharraco inmundo,
un dragón con caparazón de tortuga, que es mucho más fuerte que su
papi-dragón.
Deciden hacer un asado con la princesa y el programador, ya que:
1.- El dragón ya tiene a la tortuga para desfogar sus más bajos
instintos.
2.- El hijo bicharraco les sale homosexual, y aunque podría pensar en
el programador para soltar todo su "amor", lo cierto es que el
programador no hace ninguna clase de ejercicio, y se pasa los fines de
semana metido en su casa viendo películas y jugando al Quake; así que
está bastante torpe y al bicharraco no le atrae.
WEB 2.0: Desarrolla una forma de matar al dragón utilizando XML, tonos
pastel y letras grandes, y permite que todos los guerreros del mundo
opinen sobre la mejor forma de matar al dragón con un sistema de tags
y puntuaciones. En medio de la discusión, una horda de trolls revienta
la convención y mueren todos.
Macromedia Director: Crea una magnifica interfaz destellante mata
dragones, con una espada deslumbrante, fabricada a bases de Xtras de
terceros fabricantes, al primer intento de matar al dragón "Script
Error", entonces a duras penas se esquiva el mordisco, y se procede al
segundo intento, pero el ejecutable va tan lento que se los come a
todos.
El ingeniero de Software: Se le ocurre hacer una especificación de
requerimientos para desarrollar la espada que matará al dragón. Para
lograrlo, debe realizar entrevista los stakeholders involucrados, por
lo tanto va donde el dragón para saber las características de este
para construir la espada.
Realiza la entrevista con el dragón y desarrolla la especificación y
la espada, y decide volver.
Cuando vuelve, el dragón le dice que esto no era lo que quería y se
come al ingeniero por no satisfacer sus requerimientos.
Analista funcional: Define todos las posibles ataques del dragón,
llamaradas, posibles puntos débiles y fuertes, su árbol genealógico,
etc. Para cuando tiene listo un primer prototipo, los tataranietos de
la princesa matan al caballero por el solo hecho de insinuar el matar
a su mascota preferida.
Analista de Procesos: Se acerca al dragón con dos toneladas de
documentación desarrollada sobre el proceso de matar un dragón
genérico, desarrolla un DFD para liberar a la princesa y casarse con
ella, convence al dragón de que es lo mejor para él y que no va a
doler.
Al ejecutar el proceso estima el esfuerzo y el tamaño del daño que
causará con la firma del Papa, de Buda y de Joan Manuel Serrat para el
plano, y entonces compra dos bombas nucleares, 45 cañones, un
portaaviones y contrata a 300 hombres armados hasta los dientes,
cuando en realidad tan sólo necesitaría la espada que tenía en la mano
desde el principio.
Consultor externo: Aconseja una estrategia planificada con un
incremento progresivo de medios y personal empleado, dosificado a
partir de un comité de expertos internos y externos que se reunirán
con periodicidad bimensual para analizar los informes de progreso.
Una actitud proactiva debe ser impulsada en general en la selección de
personal, así como un buen ambiente interno. De hecho su propia
empresa tiene expertos especializados en la selección de personal de
programación y en la dinamización de ambientes laborales.
Una ciudadela de programación es lo mas adecuado para dar estabilidad
y solidez a la empresa. Conviene que se asuma desde el principio que
el gasto de formación de personal no debe ser mezquino, si queremos
que la cosa avance, así como que el sistema de pruebas debe de estar
estandarizado y documentado para cada programa, para evitar sorpresas
indeseables de ultima hora.
Si en el transcurso del proyecto se produjera la extinción de los
dragones o de las princesas, ya fuera por la desaparición de su
entorno natural por deforestación o sepultamiento bajo informes
documentados o por el advenimiento de la revolución francesa, entonces
habría que redirigir el proyecto-ciudadela a los canales públicos de
reconversión industrial de urgencia social, para lo cual seria
conveniente un comité de expertos internos y externos que se reunieran
con periodicidad bimensual para establecer las políticas de
reconversión y los ajustes necesarios a la luz de los informes de
progreso.
Programador corporativo: El analista ve al programador reconcentrado
en la pantalla y lo saca de ensimismamiento:
-¿Y. cómo va el Módulo Aniquilador de Dragones?
-Bien, bien. tenemos un problema con el puntero del recordset del
xhtml en la espada pero ya le vamos a encontrar una solución.
-Ah, bueno, cuando tengas algo para ver avisame. Mirá que esto es muy
urgente.
El programador cierra las múltiples ventanas del navegador (estaba
comparando los precios de packs de dvd vírgenes en ebay) y trata de
recordar qué era eso del módulo de los dragones.
Recuerda unas reuniones donde había gente sentada en una mesa que decía:
"blablablablablablabla la princesa y blablablablabla la espada tiene
que ser performante blablablablablabla".
Luego de un par de días arma un abm de espadas, otro de dragones y
otro de princesas. Pasan 8 meses sin que el analista vuelva a
preguntar por el sistema.
Un día aparece el dragón y le pregunta:
-¿Y. cómo va el sistema para esclavizamiento de humanos?
-Bien, bien, tenemos un problemita con la clase del DOM porque la base
de datos consume mucho ancho de banda.
-Ah, bueno, cuando tengas algo para ver avisame. Mirá que esto es muy
urgente.
El programador de Ajax: Prepara una Interface para mantenerse alejado
del dragón y atacar.
Arma la espada de DIV's y viste a su caballero de hermosos CSS's y lo
manda a combatir.
Cada vez que su caballero necesitaba algo, lo solicitaba y recibía
inmediatamente lo que necesitaba, super armas, cambio de armaduras,
invisibilidad, etc etc. Pero el dragón con unos escupitazos de fuegos
crea una Firewall que hace lento al caballero Ajax, y de aburrido se
lo come.
Programador de NQC: Crea un robot con el Lego Mindstorms para manejar
la espada para aprovechar el tiempo y llevarse a la princesa. A la
hora de desarrollar el codigo, el limite de 32 variables globales le
fastidia sus aspiraciones de grandeza y tiene que reflashear el RCX
con BrickOS y programarlo en C. Como no tiene ni idea de C, termina
matando al dragon dandole con el robot en la cabeza. La princesa
termina no haciendole caso porque tiene miedo de los robots, y como el
programador no se atreve a decirle que la quiere termina en su casa
viendo paginas de Teens.
Programador de Borland C++: El programador crea una plantilla para
crear objetos que maten dragones, luego crea objetos espadas que debe
utilizar los objetos mata dragones para matar al dragon.
Luego se dan cuenta que necesitaban del objeto OLE y cargar un Active
X que permitiera el acceso a los archivos, para terminar con un
puntero perdido en la direccion h0000097 y depurando las transacciones
del procesador.
El dragón y la princesa se aburren y se van a tener sexo en una Java
Virtual Machinne.
Programador de videojuegos: Se pasa dos años programando una espada
state of the art, con shaders y todo. A la hora de matar al dragón se
encuentra con que la mitad de los caballeros no tienen fuerza para
mover la espada. Luego alguien programa un parche que revela las
escenas de sexo con la princesa.
Algoritmos genéticos: El principe trata de descubrir la mejor manera
de aniquilar el dragón con un cultivo de 10.000 cadenas de ADN. En el
tiempo en que se desarrolla el algoritmo, el dragón es matado por el
bisnieto de la princesa, que al ver que nadie la hacía ni caso se
apuntó a una secta satánica. Cuando el programa termina, resulta ser
el elixir de la eterna juventud, haciendo que el dragon resucite con
10 años menos.
Software Libre: Si el Dragón adopta la GPL, está todo bien: bravo
dragón, princesa mala, la próxima versión de Hurd se llamará Draco,
etc. Si no, dragón malvado, propietario, no ético, dragón malo y
perverso, todos nuestros post en todos los PostNukes del planeta irán
contra tí. Y el dragón sigue vivo.