# Mi historia de la programación


Cuando tenía cuatro años, un Commodore 64 apareció en casa. A mi madre le gustaba explicar cómo ese día ni mi padre, ni mi hermano, ni yo comimos. Es una buena historia porque era un presagio de lo que iba a venir.

En este texto quiero hablar de los ordenadores programables, un invento significativo de la humanidad. Hablaré de sus antecedentes, de sus manifestaciones primitivas y de los largos linajes, pero también de los indicios de su decadencia.

Llamo a esto mi historia de la programación porque la cuento desde mi experiencia personal, mis puntos de vista y especialmente, la narrativa que veo. Los ordenadores programables han tenido una gran influencia sobre mí y quiero intentar explicar porqué. Además, creo que podemos aprender de la historia que quiero contar y actuar para que los frutos de los ordenadores programables sigan nutriéndonos por mucho tiempo.

De momento, este texto es un esquema con emplastes de entradas de mi blog sobre estos temas. Espero con el tiempo poder convertirlo en un texto lineal y engarzado.

## La prehistoria

Desde mucho antes que los ordenadores, la humanidad ha hecho cálculos. De hecho, en español además de la palabra ordenador, también usamos la palabra computador o computadora para estos aparatos. Antes de los ordenadores, los computadores y las computadoras eran las personas que se dedicaban a realizar cálculos, que precisamente fueron sustituidas por los ordenadores.

Para las operaciones que no podemos memorizar o que no nos resultan obvias, buscamos procedimientos para realizarlos a partir de pasos bien definidos.

Por ejemplo, para sumar dos números grandes, los escribimos alineados y sumamos las cifras de derecha a izquierda. También disponemos de procedimientos similares para otras operaciones matemáticas como la multiplicación o división.

Estos procedimientos son algoritmos, que fueron una gran motivación en el desarrollo de las máquinas de calcular.

Los matemáticos han ido inventando algoritmos más complejos con el paso del tiempo. Por ejemplo, para calcular el máximo común divisor de dos números se usa el algoritmo de Euclides (que probablemente no fue inventado por Euclides). En este algoritmo, vamos dividiendo los dos números de los que queremos calcular el máximo común divisor y repitiendo los pasos sustituyendo el número más grande por el resto de la división.

Estos algoritmos se pueden realizar en lápiz y papel, pero conforme vamos tratando con datos de mayor tamaño, realizarlos a mano es cada vez más costoso y con mayor probabilidad de error. De hecho, hoy nos sorprenderíamos con los cálculos que se realizaban a mano; hasta la carrera espacial de los sesenta dependía del trabajo manual de las computadoras.

Quienes necesitaban realizar estos cálculos buscaban maneras de acelerarlos y hacerlos de una manera más automática. Por ejemplo, los ábacos son instrumentos que automatizan el cálculo de operaciones aritméticas simples.

También se han fabricado máquinas para hacer operaciones más complejas. Por ejemplo, el mecanismo de Anticitera permitía calcular la posición de los astros allá por el siglo II a.c. También se han fabricado telares automáticos que pueden realizar patrones complejos.

Precisamente los telares automáticos son la inspiración que llevo a Charles Babbage a intentar construir máquinas de calcular. Babbage no consiguió construir ni su máquina más sencilla, la máquina diferencial para hacer cálculos aritméticos, pero entre 1989 y 1991 el museo de la ciencia de Londres construyó una máquina diferencial a partir de sus planos que funcionaba. Babbage se dio cuenta que se podría generalizar su máquina diferencial, de manera de que se le pudiesen describir algoritmos más complejos y la máquina los ejecutase, y se centró en el diseño de esta máquina analítica que realizaba operaciones siguiendo las instrucciones descritas en tarjetas perforadas como las que se usaban en los telares automáticos para describir los patrones a tejer.

Ada Lovelace, hija de Lord Byron y amiga de Babbage entendió que la máquina analítica podría ir más allá. No sólo trabajó en describir algoritmos complejos como instrucciones para la máquina analítica, sino que propuso que estas máquinas podrían servir para manipular otra información como notas musicales. Ada Lovelace nunca vio el futuro que imaginó, pero por sus primeros algoritmos para la máquina analítica se la considera la primera programadora de la historia.

A pesar de que la máquina analítica tal como la diseñó Babbage todavía no ha sido construida, la podemos considerar como el primer ordenador programable de la historia. A diferencia del mecanismo de Anticitera, el telar automático y tantas otras máquinas complejas, que sólo podían realizar la operación específica para la que habían sido diseñadas, la máquina analítica podía realizar operaciones arbitrarias.

### Referencias

