From b4f1383bf04caab6237fe8ea87f8620bdad84527 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 5 Apr 2026 14:18:59 +0200 Subject: Add /2026/04/breve-e-incompleta-historia-del-desarrollo-web --- ...ve-e-incompleta-historia-del-desarrollo-web.gmi | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 blog/content/2026/04/breve-e-incompleta-historia-del-desarrollo-web.gmi diff --git a/blog/content/2026/04/breve-e-incompleta-historia-del-desarrollo-web.gmi b/blog/content/2026/04/breve-e-incompleta-historia-del-desarrollo-web.gmi new file mode 100644 index 00000000..c8c2e97b --- /dev/null +++ b/blog/content/2026/04/breve-e-incompleta-historia-del-desarrollo-web.gmi @@ -0,0 +1,93 @@ +# 2026-04-05 Breve e incompleta historia del desarrollo web + +El primer navegador y servidor web aparecieron en 1990, pero hasta 1993 la web era mayormente documentos estáticos; los servidores web tiraban de una carpeta con ficheros HTML con los que se construían las primeras páginas web. Cada vez que ibas a una dirección de la web, veías siempre el mismo documento, que podía contener enlaces a otros documentos. + +Es decir, nada de teclear un término de búsqueda en un formulario y obtener un listado de sitios web, ni por supuesto nada muchísimo más completo como poder escribir correo o publicar nada en la web usando sólo un navegador. + +(¡Esto no es del todo cierto! WorldWideWeb, el primer navegador, incorporaba un editor de páginas web. Pero sólo servía para editar el sitio web hospedado en el mismo ordenador donde ejecutábamos el navegador.) + +Últimamente pienso que nos debíamos haber quedado ahí, pero en 1993 apareció el "Common Gateway Interface", unas siglas bastante inescrutables excepto por el "Interface", con lo que lo dejaremos en CGI a secas. + +El CGI permite que un servidor web responda a la petición de un navegador no yendo a buscar un documento HTML dentro del ordenador, sino ejecutando un programa que genere la respuesta. + +Si os atrevéis con el terminal y tenéis Python instalado, podéis viajar al pasado siguiendo los siguientes pasos: + +1. Cread un directorio vacío. + +2. Cread un directorio con el nombre cgi-bin dentro del primer directorio. + +3. Cread un archivo con el nombre hola dentro del directorio cgi-bin con el siguiente contenido: + +``` +#!/bin/sh + +echo Content-type: text/html +echo +echo Hoy es $(date) +``` + +4. Haced que este archivo sea ejecutable con el siguiente comando: + +``` +chmod ugo+x cgi-bin/hola +``` + +5. Ejecutad un servidor web apropiado: + +``` +python3 -m http.server --cgi +``` + +6. Visitad http://0.0.0.0:8000/cgi-bin/hola y comprobad el resultado. Recargad la página varias veces y veréis que se actualiza la fecha, con lo que ya tenéis una página dinámica. + +Con este invento relativamente sencillo ya prácticamente podemos llegar a tener gran parte de la web hasta 2004 o así. + +El CGI es sencillo, pero algo tedioso. Cuando un programador escribe más de dos o tres programas CGI, se da cuenta de que se repiten los mismos patrones una y otra vez. El ejemplo anterior utiliza el lenguaje shell, pero la historia que conservamos parece indicar que el lenguaje de programación Perl fue de los más usados en los albores del CGI pues era de las maneras más convenientes de reutilizar código para implementar sitios web dinámicos mediante CGI. + +Seguramente uno de los primeros módulos para escribir CGI en Perl es CGI.pm, del que la versión más antigua que se conserva en el principal repositorio de código Perl es la 2.10 de 1995. + +Perl es un lenguaje de programación de propósito general que apareció en 1987, mucho antes que la web y el CGI. + +Allá por 1993, un programador comenzó a escribir un lenguaje de programación con el propósito de implementar su página personal. La primera versión oficial salió en 1997, con el nombre PHP. + +A diferencia del CGI, hoy en día es muy complejo reproducir la experiencia exacta de desarrollo de las primeras versiones de PHP, pero si tenéis PHP instalado, podéis hacer algo relativamente similar creando un archivo con el nombre index.php y el siguiente contenido: + +``` +
+