Ni siquiera recuerdo cómo me topé con este artículo de Jean-Baptiste Queru, pero me pareció muy bueno por la simpleza con que está escrito y por las reflexiones sobre Steve Jobs y Dennis Ritchie. Además, es un lindo artículo para hacer pensar al “usuario común” sobre la complejidad que hay en cada acción que se lleva a cabo en su computadora: desde abrir un sitio web, hasta presionar una tecla.
Como otras veces: lo vi, me gustó y decidí traducirlo al castellano. Jean fue muy amable en darme permiso (1, 2), así que me gustaría que si ven algún error de traducción, me lo hagan saber para que lo corrija. Sin más preámbulos, se los dejo:
Una profundidad vertiginosa, pero invisible
Acabas de entrar en la página principal de Google.
Sencillo, ¿no?
¿Pero qué es lo que sucedió realmente?
Bueno, cuando sabes un poco sobre cómo funcionan los navegadores, no es tan sencillo como parece. Has puesto en acción HTTP, HTML, CSS, ECMAscript, y más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.
Vamos a simplificarlo.
Acabas de conectar tu computadora a www.google.com.ar.
Sencillo, ¿no?
¿Pero qué es lo que sucedió realmente?
Bueno, cuando sabes un poco sobre cómo funcionan las redes, no es tan sencillo como parece. Acabas de poner en acción DNS, TCP, UDP, IP, Wi-Fi, Ethernet, DOCSIS, OC, SONET, y más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.
Vamos a simplificarlo.
Acabas de tipear www.google.com.ar en la barra de direcciones de tu navegador.
Sencillo, ¿no?
¿Pero qué es lo que sucedió realmente?
Bueno, cuando sabes un poco sobre cómo funcionan los sistemas operativos, no es tan sencillo como parece. Acabas de poner en acción un kernel, un controlador de puertos USB, un distribuidor de entrada, un controlador de eventos, un suavizador de tipografías, un entramador de píxeles, un sistema de ventanas, un controlador de gráficos, y más, todo escrito en lenguajes de alto nivel que son procesados por compiladores, enlazadores, optimizadores, intérpretes, y más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.
Vamos a simplificarlo.
Acabas de presionar una tecla de tu teclado.
Sencillo, ¿no?
¿Pero qué es lo que sucedió realmente?
Bueno, cuando sabes un poco sobre cómo funcionan los dispositivos de entrada, no es tan sencillo como parece. Acabas de poner en acción un regulador de energía, un debouncer, una entrada de multiplexor, un stack de USB, un hub de stacks USB. Todo implementado en un mismo chip. Este chip está construido sobre láminas muy delgadas de silicio monocristalino altamente purificado, dopado con cantidades diminutas de otros átomos que son añadidos a la estructura de cristal, interconectados con múltiples capas de aluminio o cobre, que son depositadas de acuerdo a ciertos patrones de luz ultravielota de alta energía, que son enfocados con una precisión de una fracción de micrón, conectados al mundo exterior a través de delgados cables de oro, todo dentro de un empaquetado hecho con una resina dimensional y térmicamente estable. Los patrones de dopaje e interconexión implementan transistores, los cuales son agrupados para crear puertas lógicas. En algunas partes del chip, las puertas lógicas son combinadas para crear funciones aritméticas y a nivel de bits, que a su vez son combinadas para crear unidades aritmético lógicas (ALU). En otra parte del chip, las puertas lógicas son combinadas para crear bucles biestables, que se alinean en filas, las cuales son combinadas con los selectores para crear un registro en blanco. En otra parte del chip, las puertas lógicas son combinadas en controladores de bus y decodificadores de instrucciones y microcódigo para crear un programador de ejecución. En otra parte del chip, son combinados en multiplexores de direcciones y datos, y circuitos temporales para crear controladores de memoria. Aún hay más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.
¿Podemos seguir simplificando?
De hecho, muy tenebrosamente, no, no podemos. Apenas podemos comprender la complejidad de un chip de un teclado, y aún así no hay un nivel más simple. El siguiente paso nos llevaría al software usado para diseñar la lógica de los chips, el cual en sí mismo tiene un nivel de complejidad que nos haría volver al comienzo del bucle.
Las computadoras de hoy son tan complejas que solo pueden ser diseñadas y fabricadas usando computadoras apenas un poco menos complejas. A su vez las mismas computadoras usadas para diseño y fabricación son tan complejas que ellas mismas deben ser diseñadas y fabricadas por computadoras apenas un poco menos complejas. Deberíamos retroceder por muchos bucles hasta llegar a un nivel en el que se construyan desde cero.
Una vez que comienzas a comprender cómo funcionan y son creados nuestros dispositivos modernos, es imposible no marearse en la profundidad de todo lo que entra en juego, y no sorprenderse por el solo hecho de que funcionen, cuando la ley de Murphy dice que esto simplemente no debería ser posible.
Para quienes no son “tecnológicos”, todo esto es una caja negra. Eso es un gran éxito de la tecnología: todas estas capas de complejidad están completamente ocultas y la gente puede usarlas sin siquiera saber que existen. Esa es la razón por la que mucha gente puede encontrar tan frustrante usar una computadora: hay tantas cosas que pueden salir mal que algunas de ellas inevitablemente lo harán, pero la complejidad es tan profunda que es imposible para la mayoría de los usuarios hacer algo al respecto.
Por eso es tan difícil para los tecnológicos y no tecnológicos comunicarse: los tecnológicos saben mucho sobre muchas capas y los no tecnológicos saben muy poco sobre muy pocas capas, y se dificulta establecer una comunicación directa y efectiva. La brecha es tan grande que ya ni siquiera es posible que una persona medie entre los dos grupos, y es por eso que, por ejemplo, existen esos centros de soporte técnico telefónico tan complicados y sus distintos niveles. Sin estas grandes estructuras de soporte técnico, terminas en la frustrante situación que vemos cuando los usuarios finales tienen acceso a una base de datos de errores que es usada directamente por ingenieros: ni unos ni otros obtienen la información que necesitan para cumplir su objetivo.
Es por eso que la prensa masiva y la población general ha hablado tanto sobre la muerte de Steve Jobs y relativamente tan poco sobre la muerte de Dennis Ritchie: la influencia de Steve está en una capa que la mayoría de la gente puede ver, mientras que la de Dennis es mucho más profunda. Por un lado, puedo imaginar dónde estaría el mundo de la informática sin el trabajo que realizó Steve Jobs ni la gente que inspiró: probablemente sería un poco menos brillante, un poco más beige y cuadrado. A grandes rasgos, sin embargo, nuestros dispositivos todavía funcionarían del mismo modo y harían las mismas cosas. Por otro lado, literalmente no puedo imaginar dónde estaría el mundo de la informática sin el trabajo que realizó Ritchie ni la gente a la que inspiró. A mediados de los 80, la influencia de Ritchie ya se había hecho dominante, e incluso en ese entonces muy poco quedaba de la era pre-Ritchie.
Por último, pero no menos importante, es por eso que nuestro sistema de patentes está quebrado: la tecnología ha hecho un trabajo tan sorprendente en esconder su complejidad, que la gente que regula y administra el sistema de patentes está apenas consciente de la complejidad de lo que está regulando y administrando. Este es el problema fundamental: tal como las discusiones proverbiales en los senados sobre una planta nuclear terminan siendo acerca del color con que deberían pintarla, las discusiones sobre patentes de sistemas modernos de computación terminan siendo sobre el tamaño de las pantallas y el orden de los iconos, porque en ambos casos esos son los únicos aspectos que la gente involucrada en la discusión es capaz de discutir, aunque sean irrelevantes para la verdadera función del sistema en cuestión.
Enlace: Dizzying but invisible depth
Jean-Baptiste Queru es un ingeniero que trabaja en Google, en el proyecto Android Open-Source. Pueden revisar sus perfiles de Twitter, LinkedIn y Google+.
Muy buena elección Natán!
Podríamos decir que Steve Jobs está en la capa 7 (la más cercana al usuario) del modelo OSI, y Dennis Ritchie está en la capa 1 (el usuario ni lo ve). Aclaración: con esto no quiero decir que uno sea mejor o peor que el otro. Los 2 fueron muy muy grandes en sus temas.
Pingback: Week-Log.417