=> ../../2011/11/hazanas-informaticas-v-las-maquinas-de-turing-y-von-neumann Hazañas informáticas V: Las máquinas de Turing y Von Neumann

## Ordenadores como habitaciones (primera parte)

En 1936, Alan Turing, uno de los padres fundadores, describió una sencilla máquina teórica que consiste en un cabezal situado sobre una cinta (infinita) que contiene símbolos. El cabezal puede desplazarse por la cinta, leyendo y escribiendo símbolos. La máquina se rige por un estado y una tabla que según el estado actual, el signo que lee el cabezal, describe si el cabezal debe sobreescribir el símbolo actual y desplazarse.

Esta construcción simple (la definición formal más precisa que esta definición informal no es mucho más larga) es sin embargo muy flexible. Dada una definición de estados y comportamientos adecuados, la máquina de Turing puede realizar, por ejemplo, cualquier cálculo que se nos ocurra; dada una cinta con símbolos que describan números, puede sumarlos, multiplicarlos, etc. y en general, realizar cualquier computación que pueda realizar un ordenador de hoy en día. Esto tiene un primer interés; la máquina de Turing puede modelizar cualquier proceso informatizable, y por tanto, nos puede servir como base teórica para analizarlos- podemos describir una máquina de Turing (sus comportamientos, símbolos, movimientos, estados, etc.) que realice cualquier cálculo.

Sin embargo, podemos dar un paso más allá. Dado que podemos realizar cualquier operación computable con una máquina de Turing, esto nos lleva a decir que podríamos programar una máquina de Turing de manera que interprete los símbolos en su cinta como la tabla de una máquina de Turing- con los comportamientos del cabezal, sus estados, los símbolos etc.; y luego colocar más allá en la cinta los datos que queremos que procese. Es decir; podríamos describir el proceso de suma y luego colocarle unos números para que sume. Esta máquina de Turing podría, sin variar su programación y sólo cambiando los símbolos impresos en la cinta, realice cualquier cosa que pueda realizar una máquina de Turing- es decir, podemos obtener una máquina de Turing única "universal"- cuya programación le permite realizar cualquier cálculo computable.

Este proceso mental teórico nos sugiere una cosa interesante- podemos construir una máquina que a partir de unos "datos" (en este caso, unos símbolos en una cinta) que describen el cálculo a realizar y los datos en sí, realice cualquier operación que podamos describir- en efecto, una máquina "programable".

Una vez más, esto tiene un interés teórico considerable, pero obviamente una máquina que procese una cinta infinita, leyendo y escribiendo símbolos de ella no parece algo muy práctico (y de hecho no lo es).

Paralelamente a las elucubraciones de Turing, otros científicos que trabajaban en máquinas de computación llegaban a ideas similares;  Konrad Zuse en Alemanía y Eckert y Mauchly en EEUU comenzaron a elaborar máquinas con conceptos de programabilidad; Zuse, aburrido de realizar cálculos en su trabajo como ingeniero aeronáutico,  creo el Z1, de programabilidad limitada y funcionamiento problemático en 1938, seguido del Z2 en 1939 y finalmente el completamente programable Z3 en 1941. Eckert y Mauchly trabajaban en el proyecto EDVAC, para crear una máquina para calcular trayectorias de artillería, al que se unió John Von Neumann en 1944. Se acredita a Von Neumann con la primera descripción "práctica" de una máquina programable ampliamente conocida publicada en 1945, que explica lo que ahora se conoce como arquitectura de Von Neumann.

La arquitectura de von Neumann es en sí muy parecida a la máquina universal de Turing, pero con una implementación física mucho más realizable- un procesador con unidades capaces de realizar cálculos aritméticos y de almacenar pequeñas cantidades de información, una memoria que almacena datos y programas, dispositivos de entrada y salida (teclados, pantallas, etc.) y lo que une a todos; el hecho de que el procesador lee instrucciones de su memoria y las va ejecutando, leyendo y modificando datos de la misma memoria y interactuando mediante sus dispositivos.

Las máquinas con arquitectura de Von Neumann eran infinitamente más versátiles que las máquinas de propósito único anteriores- eran programables y eso hacía que cualquier problema se pudiese afrontar con un programa nuevo, y que las mejoras en potencia de estas se verían traducidas en mejoras en la resolución de todos los problemas- máquinas potentes podrían resolver problemas más complejos y más grandes en menos tiempo.

Las primeras máquinas de Von Neumann tenían el tamaño de habitaciones y su programación era infinitamente tediosa y muy diferente a la programación que conocemos hoy en día. Inicialmente se programaban mediante las tarjetas perforadas usadas por los telares automáticos y que Babbage propuso para su máquina analítica. Es decir, el programador no usaba el ordenador para escribir el programa, lo confeccionaba a mano con papel y lápiz, lo traducía a tarjetas perforadas que posteriormente se introducían en el ordenador para producir el resultado.

Estos fueron los primeros ordenadores programables, aunque aún eran muy diferentes de los ordenadores programables modernos.

Además, debido a su enorme coste, sólo unos pocos tenían acceso a ellos por pertenecer a universidades o grandes empresas que podían disponer de ellos.

### Referencias

=> ../../2011/11/hazanas-informaticas-v-las-maquinas-de-turing-y-von-neumann Hazañas informáticas V: Las máquinas de Turing y Von Neumann

## UNIX

Las máquinas programables fueron evolucionando. De tarjetas perforadas se pasó a teletipos y pantallas con lo que el proceso de uso de los ordenadores cambió. De limitarse a introducir programas en tarjetas perforadas y esperar los resultados, los sistemas con teletipo eran mucho más interactivos. Los programas para estos sistemas podían, por ejemplo, preguntar datos al operador y realizar cálculos sobre esos datos al momento o confeccionar los programas directamente sentados delante del teletipo, acelerando considerablemente el proceso del desarrollo del software.

Nos centraremos aquí en 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, 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. UNIX tenía muchas características que identificamos en los ordenadores actuales como por ejemplo un sistema de archivos jerárquico y la capacidad de ejecutar varios programas simultáneamente (incluso con multiples usuarios usando diferentes terminales). Si bien las herramientas eran más primitivas, son perfectamente reconocibles y usables por los programdores actuales. De hecho, los entornos actuales de programación todavía contienen herramientas con un linaje directo del UNIX de los setenta.

Sin embargo, aunque las máquinas que ejecutaban UNIX (y otros sistemas operativos de la época) eran menos gigantescas, seguían estando al alcance de muy pocos. Pero UNIX innovó en un aspecto que plantaría las semillas que ayudaron a que muchas décadas después, los entornos de programación más potentes estuviesen al alcance de mucha más gente. 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. El desarrollo de sistemas operativos siempre ha sido increíblemente costos y en aquel entonces, al ser no portables, sólo funcionaban en un determinado tipo de hardware, incrementando las dificultades de obtener sistemas operativos para máquinas nuevas. 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.

Simultáneamente, Internet nació en los mismos entornos donde nació UNIX: grandes organismos tanto públicos como privados (universidades, grandes empresas, el ejército, etcétera). Internet inicialmente sólo conectaba a los grandes ordenadores que corrían sistemas como UNIX y similares, pero también sólo a las personas en esos entornos. Y disponer de una red de comunicación mundial de esas características no estaba al alcance de todos. Sin duda, el desarrollo de UNIX tuvo mucho que agradecer a que Internet facilitase la comunicación entre programadores.

### Referencias

=> ../../2011/11/hazanas-informaticas-vi-el-sistema-unix Hazañas informáticas VI: el sistema UNIX

## Los primeros ordenadores personales

Es muy difícil poner fechas e hitos a las cosas. Según la Wikipedia, a mitad de los setenta comenzaron a publicarse diseños de ordenadores que resultaban viables de montarse en casa. Destacan el Altair 8800 de 1974, que costaba 400 dólares pero que ni siquiera tenía teclado de serie; se podía programar una secuencia de arranque de instrucciones directas al procesador mediante un panel de interruptores. Poco después se pudieron comprar hechos esos teclados conectados al televisor que más que sistema operativo tenían el lenguaje de programación BASIC (ese lenguaje que destaca por el curioso honor de tener en su leyenda a Mary Kenneth Keller, una monja, y a Microsoft).

Entre los setenta y principios de los ochenta, fueron apareciendo más ordenadores personales que cada vez llegaban a más hogares.

Estos ordenadores eran infinitamente más baratos que los ordenadores más potentes que encontrábamos en las empresas y universidades y por supuesto también eran mucho más limitados. De hecho, principalmente servían para videojuegos sencillos y pequeñas herramientas de productividad. Llamativamente, aunque se podía programar en BASIC u otros lenguajes en la mayoría de ellos, era extremadamente tedioso desarrollar programas desde la misma máquina y muchos de los videojuegos y programas más complejos se desarrollaban en ordenadores mucho más grandes y costosos.

El mundo de la programación evolucionó medio en paralelo entre los usuarios domésticos que disponían de implementaciones de BASIC primitivas o que programaban casi a la antigua en lenguaje máquina con herramientas muy primitivas o incluso manuales, frente a los programadores en sistemas del calibre de UNIX que disponían de herramientas mucho más poderosas para máquinas con muchísimas más posibilidades.

