Detente y préndete fuego

La subcultura, friquismo, cosa geek, etc. parece estar de moda últimamente. La tecnología cobra cada vez más importancia y se infiltra hasta puntos insospechados hasta hace poco en el día a día de la gente corriente. Famosos de la informática como Jobs o Zuckerberg son celebridades del calibre de muchos deportistas, actores y músicos. Como no podía ser de otra manera, esto hace que las artes- literatura, cine, televisión… cada vez beban más del mundo tecnológico en sus obras. Sin embargo, hasta el momento (y hasta donde yo he visto), esto ha sido un fenómeno parcial- cultos de personalidad, referencias… poco más.

Halt and Catch Fire, sin embargo, es de las primeras obras relevantes para el gran público centrada argumentalmente en el mundo tecnológico- específicamente en la época de los clones del PC de IBM en los 80. Pese a tomarse licencias artísticas con la historia (la Cardiff Electric de los protagonistas es en gran parte Compaq, pero con bastantes cambios), HaCF no sólo puede considerarse histórica en el sentido que un biopic de Napoleón lo sería, sino que además entreteje la tecnología en el argumento (y además, con grandísimo acierto).

La historia se centra en un ex-comercial de IBM, Joe MacMillan (genialmente interpretado por Lee Pace… sorprendentemente el Thranduil del Hobbit o el villano de Guardianes de la Galaxia) que aterriza en una pequeña empresa de informática de Dallas planeando un producto clave de la época. Su personaje, magnético como debe ser, bascula entre lider carismático y traidor deleznable- de impecable traje caro pero con misterios y bagaje personal, se rige como el eje alrededor del cuál gira la historia. Le acompañan la programadora Cameron Howe (una tal Mackenzie Davis que no me suena de nada) y Gordon Clark [¿Gordon por Gordon Moore de Intel y de la ley epónima? Por Clark sólo me sale un fundador de SGI y Netscape], el experto en hardware (Scoot McNairy- al parecer sale en 12 Años de Esclavitud y Argo). En las dinámicas entre los tres rápidamente cobra protagonismo Donna, la esposa de Gordon, (una magnífica Kerry Bishé- al parecer es la segunda vez que interpreta a la esposa del mismo actor) que es mucho más multidimensional que el otro par (Cameron es excesivamente punk-manzanil para mi gusto- Gordon es un personaje más interesante pero que a mi no me llama mucho) y se lleva una buena cantidad de momentos estelares.

En el aspecto técnico (no hablo de la fotografía, ambientación, edición… todo impecable) no es sólo que HaCF capte la esencia de una época de la industria informática y trace un drama bastante sólido con ello, sino que además los aspectos informáticos se incorporan con total naturalidad y muchísimo acierto en el argumento. No es que HaCF no contenga gazapos técnicos de esos que me levantan del sofá con indignación (yo no he cazado ninguno al vuelo- indudablemente tiene alguno pero ninguna “licencia artística para matar”) sino que grandes éxitos del mundillo son puntos claves de los episodios (una educativa historia sobre los backups, hacer ingeniería inversa de la BIOS de IBM con un osciloscopio, abrir un disco duro y recuperar datos con acertadas alusiones a la FAT, …), haciendo que salte de mi asiento para aplaudir.

Con todo esto, HaCF nos cuenta una historia de pioneros y de los riesgos y daños personales que conlleva. Una historia con personajes trabajados, con sus claros y sus oscuros… con un argumento emocionante que hace que al acabar un episodio quieras ver inmediatamente el siguiente (por no hablar de la larga espera hasta la recientemente anunciada segunda temporada- parece que ha triunfado más allá de los ordenadorfílicos). Y además, ya era hora que alguien hiciese una serie para nosotros.

Hazañas informáticas VI: el sistema UNIX

Si habéis estado siguiendo esta serie de artículos, habréis podido percibir un notable patrón- los sujetos de los que hablo no suelen ser muy recientes. Internet se conoce como tal desde el 82, el modelo relacional se formuló en el 69, las funciones hash aparecen mencionadas en una publicación en el 53, el sistema RSA data del 78 y las máquina de Turing y von Neumann son de allá por los años 40.

Es decir, la hazaña informática más jovencita es más vieja que yo con sus 33 años de edad. Pero ninguna de ellas está obsoleta- es más, todas ellas siguen vigentes y es posible que algunas sobrevivan más de un siglo (sólo es posible que el criptosistema RSA quede obsoleto si algún día la computación cuántica resulta práctica- aunque con toda probabilidad sea reemplazado por un criptosistema de clave pública similar).

El que hoy nos ocupa es otro jovenzuelo- el sistema operativo UNIX nació en 1970 en un laboratorio de Bell Labs, como sistema operativo para un videojuego implementado por un equipo de programadores aburridos en el proyecto Multics. Con el pretexto de adaptarlo para el procesado de textos, Thompson, Ritchie, Kernighan, McIlroy y Ossanna asentaron una de las dos familias de sistemas operativos que aún hoy pervive con cierta popularidad (la otra sería la familia de los 360 de IBM, que es más antigua aún).

UNIX se basa en conceptos sencillos- se implementa usando el lenguaje C (hijo del recientemente fallecido Ritchie) portable, simple y eficiente en un momento en que los sistemas operativos se implementaban directamente sobre el procesador, ligándolos al hardware para el cuál estaban diseñados y dificultando su desarrollo; un sistema de archivos jerárquico, cualidades de multiusuario y multitarea… todos ellos conceptos imprescindibles hoy en día. Además, introduce la filosofía Unix de programas pequeños comunicándose entre ellos- haciéndolo extremadamente versátil pero simple, una cualidad vital para ser extremadamente apropiado para gente como los programadores.

Pero más allá de ello, UNIX fue “pionero” en el hecho de que su código (junto con el de los compiladores del lenguaje C) fueran distribuidos libremente- la condena de las prácticas monopolísticas de AT&T impedían su comercialización y por contra forzaban a distribuirlo a quien lo pidiera. Si hoy en día es increíblemente costoso desarrollar un sistema operativo, en esa época primitiva, lo era aún más; y los sistemas operativos de la época eran por tanto costosos y, al ser no portables, sólo funcionaban en un determinado tipo de hardware. La distribución de Unix, por tanto, permitía a cualquiera aprovechar su código, adaptarlo al hardware que tenían y disponer de un sistema operativo potente por un coste relativamente bajo.

Lógicamente, mucha gente se sumó al carro- compañías comerciales que lo usaron o incluso lo extendieron y comercializaron (HP, Solaris, IBM, etc.; hasta Microsoft comercializaba su propio Unix hasta el 89). Pero el desarrollo quizás más importante se dio en universidades, particularmente en la de Berkeley en California. En el 83 AT&T quedó liberada de los corsés antimonopolistas y pudo comercializar Unix, movimiento con el cual los Unix no comerciales, y en especial el de Berkeley comenzaron a cobrar importancia, ya que eran los únicos que quedaban como libremente distribuibles.

Los sistemas comerciales siguieron su camino y perduran hasta nuestros días; HPUX, AIX y especialmente Solaris aún son moderadamente populares, sobre todo en grandes entornos comerciales de computación.

Por otra parte, los sistemas académicos también siguieron su evolución paralela.  Del código de Berkeley surgieron sistemas operativos como NetBSD, FreeBSD y OpenBSD- el BSD es de Berkeley Software Distribution- y el nucleo de Darwin que está en las entrañas de Mac OS X (y según dice Apple, el iOS del iPhone, iPod Touch e iPad) es también un “BSD”.

En los 90, un estudiante de informática finlandés, frustrado por no disponer de un sistema operativo Unix viable para ordenadores personales (que en aquel entonces eran básicamente Ataris, Amigas, Macs y PCs con MS/DOS y Windows), desarrolló un sistema operativo estilo Unix, aprovechando las herramientas GNU; algo que acabo dando luz a Linux (o GNU/Linux).

Llegando hasta hoy, los Unix comerciales siguen teniendo su importancia en entornos empresariales- Linux y los BSD libres han ganado una gran importancia, OS X es el segundo sistema operativo para ordenadores personales más popular; en el ámbito móvil, Android se basa en Linux y según dice Apple, el iOS del iPhone también, con lo que en realidad, gran parte de los ordenadores de hoy en día son “Unix”- las excepciones más notables son Windows, los sistemas operativos de los mainframes (básicamente los de IBM descendientes de la serie 360) y los sistemas operativos de móviles que no son Android ni iOS (Blackberry está transicionando de su sistema operativo a QNX [un Unix], Nokia aún conserva su Series 40 para móviles de bajo coste y está matando Symbian…).

El mérito de Unix radica en simplemente eso- su sencillez y claridad de conceptos inicial han perdurado hasta nuestros días- siendo difícil la valoración de su repercusión frente a la serie 360, pero claramente siendo uno de los desarrollos informáticos más significativos de la historia de la computación.

Hombros de gigantes

Me he levantado con la triste noticia del fallecimiento de Dennis Ritchie. Es impactante como en un mundo tan cambiante y de evolución vertiginosa como el de la informática, dos de las creaciones de este hombre han cumplido ya más de 40 años y son fundamentales en la informática moderna.

Me refiero al sistema operativo UNIX (padre directo de los actuales Linux [y Android], Mac OS X [y si hemos de creer a Apple, iOS] y Solaris), de Thompson, Ritchie, Kernighan, McIlroy y Ossanna y la verdadera criatura de Ritchie, el lenguaje de programación C, con el que se han implementado gran parte de los sistemas informáticos actuales y que está en los cimientos y raices de la mayor parte del resto.

Pero para mi, Ritchie siempre será la R del K&R, *el* libro sobre C, cuya significancia va más allá de la monumental importancia del C, sino que además es uno de los textos sobre informática de referencia- es sin duda alguna un perfecto ejemplo de cómo debe ser la comunicación en ámbitos ingenieriles, cuyo estilo simple, directo y comprensible y su explicación de conceptos completa y precisa transciende su propósito y llega a inspirar pasión y vocación- al menos a un servidor así le sucedió.

Gracias por todo, Dennis. Te echaremos de menos, pues tus creaciones e influencia nos sobrevivirán a todos.

Hazañas informáticas I: Internet

En los inicios, había muy poquitos ordenadores- grandes como habitaciones e increíblemente caros. Muchos de estos ordenadores tenían múltiples pantallas y teclados para que los pudiesen utilizar simultáneamente muchas personas y que se rentabilizasen mejor. Cada ordenador era un mundo en sí mismo. Algunos de estos ordenadores permitían la comunicación entre personas sentadas en diferentes terminales.

Pronto, comenzaron a aparecer más y más ordenadores en el mundo. Algunos entes privilegiados podían disponer de varios ordenadores, y pronto surgió la necesidad de comunicarlos ente ellos; la capacidad de una máquina siempre nos es insuficiente y queremos realizar operaciones que aprovechen la capacidad de varios ordenadores.

Éste es un problema de fácil solución; los ordenadores trabajan con impulsos eléctricos y con compartir un medio conductor (léase, un hilo de cobre conectado a dos ordenadores), estos pueden enviarse datos codificándolos como descargas eléctricas de una manera muy similar a como funciona un solo ordenador internamente.

Este sistema ha funcionado perfectamente hasta el día de hoy- con no tantas evoluciones, existen hoy infinidad de redes con cientos de ordenadores comunicados a grandes velocidades entre sí mediante lo que es en esencia un hilo de cobre que pasa por todos ellos.

El análogo humano es una habitación llena de personas hablando a viva voz. Todo el mundo puede oír a todo el mundo y se pueden realizar todo tipo de conversaciones- un profesor puede dar clase a cientos de alumnos que le escuchan; un montón de parejas pueden estar en una sala de baile hablando entre ellas y grupos de conversación pueden formarse y deshacerse fácilmente.

Este esquema sencillo, lamentablemente, no funciona bien a gran escala. Intuitivamente vemos que compartir un solo cable de cobre entre una gran cantidad de ordenadores puede ser problemático. Nuestra sala con gente hablando deja de funcionar cuando las distancias son suficientes como para no oir- y si hay demasiada gente hablando, nace la confusión.

Los genios de ARPANET no se aturullaron delante de estos problemas y encontraron una solución simple y efectiva para este problema. Las redes locales de unos cuantos ordenadores funcionan maravillosamente bien, dijeron; no hace falta abandonar ni complicar este modelo. Sencillamente, interconectemos las redes entre sí.

Las comunicaciones locales pueden funcionar como hasta ahora. Lo único que tenemos que hacer es introducir unos dispositivos que tengan un pie en una red, y otro pie en otra. Cuando un ordenador en una red quiera comunicarse con otro ordenador en otra red, se dirigirá al dispositivo de su red que se comunica con otras redes y le entregará la información que quiere transmitir. Si el destinatario está en la otra red, el dispositivo no tiene más que entregárselo. Si no, lo único que tiene que buscar es otro dispositivo de este tipo que esté conectado con otra red que esté más cerca del destinatario y entregarle la información- así la información irá saltando de red en red hasta llegar a su destino.

