Programación web en servidores Linux

Si es usted programador tal vez se haya preguntado alguna vez por qué no es posible colocar su ejecutable en el servidor y que los clientes vean las ventanas del programa desde sus ordenadores conectados a Internet. La respuesta es que la comunicación entre ordenadores está basada sobre determinados protocolos. El HTTP es el protocolo de la Web, y por tanto la salida de nuestro ejecutable no deben ser ventanas tipo Windows sino código HTML.

Tal vez se pregunte porqué usar el HTTP en lugar de un protocolo que permita enviar ventanas completas tipo Windows. La respuesta es que los procesos que requieren transmisión por la Red son órdenes de magnitud más lentos que los que se producen en el interior de un ordenador. Es decir, hay que programar de forma que se minimice el tránsito de datos por la Red.

La programación para las redes TCP/IP se conoce con el nombre de programación cliente-servidor. Consiste en que nuestro programa se desdobla en dos: uno en el ordenador cliente y otro en el servidor. La parte cliente se encarga del interfaz y de la interacción con el usuario, y la parte servidor de obtener y manipular los datos. La comunicación entre ambos se produce mediante sockets (conexiones TCP) y eventualmente mediante protocolos propios desarrollados para tal efecto.

La programación cliente-servidor tradicional (como la explicada en el párrafo anterior) tiene su grado de complejidad. Sin embargo con el advenimiento de la World Wide Web se abre una nueva posibilidad: las aplicaciones para la Web. Se trata de una especialización y concreción de las aplicaciones cliente-servidor, donde tanto el cliente (el navegador) como el servidor (el servidor web), y el protocolo mediante el que se comunican (el HTTP) son estándar, y no han de ser creados por el desarrollador.

La parte de cliente de las aplicaciones web está formada por el código HTML que forma la página web, con opción a código ejecutable mediante los lenguajes de scripting de los navegadores (JavaScript, VBScript, PerlScript) o mediante pequeños programas (applets) en Java. La parte de servidor está formada por un programa o script que es ejecutado por el servidor web, y cuya salida se envía al navegador del cliente. Tradicionalmente a este programa o script que es ejecutado por el servidor web se le denomina CGI (Common Gateway Interface).

El sistema PHP no es más que un módulo dentro del servidor web, encargado de “interpretar” las páginas con extensión .php. El intérprete PHP analiza el código como un script a ejecutar en el servidor. Después recoge la salida y se la envía al servidor web.

Concepto de página PHP

Las páginas PHP tienen ciertas similitudes con su homólogo en Windows, las páginas ASP. Del mismo modo que estas últimas, en un archivo con extensión PHP podemos encontrar código de script que se ejecuta en el servidor y código HTML que forma la página web. Es decir, en un mismo archivo se encuentra el HTML (apariencia de las páginas) y el código de la aplicación a ejecutar en el servidor.

Sin embargo, el código de script es la diferencia más importante. Mientras el código de las páginas ASP puede escribirse utilizando uno o varios de los lenguajes de script admitidos por dicho sistema (JavaScript, VBScript o PerlScript), en el caso de PHP, se trata de un lenguaje propio de programación de scripts, específicamente diseñado para el desarrollo de aplicativos web.

En el momento actual, la facilidad de desarrollo en PHP gracias a su similitud a otros lenguajes de programación como C, Perl, Java o JavaScript, lo han convertido en un formato muy usado por los desarrolladores web en entorno Linux.

PHP vs CGI

El desarrollo de aplicativos CGI (usualmente desarrollados en Perl) está claramente en desuso por la incorporación de nuevas tecnologías para el desarrollo de aplicativos web, como son los entornos ASP en Windows o PHP en Linux.

Veamos en forma gráfica un resumen de las características que diferencian a estas dos posibilidades de programación web en entorno Linux:

Criterios
PHP
CGIs PERL
Sintaxis del lenguaje
  • Muchas similitudes con otros lenguajes de programación.
  • Corto tiempo para empezar a programar.
  • Lenguaje de sintaxis específica.
  • Requiere de bastante tiempo poder empezar a programar con el mismo.
Aplicaciones
  • Orientado a programación web.
  • Lenguaje multiplataforma de propósito general.
  • Puede programarse cualquier aplicativo.
  • Muy utilizado en sus comienzos en entornos Linux para desarrollo de aplicativos web.
Desarrollo web
  • Muchas facilidades para la programación web.
  • Lenguaje no específico para desarrollo web, pero dispone de muchas utilidades en Internet .
  • Alto uso de memoria, y por tanto, de carga en el servidor, al abrir una aplicación por cada ejecución.
Velocidad
  • Código muy rápido en su ejecución.
  • Código interpretado. Ejecución lenta.
Corrección de errores (Debugging)
  • Errores en detalle.
  • Errores muy poco descriptivos.

Le presentamos a continuación algunos comentarios sobre los motivos que hacen de PHP un entorno más adecuado para el desarrollo de scripts web frente a los aplicativos bajo Perl.

El lenguaje

Como le indicábamos con anterioridad, si usted ha desarrollado antes con lenguajes como C, C++, Perl, Java o Javascript, le resultará casi inmediato el ponerse a programar en PHP. Existen numerosas similitudes de sintaxis y estructura con cualquiera de estos lenguajes, lo que hace de PHP un lenguaje fácil para el desarrollo de aplicaciones web.

Es más, si nunca ha desarrollado con PHP, y tampoco conoce el Perl, le resultará más sencillo empezar a trabajar en PHP, dado que precisará de menos tiempo para aprender a usar este lenguaje. El Perl, al ser un lenguaje más genérico (de propósito general) es más extenso y le llevará por tanto más tiempo comenzar a utilizarlo.

Facilidades para crear aplicativos web

Mientras Perl es un lenguaje de propósito general (usted puede generar aplicaciones de cualquier tipo con el mismo), aunque su uso haya estado más enfocado en el desarrollo de scripts, PHP es un lenguaje de script, específicamente diseñado para la creación de scripts web.

Este motivo hace que en PHP existan muchas facilidades para realizar tareas comúnmente relacionadas con el entorno web, como los accesos a bases de datos, envío de mensajes, formularios, etc. En resumen, obtendrá idénticos resultados escribiendo mucho menos código.

Generación de páginas web

El hecho de que PHP sea un lenguaje de script específico para desarrollo web, le da evidentemente ventajas para la generación de páginas web.

Recordemos que, al igual que su homólogo en entorno Windows (ASP), todo lo contenido en un archivo de extensión php es interpretado y enviado el resultado al servidor web. El código de script PHP puede intercalarse directamente entre código HTML de forma muy sencilla. Un script Perl, sin embargo, debe indicar de modo específico el resultado que debe enviarse al servidor web, lo cual lo hace menos intuitivo a la hora de realizar desarrollos web.

Este aspecto de PHP, por el que se separa claramente el código y los datos HTML, permite separar con mucha claridad la programación y el diseño de una página web, lo que facilita a la postre el trabajo de mantenimiento sobre los desarrollos, al ser más intuitiva y clara la separación entre estos dos componentes (programación y diseño) y permitir por tanto el trabajo sobre uno de ellos sin afectar al otro.

Velocidad

Una de las ventajas claras que ofrece PHP frente al uso de scripts en Perl es su velocidad. La rapidez de ejecución de los scripts PHP es una de sus claras virtudes, a pesar de tratarse de código interpretado en ambos casos.

Depuración de errores (debugging) en PHP frente a CGIs en Perl

Una de las labores más habituales en los desarrollos de cualquier tipo es la depuración de errores una vez finalizado el proceso de escritura del código. Quien más y quien menos, siempre encuentra algún que otro error al ejecutar inicialmente un proceso recién terminado a pesar de haber realizado un diseño muy riguroso para evitar dichos errores en la medida de lo posible.

En este sentido, Perl es un lenguaje muy poco favorable. Los errores en los scripts Perl son muy poco “comunicativos”. Normalmente podremos encontrarnos con errores del tipo “Internal Server Error”, que no dan ninguna idea ni del motivo ni del lugar donde se produce el error.

Por su parte, al ocurrir un error en el código PHP, el mismo especifica las líneas donde se produce. Aunque el mensaje muchas veces tampoco es muy explicativo, al menos se dispone de la ubicación exacta del error, lo cual es una gran ayuda para el desarrollador.

¿Cuáles son las desventajas?

Realmente, el uso de PHP está claramente indicado para realizar desarrollos web en entorno Linux. Sus facilidades para el acceso a bases de datos específicas como MySQL o PostgreSQL, y su claro estándar actual en el desarrollo de aplicativos web en sistemas Linux, lo hacen el candidato idóneo frente a realizar desarrollos en un lenguaje genérico.

Pocas son las pegas que podemos encontrar en este lenguaje de script. Se trata más bien de puntos menos favorables, pero en ningún caso, en desventaja frente al uso de scripts en Perl:

  • La depuración de errores es uno de sus puntos débiles, aunque es algo achacable a todo lenguaje de script (y recordemos que es un problema más destacado en el propio Perl).
  • El hecho de que PHP sea un lenguaje específico para desarrollo de scripts web hace que esté en desventaja para realizar otras tareas, frente al uso de un lenguaje de propósito general como Perl. Sin embargo, en el desarrollo de aplicativos web, no podremos apreciar realmente dicha desventaja.