Además, aunque pronto aparecieron sistemas como las BBS, algunas de las cuales se podían usar en ordenadores personales de bajo coste como el Commodore 64, los programadores de los primeros ordenadores personales no tenían tantos medios para comunicarse entre ellos como los programadores en los sistemas UNIX en entornos con acceso a Internet. Aprendían de revistas, de grupos de usuarios locales y de otros medios con menos interacción.

Sin embargo, muchos de los programadores de los ordenadores personales de los 80 que nunca hubieran tenido acceso a ordenadores más potentes y a Internet ya estaban cautivados por las posibilidades totalmente nuevas a las que les exponían los ordenadores personales.

### Referencias

=> ../../2013/01/conecte-el-teclado-al-televisor Conecte el teclado al televisor
=> ../../2026/07/la-anomal%C3%ADa La anomalía

## Un breve paseo por los salones recreativos

Merecen una breve mención especial las máquinas recreativas. La historia de los ordenadores siempre ha ido ligada a los videojuegos. El concepto de locales de ocio no apareció con los ordenadores, pero enseguida gente de empresas como Atari se dio cuenta de que a las máquinas mecánicas como los pinball, se podían añadir entretenimientos basados en ordenadores.

La economía de las máquinas recreativas era muy distinta a la de los ordenadores personales. Una máquina recreativa estaba en un salón recreativo, en un bar, o en otros locales de ocio devorando monedas poco a poco. Los juegos estaban también pensados para que los jugadores dejasen dinero constantemente. Con esto, resultaban rentables recreativas basadas en un hardware mucho más potente que el que se podía permitir cualquier usuario doméstico, de manera que los videojuegos de las recreativas siempre estaban un paso por delante de los ordenadores domésticos. (Además, muchas máquinas recreativas tenían hardware extremadamente especializado o de gran tamaño, como plataformas que movían al jugador, dispositivos que simulaban volantes o armas, que eran impensables para ordenadores domésticos.)

Aunque estas máquinas obviamente eran cerradas y no programables, con la programación llevándose a cabo en ordenadores más potentes de los que se podían permitir los usuarios domésticos, las recreativas contribuyeron al interés por muchos por la programación. ¿Quién no querría trabajar haciendo esos videojuegos espectaculares?

## El Amiga, el MS-DOS y los demás

En 1985, Commodore, la empresa que lanzó el ordenador personal más vendido de los 80, lanzó el Amiga 1000. El Amiga era un ordenador avanzado a su tiempo. En 1981 IBM ya había lanzado su primer PC (personal computer, ordenador personal) cuyo linaje todavía perdura hasta al menos el primer cuarto del siglo XXI. El IBM PC era marcadamente más potente que los primeros ordenadores personales y, por ejemplo, pronto dispuso de entornos de programación muy similares a los que se usan hoy en día y equiparables a los sofisticados entornos de programación de las máquinas UNIX y el resto de grandes computadoras de la época.

Sin embargo, el Amiga estaba todavía más cerca de las máquinas UNIX. Como estas, pero a diferencia de los primeros PC, su sistema operativo podía ejecutar varios programas simultáneamente, aunque con menos robustez que los sistemas UNIX con capacidades hardware y mayor evolución en este sentido. (La primera versión de Microsoft Windows de 1985 también tenía esta funcionalidad, pero Windows era un sistema operativo mucho menos usado en los PC que el MS-DOS; hasta 1990 Windows no tendría un éxito significativo.) Además, el Amiga contaba con unas capacidades multimedia (gráficos, sonido) que aunque hoy nos parecerían primitivas, no fueron igualadas por los PC hasta mucho más tarde. Con sus capacidades multimedia, el Amiga además tenía un gancho mucho más potente; permitía hacer música que hasta podía entrar en las listas de éxitos y dar unos videojuegos con poco de envidiar a los de los salones de máquinas recreativas.

Los sistemas con MS-DOS y con Windows acabarían matando al Amiga pronto. Los PC eran inmensamente más populares en las empresas y más allá de los juegos, había muchísimo desarrollo de software de productividad, tanto doméstica como empresarial. El desarrollo de software sobre los PC iba acortando la ventaja acumulada durante años por los sistemas UNIX, especialmente tras alcanzar los PC la suficiente potencia como para poder llevar a cabo la gestión de empresas cada vez más grandes.

El Amiga quizá sería el primer ordenador personal al alcance del gran público que nos resultaría en muchos sentidos equivalente a los ordenadores que conocemos. Junto al vinieron otros sistemas, basados en el mismo procesador Motorola 68000 como los primeros Macintosh de Apple y el ST de Atari con capacidades similares. En conjunto con los PC, fueron los primeros ordenadores programables con suficiente potencia para proporcionar un entorno de programación como los que conocemos hoy, con el que programar quedaba más al alcance de la mayoría de sus usuarios.

Hacia el final de esta época también comenzaron a estar disponibles conexiones a Internet domésticas asequibles, comenzando a conectar el mundo doméstico con el de las grandes organizaciones con ordenadores potentes y acceso a Internet.

## Los ordenadores personales de la era Internet

En 2001, Windows XP y Mac OS X llegaron al mercado. Por esa época, Linux también comenzaba a ser más factible de usar.

También en esa época, según donde nos encontrásemos del globo, la gente comenzaba a poder acceder a Internet. Como los sistemas UNIX sobre los que Internet se construía en gran parte, hasta el momento la red que conectaba todo el mundo, hasta el momento estaba al alcance de unos pocos en ciertas empresas y universidades, pero por aquella época, las conexiones domésticas a Internet comenzaron a ser una realidad.

Windows XP, Mac OS X y Linux acabaron de traer la robustez de los sistemas operativos del calibre de UNIX al usuario doméstico. Contaban con capacidades para ejecutar varios programas simultáneamente sin los problemas de los anteriores sistemas domésticos donde un defecto de un programa frecuentemente hacía caer todo el sistema.

Esta robustez era idónea para el uso de Internet, así como las mayores capacidades de hardware, brindando una experiencia bastante similar a la de hoy en día.

Antes de 2000, había estaciones de trabajo con una experiencia de usuario "parecida" a la que nos sorprendía en el 2000; desde el NeXT (1988), pasando por los UNIX orientados a estaciones de trabajo o quizá el OS/2 con cuya historia no estoy muy familiarizado. Pero todos ellos estaban fuera del alcance de los usuarios domésticos y seguramente no tenían el software necesario para ser útiles en estos contextos. (Y por supuesto, aunque los UNIX de los 90 tenían juegos, nada comparado a los juegos domésticos de la época, claro.)

Pero estos sistemas, junto con el acceso a todo el material sobre programación que había sido desarrollado en los sistemas UNIX durante décadas representó un salto cualitativo para muchos programadores. De repente no sólo disponían de entornos de programación punteros, sino que además tenían acceso código y materiales sobre programación que en épocas anteriores estaban al alcance de muy pocos.

Curiosamente, esta terna de sistemas operativos también resultó ser más o menos el fin de los sistemas UNIX anteriores. Linux, con su modelo de código abierto, devoró a los UNIX comerciales que seguían existiendo, y Windows poco a poco se quedó con la otra parte del pastel. Del linaje del UNIX original, sólo sobreviven hoy en día, con mucha menos popularidad que Linux, los BSD como FreeBSD o NetBSD que todavía se derivan de la implementación de UNIX de la universidad de Berkeley.

### Referencias

=> ../../2025/01/los-sistemas-operativos-y-un-amanecer-de-internet Los sistemas operativos y un amanecer de Internet

## Los móviles y ordenadores como habitaciones (segunda parte)

Después de la revolución del ordenador personal y de Internet, llegó la revolución del smartphone. Ya con Internet asentado en el gran público, muchos marcarían 2007 y la introducción del iPhone como el momento en que comenzamos a tener en el bolsillo un dispositivo con acceso continuo a Internet. Además, Internet aceleró su uso comercial; de una red como medio de comunicación entre grandes organizaciones pasamos al mundo que trajo a la burbuja de las punto-com que a pesar de reventar en el 2000, hizo que Internet se convirtiese más en un lugar donde hacer negocios por encima de conectarnos.

¿No es el móvil un ordenador? Sí y no. Sí, se puede programar un móvil, pero cada vez menos. Curiosamente, como los ordenadores personales de los ochenta, de momento es infinitamente más conveniente y común programarlos desde los ordenadores convencionales.

Además, poco a poco se van introduciendo medidas de control. Con justificaciones más o menos válidas sobre la seguridad (los ordenadores personales conectados a Internet nos han demostrado sobradamente de los riesgos que conlleva cosas como realizar transacciones monetarias o gestiones desde un ordenadore), pero también gracias al control de los móviles por un par de empresas privadas, los móviles suponen un entorno mucho más restringido. Con los ordenadores personales siempre hemos tenido una libertad casi absoluta sobre los programas que queremos ejecutar en nuestras máquinas que es muy distinta y reducida en los móviles.

