En la actualidad el ordenador, en el sentido más amplio que puede dársele a esta palabra: sobremesa, portátil, tablet, etc., es un dispositivo de uso tan común que todos los años se venden millones de ellos. Hace poco más de 30 años, sin embargo, los ordenadores prácticamente no estaban presentes más que en entornos empresariales, militares, científicos y universitarios. Este escenario comenzó a cambiar en la década de 1970, primero con los ordenadores que se vendían en forma de kit: el usuario recibía una serie de componentes y tenía que montar la máquina por sí mismo; y posteriormente con productos ya completamente acabados que, para utilizar, únicamente había que conectar a la red eléctrica y un monitor o TV.
Es obvio decir que las ventas de aquellos microordenadores eran inicialmente muy modestas, pero fueron creciendo hasta alcanzar varios millones de unidades durante la década de 1980. Algunos datos curiosos para recordar:
Durante esos años, de mediados de los 70 a mediados de los 80, los microordenadores fueron llevando la informática a millones de hogares, convirtiéndose en productos de venta masiva por estas fechas como regalos.
Tim Berners-Lee es mundialmente conocido por ser el inventor de la WWW (World Wide Web), una red que propuso inicialmente en marzo de 1989 basada en la idea (mucho más antigua) del hypertexto y que en la actualidad es usada ya no solamente para compartir documentos, que era su finalidad inicial, sino que se ha convertido en una plataforma para millones de aplicaciones y en el servicio más importante de Internet, arrebatándole dicho título a otros servicios que, si bien siguen siendo populares, han ido perdiendo terreno paulatinamente.
Con ayuda de un colaborador y un estudiante del CERN Bernes-Lee escribió el primer servidor web y también el prototipo de lo que sería el primer navegador web (se empleo un mes en su desarrollo). El servidor web se instaló en un ordenador con la dirección info.cern.ch, al que accedieron los tres desde sus respectivos ordenadores a través de Internet el día 25 de diciembre de 1990. Fue la primera conexión realizada entre un cliente y un servidor a través del protocolo HTTP, es decir, la primera prueba de funcionamiento de lo que hoy conocemos simplemente como la web.
Microsoft cuenta entre sus unidades menos conocidas con una dedicada a la investigación: Microsoft Research. Ésta tiene una gran reputación en distintos campos que abarcan desde las ciencias sociales a las bases de datos, pasando por el machine learning, las redes o el hardware. Es corriente encontrar artículos salidos de estos laboratorios en revistas científicas de primer nivel.
Una de las últimas novedades de Microsoft Research es un sistema operativo experimental llamado Verve, basado en un SO previo, también experimental, denominado Singularity. Hay que resaltar el hecho de que ninguno tiene que ver con Windows y que son experimentales, es decir, herramientas de investigación, por lo que no llegaremos a verlos en el canal comercial. No obstante serán la base para el desarrollo de características que, con el tiempo, se irán incorporando en los sistemas finales, como podría ser Windows.
Singularity era un SO que tenía la particularidad de estar escrito en código supervisado (managed code), no en ensamblador y C/C++ como es habitual. Verve tiene una estructura algo más compleja y se compone de tres capas fundamentales:
Esta arquitectura queda reflejada gráficamente en la figura inferior, procedente del artículo Safe to de Last Instruction: Automated Verification of a Type-Safe Operating System hecho público por Microsoft Research.
El clásico kernel de los sistemas operativos tradicionales en Verve se divide en dos capas: el núcleo de bajo nivel escrito en ensamblador y encargado básicamente de servir como abstracción del hardware y el kernel con servicios para aplicaciones. En cualquier caso, todo el código, tanto el escrito originalmente en TAL como el implementado en C#, es finalmente compilado a TAL, un ensamblador con seguridad de tipos y que emplea lógica de Hoare para asegurar la validez de cada una de las instrucciones ejecutadas.
Lo que se consigue con Verve es tener un sistema operativo que incluye una verificación automatizada del código que ejecuta, con independencia de que éste forma parte del núcleo, del kernel, de controladores de dispositivos o de una aplicación externa, incrementando así la seguridad y estabilidad del sistema. La única parte no verificada es el Boot loader que aparece en la figura anterior situado en el margen izquierdo, encargado (como su propio nombre indica) de poner en marcha el sistema, interactuando con el núcleo tras verificar y configurar el mapa de memoria con el que trabajará Verve.
Recomiendo la lectura del citado artículo a cualquiera que esté interesado no ya en el desarrollo de sistemas operativos, sino a cualquier programador que desee aprender cosas nuevas de una de las fuentes más reputadas en este campo.
Una de las ventajas de usar LaTeX para generar documentos es que uno puede centrarse en el contenido, dejando en manos de este magnífico software los detalles relativos al formato: tipos y tamaños de letra de títulos y subtítulos, ajustes de los párrafos, paginación, encabezados y pies, etc. Mientras escribimos el documento solamente hemos de marcar cada elemento adecuadamente: esto es un título, esto de aquí una lista, aquí va una imagen o una ecuación y así sucesivamente. El resultado no lo vemos hasta que compilamos ese documento para obtener, por ejemplo, una versión en PDF.
Por comodidad, dado que el software que tengo que usar funciona sobre Windows, edito mis documentos LaTeX con LyX y los proceso con MiKTeX, dos programas que funcionan muy bien conjuntamente y que cuentan con versiones para ese sistema operativo. El inconveniente principal es que prácticamente todos los manuales y documentación de dichas aplicaciones están pensados para usuarios de Linux, por lo que solucionar un problema concreto puede costar algo más de lo que uno esperaba.
Uno de esos problemas, del que solamente nos damos cuenta cuando generamos el PDF y lo leemos porque durante la edición no aparece, es la división de palabras o guionado, una tarea automática pero que, por defecto, está configurada para funcionar en inglés. Si el documento está en otro idioma, como es mi caso, las palabras se dividen de manera incorrecta. Uno se asegura de haber configurado correctamente el idioma del documento en LyX pero el resultado no cambia, por lo que recurre a San Google y ahí comienzan las penas: tienes que instalar el paquete X en Debian, tocar el archivo de configuración Y en Ubuntu y, en general, recetas abundantes que no sirven de nada en Windows porque no pueden trasladarse directamente.
A continuación una selección de los twits sobre tecnología en @fcharte del pasado mes de noviembre:
Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web