Se encuentra usted aquí

Mareante pero invisible profundidad

Acabas de entrar a la página inicial de Google.

Sencillo, ¿no es así?

¿Qué acaba de suceder?

Bueno, cuando sabes un poco de cómo trabajan los navegadores, no es tan sencillo. Acabas de poner en uso HTTP, HTML, CSS, ECMAscript, y muchas más. Éstas son en realidad tecnologías increíblemente complejas que marearían a cualquier ingeniero que pensara en ellas por demasiado tiempo, y que ninguna compañía por su cuenta podría manejar toda su complejidad.

Simplifiquemos.

Acabas de conectar tu computadora a www.google.com.

Sencillo, ¿no es así?

¿Qué acaba de suceder?

Bueno, cuando sabes un poco de cómo trabajan las redes, no es tan sencillo. Acabas de poner en uso DNS, TCP, UDP, IP, Wifi, Ethernet, DOCSIS, OC, SONET, y muchas más. Éstas son en realidad tecnologías increíblemente complejas que marearían a cualquier ingeniero que pensara en ellas por demasiado tiempo, y que ninguna compañía por su cuenta podría manejar toda su complejidad.

Simplifiquemos.

Acabas de escribir www.google.com en la barra de navegación de tu navegador.

Sencillo, ¿no es así?

¿Qué acaba de suceder?

Bueno, cuando sabes un poco de cómo trabajan los sistemas operativos, no es tan sencillo. Acabas de poner en uso un kernel, un puerto USB, un demultiplexor de entradas, un manejador de eventos, un renderizador de fuentes, un rasterizador de pixeles, un sistema de ventanas, un manejador gráfico, y muchas más, todas escritas en lenguajes de alto nivel que son procesados por compiladores, enlazadores, optimizadores, intérpretes, y muchas más. Éstas son tecnologías increíblemente complejas que marearían a cualquier ingeniero que pensara en ellas por demasiado tiempo, y que ninguna compañía por su cuenta podría manejar toda su complejidad.

Simplifiquemos.

Acabas de presionar una tecla en tu teclado.

Sencillo, ¿no es así?

¿Qué acaba de suceder?

Bueno, cuando sabes un poco de cómo trabajan los periféricos de entrada, no es tan sencillo. Acabas de poner en uso un regulador de potencia, un filtro anti-rebotes, un multiplexor de entradas, un dispositivo USB, un puerto USB, todas ellas implementadas en un simple chip. Ese chip fue construido alrededor de capas finamente cortadas de lingotes altamente purificados de monocristales de silicio, dopados con cantidades diminutas de otros átomos que son disparadas contra la estructura del cristal, interconectadas con múltiples capas de aluminio o cobre, que son depositadas de acuerdo con patrones de luz ultravioleta de alta energía enfocados con una precisión de una fracción de microsegundo, conectados al mundo exterior vía alambres de oro, todos dentro de un paquete hecho de resina dimensional y termalmente estables. Los patrones de dopado y las interconexiones implementan transistores, que se agrupan para crear compuertas lógicas. En algunas partes del chip, las compuertas lógicas son combinadas para crear funciones aritméticas y de bits, que son combinadas para crear una Unidad Aritmético-Lógica. En otra parte del chip, las compuertas lógicas son combinadas en biestables, que se alinean en hileras, que son combinadas con selectores para crear un banco de registros. En otra parte del chip, las compuertas lógicas son combinadas en controladores de bus y decodificadores de instrucciones y microcódigo para crear un planificador de ejecución. En otra parte del chip, son combinadas en multiplexores de direcciones y de datos y en circuitería de reloj para crear un controlador de memoria. Y hay mucho más. Éstas son tecnologías increíblemente complejas que marearían a cualquier ingeniero que pensara en ellas por demasiado tiempo, y que ninguna compañía por su cuenta podría manejar toda su complejidad.

¿Se puede simplificar más?

De hecho, terroríficamente, no, no se puede. Apenas y podemos comprender la complejidad de un simple chip en un teclado de computadora, y aún así no hay nivel más simple. El siguiente paso nos llevaría al software que es usado para diseñar la lógica del chip, y ese software en sí mismo tiene un nivel de complejidad que requeriría regresar a la parte superior del ciclo.