Nuestra relación con los móviles también es distinta a los ordenadores personales. Hasta los ordenadores portátiles más pequeños disponen de unas pantallas más grandes que la de cualquier móvil y tablet, y los teclados táctiles de los móviles son inútiles y tediosos salvo para los usos más limitados y breves. No sólo olvidémonos de programar en estos dispositivos, sino de cualquier tipo de actividad exigente. Los móviles y tablets nos llevan un poco al pasado de los ordenadores de los ochenta, sobre todo utilizados para juegos y otras actividades de ocio.

El acceso a la tecnología es lo que acelera su desarrollo. Tras cuarenta años contando cosas y calculando trayectorias balísticas, en prácticamente un par de años de ordenadores en casa nacieron las primeras BBS ("bulletin board service", la Wikipedia española propone "tablón de anuncios") que conectaban ordenadores domésticos. Internet ya existía desde hace tiempo, pero en universidades y empresas; Internet iría sustituyendo a las BBS poco a poco durante un par de décadas.

Aparte de tener el mágico ordenador programable en casa, la otra parte de la anomalía es que este ordenador programable era prácticamente abierto y manipulable, pero a pesar de ello poco a poco lo pudimos usar para partes imprescindibles de la vida. No sólo para comunicarnos con otras personas, sino también para hacer trámites, comprar, escuchar música o ver la tele. Me parece alucinante que básicamente el sistema con el que puedo presentar la declaración de la renta sea un heredero de esos ordenadores que la gente ensamblaba siguiendo las instrucciones de una revista y usando un sistema operativo cuyos origenes están en el tiempo libre de estudiantes y peterpanes.

Pero la tendencia es que esto desaparezca. Es cierto que ha habido muchos momentos en los que para hacer estos "trámites vitales" teníamos que pasar por sistemas cerrados como Microsoft Windows (sí, esos que aparecen unos párrafos más arriba por sus BASICs en esos ordenadores programables domésticos), pero hemos tenido largos destellos de unos usos sin restricciones que comenzamos a añorar.

### Referencias

=> ../../2025/02/el-lento-adios-a-la-magia-de-los-ordenadores El lento adiós a la magia de los ordenadores
=> ../../2026/07/la-anomal%C3%ADa La anomalía

## Apéndices

### No es Internet, es la web

La historia de la programación tiene muchísimo que ver con Internet y la web.

Internet no es sólo el medio que aceleró la programación poniendo al alcance de todo el mundo más información sobre cualquier tema de la que nunca imaginamos, incluyendo todo tipo de documentación y materiales para aprender a programar. También nos permite soñar con que nuestros programas serán útiles para otros y nos conecta con otros programadores. Pero también es un medio que todo programa puede explotar para multiplicar sus posibilidades al ejecutarse sobre un dispositivo con acceso a Internet. Y la web curiosamente también cada día influencia más a las tecnologías que usamos para programar.

Internet como la red que interconecta redes a escala mundial obviamente a parte de un hito en el avance de los dispositivos hardware para crear redes, también supuso el desarrollo masivo del software necesario para hacerla funcionar, muy entrelazado con la historia de la familia de sistemas operativos UNIX mencionadas anteriormente y que hoy son extremadamente significativos como sistemas operativos de los ordenadores programables.

Como era de esperar, al igual que UNIX, Internet nació en las mismas grandes organizaciones y al principio sólo estaba al alcance de aquellos que trabajaban o estudiaban allí. Pero a finales de los noventa, Internet también entró en nuestras casas, de hecho de una manera mucho más importante de la que entraron en las casas los sistemas UNIX.

Internet se diseño de manera que todos los dispositivos en las redes que interconectaba aparecían en Internet de una manera prácticamente transparente en relación a la red donde se hallaban físicamente. Un ordenador en una universidad de Australia podía conectarse directamente a un ordenador en otra universidad en California. Y en la era de los módems telefónicos e incluso el ADSL y otros primeros mecanismos de conexión a Internet doméstica, ese ordenador en la universidad también podía conectarse al ordenador en nuestro hogar.

Sin embargo, pronto había más que un ordenador doméstico conectado a Internet. Había varios ordenadores o incluso móviles conectados a Internet. Al resultar costoso dar a cada dispositivo una de las relativamente escasas direcciones IPv4, se introdujo el NAT para que todos los dispositivos en una red doméstica apareciesen en Internet con una única dirección IPv4. Esto nos parecía un detalle pequeño, pero dificultaba que el resto de Internet accediese a servicios hospedados en conexiones domésticas. "Abrir puertos" y otros inventos resolvieron parte de los problemas que los usuarios domésticos sufrían por culpa del NAT e Internet evolucionó acorde con el NAT, centralizando servicios y penalizando que los usuarios domésticos ofreciesen sus propios servicios.

A finales de los noventa este problema era tan obvio que hasta salió IPv6 que ampliaba el número de direcciones del IPv4 de una manera astronómica. Esto debería haber resuelto el problema, pero en 2026 todavía se cuantifica el avance de IPv6 como en poco más de la mitad de Internet. Un avance muy lento en casi tres décadas, pero quizá comprensible dada la complejidad de realizar cambios a gran escala en un sistema compuesto de tantísimos elementos.

El ocaso de la programabilidad de los ordenadores quizá vaya un poco de la mano de la separación en la Internet de dos velocidades donde el usuario de a pie tiene más dificultades para ofrecer sus servicios que las empresas. Quizá volver a descentralizar la Internet (como en sus orígenes) también ayude a mantener la popularidad de los ordenadores programables en nuestros hogares.

Un proyecto interesante en este sentido es Yggdrasil, una especie de VPN pública sobre Internet donde cada dispositivo tiene una dirección (IPv6, aunque no necesitamos tener una conexión a Internet IPv6 para usar Yggdrasil) fija y todos los dispositivos pueden ver a todos los dispositivos sin problema, reproduciendo el esquema de la Internet original.

El otro aspecto de Internet que influye a la programación es la web, que apareció en 1991 y se desarrolló en paralelo en esa época dorada, con tanta importancia que hoy en día muchísima gente considera que Internet es la web.

Antes de la web, los programas que funcionaban sobre Internet a menudo usaban protocolos especializados según lo que ofrecían los servicios. Por ejemplo, el famoso FTP (file transfer protocol) que como su nombre indica, es un protocolo para transferir ficheros. Aunque la web nació como una aplicación del hipertexto (usar enlaces para saltar de un documento a otro) para publicar documentos sobre Internet, poco a poco se le fueron añadieron funcionalidades que permitían realizar más y más aplicaciones sobre un navegador de Internet. De enviar formularios y transferir archivos, hasta hoy en día videoconferencias y aplicaciones prácticamente igual de funcionales que cualquier aplicación de escritorio.

Las tecnologías de la web son tan populares y efectivas, que hoy en día se usan incluso para el desarrollo de aplicaciones de escritorio sin navegador visible de por medio.

El competidor principal de la web era el protocolo Gopher que surgió más o menos a la vez. Curiosamente, la web era un invento europeo (nacido en el CERN suizo) mientras que Gopher salió de una universidad de Minnesota. Y si la web originalmente estaba orientada a la publicación de documentos, la estructura de menús de Gopher parecía tener más aplicaciones comerciales. Pero la web creció de una manera vertiginosa y dejó a Gopher atrás, que hoy en día sobrevive en el mundillo de los entusiastas y quizá en las aplicaciones basadas en chatbots sobre aplicaciones de mensajería instantánea, que muchas veces parecen pertenecer al linaje de las aplicaciones basadas en menús.

Los navegadores han evolucionado hasta un nivel de complejidad tan extremo que hasta una empresa del tamaño de Microsoft se ha rendido y dejado de implementar su propio motor de navegación y ha pasado a depender del motor de navegación de Chrome, controlado por Google que es un competidor directo. Y esta complejidad, aunque plantea ciertas ventajas al poder aprovechar toda la potencia de la tecnología web en nuestros programas, también nos aliena y nos hace dependientes de los pocos organismos que tienen el poder sobre los pocos motores de navegación completos que existen.

Quizá un resurgimiento de los ordenadores programables pase también por abandonar esos monstruos inabarcables que son los grandes navegadores y quizá reorientar el desarrollo hacia paradigmas más sencillos como las aplicaciones basadas en menú herederas de Gopher o los chatbots, pero sobre sistemas de mensajería abiertos.

Referencias

=> ../../2026/09/la-nueva-vieja-internet La nueva vieja Internet
=> ../../2026/09/castores-en-el-hiperespacio Castores en el hiperespacio
=> https://yggdrasil-network.github.io/ Yggdrasil

### Tildados

En la línea de Yggdrasil que recupera el antiguo modelo de Internet, hay otra línea evolutiva que se origina directamente en los sistemas compartidos de las grandes empresas con acceso a Internet en sus origenes. En aquella época, los miembros de una facultad universitaria quizá tenían un gran sistema UNIX o similar con cientos de terminales del mismo ordenador que podían usar. Cada miembro guardaba sus archivos en el gran sistema, quizá podían publicar en el servidor web de este sistema, y tenían mecanismos de comunicación dentro del propio sistema.