Esto, en esencia, es internet. El “inter” es de interconexión de redes. El modelo se completa con un sistema de direcciones universales, las famosas IP con las que se identifica a cada dispositivo que vive en Internet- y el sistema de puertos, que identifica en cada dispositivo varios puntos de envío y recepción de datos (un puerto para el correo electrónico, un puerto para el tráfico web, etc.). Encima de esto, el sistema DNS que hace que los humanos podamos usar nombres en vez de IPs numéricas para referirnos a los dispositivos que viven en Internet y los diferentes protocolos que rigen los diferentes servicios que funcionan sobre internet.

Pese a que internet y su ecosistema asociado es infinitamente complejo, la gran virtud es que se basa en un modelo sencillo y elegante- simples redes locales interconectadas.

Próximas entregas:

  • Hazañas informáticas II: el modelo de datos relacional
  • Hazañas informáticas III: La criptografía asimétrica
  • Hazañas informáticas IV: Las funciones hash
  • Hazañas informáticas V: Las máquinas de Turing y Von Neumann
  • Hazañas informáticas VI: el sistema UNIX

 

The Mythical Man Month and Other Essays on Software Engineering – Anniversary Edition

Pocos libros tienen la fama y popularidad de The Mythical Man Month. Hace tiempo ya que quería leer este libro sobre la ingeniería del software y aprovechando la destrucción de fronteras de Amazon Reino Unido, me hice con mi copia.

The Mythical Man Month es una colección de ensayos sobre la construcción de programas inspirada en gran medida por el trabajo el autor, Frederick Brooks en el desarrollo de OS/360, el sistema operativo del System/360 de IBM (del paleolítico de los 60). Brooks analiza sus experiencias, las contrasta con las de otros colegas y ofrece su opinión. Por mucho que nos separan casi 40 años de la fecha de publicación de la primera edición del libro, pocas ideas del libro han quedado obsoletas (en esta edición especial de aniversario, el autor añade al libro contenido comentando estos aspectos). Las predicciones de Brooks, que parten de un análisis de qué factores de la ingeniería del software eran limitaciones de los sistemas de la época y cuáles eran problemas intrínsecos, son precisas, y son reconfirmadas en “No Silver Bullet”, un ensayo suyo del 86 añadido al libro en el que postula que no existen las soluciones “milagro”.

Lógicamente, sí que hay muchas partes del libro que resultan ridículas hoy en día (discusiones sobre microfilms, como encajar programas en la limitada capacidad de las máquinas de los 60, etc.), y ciertas partes de sus argumentos han quedado obsoletas por las prácticas modernas- si bien es cierto que podemos rastrear los orígenes de estas novedades en propuestas de Brooks en el libro- es interesante re-analizar todas estas nuevas tendencias en el campo tras haber leído The Mythical Man Month.

Otra crítica que se podría dirigir al libro (y que de hecho Brooks recibió, tal como explica en el libro), es que gran parte de él es “sentido común”. Ciertamente, sí (y más en este siglo), pero sigue siendo necesario escribir el sentido común en algún sitio, y además, hay muchísimo en el libro que refuerza este sentido común- pruebas, estudios, razonamientos, etc.- que le dan más fuerza y vitalidad. Brooks también aporta mucho más que sentido común; sus ideas sobre composición de equipos son claras y razonadas, e imbuirnos de su filosofía es útil y valioso.

Además, Brooks tiene estilo escribiendo. Los ensayos se enlazan naturalmente, sabe darles vida mediante sus vivencias y consigue que el libro no sea aburrido y que las ideas nos lleguen frescas a la cabeza.

En definitiva, me uno al corrillo de gente que ha leído el libro y, quién sabe, puede que al de los que aplican sus ideas.

Grandes jugadores de la Juve

Hoy, la máquina de Turing original hubiera cumplido 98 años.

Thousands of people have come together to demand justice for Alan Turing and recognition of the appalling way he was treated. While Turing was dealt with under the law of the time and we can’t put the clock back, his treatment was of course utterly unfair and I am pleased to have the chance to say how deeply sorry I and we all are for what happened to him … So on behalf of the British government, and all those who live freely thanks to Alan’s work I am very proud to say: we’re sorry, you deserved so much better

Gordon Brown