Las computadoras de hoy en día son tan complejas que sólo pueden ser diseñadas y manufacturadas con computadoras un poquito menos complejas. A su vez las computadoras usadas para el diseño y manufactura son tan complejas que ellas mismas sólo pueden diseñarse y manufacturarse con computadoras un poquito menos complejas. Habría que pasar por muchos de estos ciclos para llegar al nivel en que podría re-construirse desde cero.

Una vez que comienzas a entender cómo trabajan los dispositivos modernos y cómo son creados, es imposible no marearse con la profundidad de todo lo que está implicado, y no sorprenderse ante el hecho de que todo trabaja, cuando la ley de Murphy dice que simplemente no hay forma de que todo trabaje.

Para los ajenos a la tecnología, todo esto es una caja negra. Ese es un gran éxito de la tecnología: todas esas capas de complejidad están completamente escondidas y la gente puede usarlas sin siquiera saber que existen. Esa es la razón por la que mucha gente puede encontrar tan frustrante el usar una computadora: hay tantas cosas que podrían ir mal que algunas de ellas inevitablemente lo harán, pero la complejidad es tan profunda que es imposible para muchos usuarios el ser capaces de hacer algo al respecto de cualquier error.

Es por eso también que es tan difícil comunicarse entre los adeptos a la tecnología y los ajenos a la misma: los adeptos saben demasiado sobre muchas capas y los ajenos saben demasiado poco acerca de muy pocas capas como para establecer una comunicación directa efectiva. La brecha es tan grande que ya incluso no es posible tener a una sola persona como intermediara entre ambos grupos, y es por eso que, por ejemplo, terminamos con esos torcidos centros de llamadas a soporte técnico y sus múltiples niveles. Con tan profundas estructuras de soporte, uno termina con la frustrante situación que vemos cuando los usuarios finales tienen acceso a una base de datos de errores que son usadas directamente por los ingenieros: ni los usuarios finales ni los ingenieros obtienen la información que necesitan para poder cumplir sus metas.

Esa es la razón por la que los medios masivos de comunicación y la población en general han hablado tanto sobre la muerte de Steve Jobs y en comparación no han dicho casi nada de la de Dennis Ritchie: la influencia de Steve fue en una capa que mucha gente puede ver, mientras que la de Dennis fue mucho más profunda. Por un lado, yo puedo imaginar en dónde estaría el mundo de la computación sin el trabajo que hizo Jobs y de la gente que inspiró: probablemente un poquito menos brillante, un poco más monótono, un poco más cuadrado. En el fondo, sin embargo, nuestros dispositivos seguirían trabajando de la misma manera y haciendo las mismas cosas. Por el otro lado, yo literalmente no puedo imaginar dónde estaría el mundo de la computación sin el trabajo que Ritchie hizo y de la gente que inspiró. Para mediados de los 80s, la influencia de Ritchie abarcaba casi todo, e incluso entonces muy poco quedaba del mundo pre-Ritchie.

Finalmente, pero no menos importante, esa es la razón por la que el sistema de patentes está mal: la tecnología ha hecho tan impresionante trabajo escondiendo su propia complejidad que la gente que regula y usa el sistema de patentes apenas y se da cuenta de la complejidad de lo que están regulando y usando. Es la más extrema de las trivialidades: como las discusiones proverbiales en las comunidades de vecinos acerca de la planta nuclear que terminan hablando sobre el color del cobertizo de bicicletas de la planta, las discusiones sobre sistemas modernos de computación terminan siendo acerca de tamaños de pantalla y ordenamiento de iconos, porque en ambos casos son los únicos aspectos que la gente involucrada en la discusión es capaz de discutir, aún cuando sean irrelevantes para la verdadera función que el sistema discutido tiene en general.

CC:BY 3.0

Tomado y traducido de https://plus.google.com/112218872649456413744/posts/dfydM2Cnepe , por Jean-Baptiste Quéru

Añadir nuevo comentario

Privado. No aparecerá en el sitio

Filtered HTML

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <code>
  • Syntax highlight code surrounded by the <pre class="brush: lang">...</pre> tags, where lang is one of the following language brushes: as3, applescript, bash, csharp, coldfusion, cpp, css, delphi, diff, erlang, groovy, jscript, java, javafx, perl, php, plain, powershell, python, ruby, sass, scala, sql, vb, xml.
  • Saltos automáticos de líneas y de párrafos.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
CAPTCHA
Esta pregunta es para probar si eres un visitante humano y para prevenir contra entradas automatizadas de spam.
Image CAPTCHA
Enter the characters shown in the image.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer