miércoles, 20 de diciembre de 2006

10 cosas que el código NO hace en el mundo real (y sí en el cine)

(Robado y traducido de "What code DOESN'T do in real life (that it does in the movies)")

  1. El código no se mueve.
    En las películas y en la tele el código siempre viaja a través de la pantalla a velocidades increíbles; se presenta como un flujo indescifrable de letras y números que tienen perfecto sentido para el programador pero dejan perplejo al resto de la gente. Es comprensible que para las personas que no tienen la capacidad de un programador, esto pueda parecer increíblemente complejo, pero ¿realmente piensan que podemos leer toda esa mierda que no deja de moverse?
    Sería como tratar de leer seis diarios volando alrededor de un tornado. Claro que podemos ver una compilación de kernel, hacer tail a un archivo de log, o monitorear la salida de un programa; pero el mayor valor que sacamos de estas actividades es cuando la ejecución se detiene y realmente podemos volver atrás la pantalla para leer qué carajo pasó (salvo que la salida sea lo suficientemente lenta como para poder leerla a medida que ocurre).
  2. El código no es texto verde sobre fondo negro.
    Por supuesto que el código puede ser texto verde sobre fondo negro si uno quiere, pero la mayoría de los programadores usamos resaltado de sintaxis y los administradores de sistemas configuran su shell para usar colores ANSI.
  3. El código tiene estructura.
    De acuerdo a las películas, todos los programadores detestamos la barra espaciadora y la tecla "Enter". En el mundo real, el código tiene estructura; tiene saltos de línea, espacios, e indentación. Por supuesto que todos hemos escrito nuestra cuota de código ilegible alguna vez (NdT: si habré usado GWBASIC...), pero eso ya fue. Hoy en día la idea es ser lo más claro posible.
  4. El código no es tridimensional.
    ¿Se acuerdan en "Hackers" (NdT: ¡qué película mala!), cuando el "Gibson" aparece como una ciudad tridimensional a través de la cual navegan los hackers? ¡Un carajo!
    Podemos usar un poco de color en nuestro shell para hacer las cosas un poco más claras pero, la última vez que me fijé, mi terminal de aplicaciones no necesitaba OpenGL para correr. Estamos trabajando, no jugando "Quake".
  5. El código no hace ruiditos a medida que aparece en pantalla.
    Esto va para cualquier texto, no solamente código. Cuando aparece texto en el monitor, no hace ruiditos.
    Esta es una de las ofensas más comunes en las películas de Hollywood: en casi todas las películas con una escena donde el personaje está escribiendo un e-mail o navegando la red, el texto hace ruidito cuando aparece en pantalla. ¿Tienen idea de lo terriblemente irritante que sería eso en la vida diaria? Este único texto tendría unos 30000 ruiditos.
  6. El código no puede ser crackeado en cuestión de segundos por un pibito de 8 años.
    Perdón, pero no. Sencillamente NO.
  7. No todo el código fue hecho para ser crackeado.
    Hollywood adora presentar la idea de que la programación, la encriptación y el cálculo complejo en general son la misma cosa: un conjunto de datos secretos que deben ser rotos por un hacker realmente astuto. Esto, de alguna forma, es comprensible, dado que el término "código" en sí mismo es ambiguo. En el reino de la computación, "código" tiene típicamente dos definiciones:

    1. El arreglo simbólico de instrucciones que puede entender una computadora, como en "Ese código Java es una cagada".
    2. La transformación encubierta de un mensaje: "Los mensajeros de código navajo de la Segunda Guerra Mundial"

    Hollywood usualmente aplica el punto 2 a todas las actividades de computación que hace un programador. No hay ventanas para arrastrar, no hay paréntesis ni sentencias "IF", no hay escritorio. Todo en la computadora se convierte en un mensaje encriptado.
  8. El código no es solamente 0100110 010101 10100 011.
    Claro: cuando se baja a nivel binario, todo se convierte en una tira de ceros y unos, pero ¿quién trabaja así?. No conozco a nadie que codifique en binario.
    Hey, directores de Hollywood: los programadores usamos esa cosa interesante conocida como "alfabeto". Tiene letras que se ponen juntas para formar palabras. Incluso se pueden poner espacios entre las palabras (ver punto 3).
    También el chiste de que todo en una computadora son ceros y unos ya dejó de ser gracioso. Ese chiste está peleando la punta con el del usuario que usaba la bandeja del CD-ROM como posavasos; creo que escuché ese chiste como 1000 veces desde 1997. Que en última instancia todos los datos en una computadora se representen como ceros y unos, no significa que todo sea tan simple como un cero o un uno. Eso sería como decir que toda la humanidad es, en última instancia, un manojo de átomos de carbono (o de lo que carajo estemos hechos), y por lo tanto la próxima vez que alguien nos robe algo debamos decir "¡Uh, malditos átomos de carbono!"
  9. La gente que escribe código también usa el mouse.
    De acuerdo a Hollywood, la mayoría de los programadores todavía no descubrieron cómo usar el mouse. Claro que tipeamos rápido, pero el mouse es una herramienta muy útil (NdT: cuando se lo usa bien) y no hay razón por la que debamos abandonarlo. Y ya que estamos desmitificando estereotipos, también me gustaría decir que no todos los programadores somos pajeros vírgenes jugando "World of Warcraft". Algunos hacemos ejercicio y tenemos vida social. Algunos incluso tenemos sexo (NdT: con otras formas de vida, claro). ¡Carajo!
  10. La mayoría del código no es inherentemente multiplataforma.
    ¿Se acuerdan en "Día de la independencia" (NdT: no la vi entera; me provocó diarrea antes de llegar a la mitad) cuando el matemático escribe un virus que funciona en su laptop Apple y también en la nave madre extraterreste? ¡Un carajo!
    Si la vida real fuera así de simple, podría correr Linux en mi cámara digital sin problemas.

0 comentarios: