¿Qué es un programa CGI?
Empecemos por el principio. El interfaz CGI consiste en un conjunto de normas que permiten a una página Web comunicarse y ejecutar con programas externos a la página. Estos programas deben a su vez seguir también una serie de normas. A los programas que cumplen estas reglas, impuestas por el interfaz CGI, se les llama programas CGI, scripts CGI o simplemente CGI's, y pueden estar escritos en cualquier lenguaje, tanto interpretados como compilados, siendo los más usados los siguientes:
- Perl
- Este lenguaje interpretado es el más usado a la hora de hacer CGI's debido a las grandes facilidades que ofrece en el tratamiento de texto. Suele estar presentes en todas las plataformas tipo Unix, como Linux.
- Bash (sh) o cualquier otra shell de Unix
- Son usados por su increíble sencillez y facilidad de aprendizaje. Sin embargo tienen fallos de seguridad y no es aconsejable usarlos excepto para CGI's muy sencillos.
- C o C++
- Son también muy usados. Ofrecen la ventaja de que son lenguajes mucho más potentes, pero tienen otros inconvenientes: son más difíciles de aprender, es necesario compilarlos y sobre todo porque lleva más tiempo hacer un programa usándolos que usando por ejemplo Perl.
A partir de ahora hablaremos de CGI's para referirnos a este tipo de programas. Su principal característica será que se ejecutan en el ordenador donde está el servidor Web, y nunca en el del navegante que visita la página.
La siguiente pregunta básica es ¿qué limitaciones tiene un CGI? Como he mencionado antes usando CGI's se puede dotar a una página Web de una interactividad que sería impensable con ningún otro método. Sin embargo no es posible ejecutar cualquier programa desde una página Web. Por ejemplo no puedes entrar en la página de Microsoft y ejecutar allí mismo la última versión de por ejemplo el MS-Word o ir a un servidor Unix cualquiera y ejecutar el interfaz gráfico X-Window.
El propio interfaz CGI's impone severas limitaciones, que se derivan por el propio funcionamiento del sistema:

En resumen, debe quedar claro que el CGI recibe unos datos, los procesa y devuelve otros datos. El usuario no puede interacturar directamente con el programa CGI. Para obtener ese efecto hay que usar apropiadamente el lenguaje HTML y hacer sucesivas llamadas a uno o varios CGI's.
Lo último que nos queda por decir de los programas CGIs es respecto a su forma de interactuar con el servidor Web. Es muy sencillo, toma los datos de entrada por la entrada estándar (como si hubiera un usuario escribiéndolos en un teclado) y envía los datos de salida por la salida estándar (como si los mandáramos a una pantalla). Gracias a esta sencillez cualquiera que haya programado en un lenguaje de programación puede realizar un CGI sin tener que aprender muchas cosas nuevas.