Super Dimension Fortress es un sistema similar fundado en 1987 como club social sin ánimo de lucro. Cualquiera puede crearse una cuenta y conectarse a una serie de servicios gestionados de una manera muy parecida a los grandes sistemas UNIX multiusuario.

Y en tiempos recientes, se ha dado un pequeño renacer de este tipo de sistemas. Una iniciativa curiosa es el tildeverso, donde se reunen toda una serie de "tildes" que ofrecen servicios a sus usuarios. (Se llaman tildes porque en los sistemas UNIX, se usa la tilde como abreviatura para referirse a los directorios donde los usuarios almacenan sus archivos, o para referirse a los usuarios en general. Así, ~alex es un atajo al directorio personal del usuario alex.)

Aunque a primera vista las tildes y sistemas similares no parecen más que pequeñas aficiones, los usuarios de las tildes forman pequeñas comunidades quizá como nostalgia de las épocas anteriores que consideramos más doradas (y que incluso algunos de sus miembros no hayan vivido). Pero son comunidades de gente que quiere experimentar y crear, y cuyas evoluciones dependen del uso de los ordenadores programables donde se pueden crear tildes y el software asociado.

Las tildes también han sido el caldo de cultivo de otros proyectos interesantes respecto a esta historia, como el protocolo Gemini. Gemini es un experimento que consiste en un protocolo y un formato de hipertexto parecidos a los de la web más primitiva, con muchísimas más limitaciones. Gemini desecha gran parte de la complejidad de la web, contrastando el hecho de que ni Microsoft se atreve a mantener un motor de navegador actual, con que cualquiera puede implementar los protocolos de Gemini en una tarde. Este tipo de proyectos pueden ayudar a devolver el espíritu experimentador e innovador de las épocas doradas.

=> ../../2022/01/que-no-os-enganen Que no os engañen

### El camino adelante

Los trámites que hacíamos en un ordenador abierto y programable se irán cada vez más a los móviles poco programables y cerrados excepto para Apple y Google, de las empresas con más poder que existen (precisamente en parte por este control que ejercen). Lo mismo pasará con muchas otras cosas; los jóvenes ya no se reirán de los viejos porque insistan en hacer cosas en el ordenador, porque ya no podrán.

Y la verdad, no pasa (casi) nada.

Espero que durante más tiempo del que me importa, sigamos pudiendo comprar ordenadores programables y no tener que ensamblarlos a partir de instrucciones en papel. Las posibilidades del ordenador programable seguirán siendo infinitas como lo han sido siempre para el que ha querido dedicarse a ellas. El otro componente es que de una manera u otra seguiremos pudiendo enviar ceros y uno de una punta a otra del mundo a un coste ridículo. Incluso comenzamos a tener buenas piezas para evitar alguna de las perversiones de la estructura de Internet que han entorpecido la anomalía (curiosamente, veo que no he escrito aquí sobre la red Yggdrasil y que lo que encuentro rápidamente sobre este tema son doce palabras en 2005; nota mental: hay que escribir una entrega sobre este tema).

Las comunidades serán más pequeñas y los efectos creo que también. Por verle el lado positivo, el esfuerzo masivo que se ha dedicado a hacer que el ordenador programable sea útil para el mundo real quizá ya no sean necesarios: la inacabable ingeniería inversa para hacer funcionar sistemas operativos abiertos sobre ordenadores no diseñados con ese propósito, los bizantinos navegadores que intentan seguir la estela de Apple y Google; todos esos esfuerzos quizá se puedan destinar a otras cosas que hagamos con esos ordenadores programables si le dejamos las cosas oficiales a un aparato que no nos suponga un gran esfuerzo económico. Y quizá si le dedicamos más atención al ordenador programable con teclado al que acudimos explícitamente en peregrinamiento en vez de al pequeño aparato que inconscientemente ocupa nuestra mente por estar siempre en el bolsillo, haremos cosas más interesantes gracias a usar el aparato más interesante.

Creo que la primera mitad de este documento transmite el optimismo que tengo sobre los ordenadores programables. En mi opinión, tenemos que buscar argumentos para enfocarnos en lo positivo y en cómo seguir sacando rédito positivo de ellos. Las ideas introducidas en mensajes como el de "Don't take the black pill" ("no tomes la pastilla negra", una charla sobre estos temas[1]) pueden ayudarnos.

Referencias

=> https://www.youtube.com/watch?v=zLZwpH5lCD4 [1] Don't take the black pill
=> ../../2026/07/la-anomal%C3%ADa La anomalía

=> ../../contacto Contacta conmigo.
=> https://github.com/alexpdp7/alexpdp7/edit/master/blog/content/notas/tecnologia/mi-historia-de-la-programación.gmi Edita esta página.
=> . Subir.
