Programación.

Antecedentes
En los primeros tiempos de la computación [|cliente-servidor] , cada aplicación tenía su propio programa cliente que servía como interfaz de usuario que tenía que ser instalado por separado en cada ordenador personal de cada usuario. El cliente realizaba peticiones a otro programa -el servidor- que le daba respuesta. Una mejora en el servidor, como parte de la aplicación, requería normalmente una mejora de los clientes instalados en cada ordenador personal, añadiendo un coste de soporte técnico y disminuyendo la productividad.

A diferencia de lo anterior, las aplicaciones web generan dinámicamente una serie de páginas en un formato estándar, como [|HTML]  o [|XHTML] , soportados por los navegadores web comunes. Se utilizan [|lenguajes interpretados]  en el lado del cliente, directamente o a través de [|plugins]  tales como [|JavaScript] , Java, Flash, etc., para añadir elementos dinámicos a la interfaz de usuario. Generalmente cada página web en particular se envía al cliente como un documento estático, pero la secuencia de páginas ofrece al usuario una experiencia interactiva. Durante la sesión, el navegador web interpreta y muestra en pantalla las páginas, actuando como cliente para cualquier aplicación web.

Interfaz
<span style="font-family: Arial,sans-serif; font-size: 10pt;">Las interfaces web tienen ciertas limitaciones en las funcionalidades que se ofrecen al usuario. Hay funcionalidades comunes en las aplicaciones de escritorio como dibujar en la pantalla o arrastrar-y-soltar que no están soportadas por las tecnologías web estándar. Los desarrolladores web generalmente utilizan <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|lenguajes interpretados] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> (scripts) en el lado del cliente para añadir más funcionalidades, especialmente para ofrecer una experiencia interactiva que no requiera recargar la página cada vez (lo que suele resultar molesto a los usuarios). Recientemente se han desarrollado tecnologías para coordinar estos lenguajes con las tecnologías en el lado del servidor. Como ejemplo, <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|AJAX] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> es una técnica de desarrollo web que usa una combinación de varias tecnologías.

<span style="font-family: Arial,sans-serif; font-size: 14.5pt;">Consideraciones técnicas
<span style="font-family: Arial,sans-serif; font-size: 10pt;">Una ventaja significativa es que las aplicaciones web deberían funcionar igual independientemente de la versión del sistema operativo instalado en el cliente. En vez de crear clientes para <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|Windows] <span style="font-family: Arial,sans-serif; font-size: 10pt;">, <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|Mac OS X] <span style="font-family: Arial,sans-serif; font-size: 10pt;">, <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|GNU/Linux] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> y otros sistemas operativos, la aplicación web se escribe una vez y se ejecuta igual en todas partes. Sin embargo, hay aplicaciones inconsistentes escritas con <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|HTML] <span style="font-family: Arial,sans-serif; font-size: 10pt;">, <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|CSS] <span style="font-family: Arial,sans-serif; font-size: 10pt;">, <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|DOM] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> y otras especificaciones estándar para navegadores web que pueden causar problemas en el desarrollo y soporte de estas aplicaciones, principalmente debido a la falta de adhesión de los navegadores a dichos estándares web (especialmente versiones de <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|Internet Explorer] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> anteriores a la 7.0). Adicionalmente, la posibilidad de los usuarios de personalizar muchas de las características de la interfaz (tamaño y color de fuentes, tipos de fuentes, inhabilitar Javascript) puede interferir con la consistencia de la aplicación web.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">Otra aproximación es utilizar <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|Adobe] [|Flash Player] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> o <span style="color: #0b0080; font-family: Arial,sans-serif; font-size: 10pt;">[|Java] [|applets] <span style="font-family: Arial,sans-serif; font-size: 10pt;"> para desarrollar parte o toda la interfaz de usuario. Como casi todos los navegadores incluyen soporte para estas tecnologías (usualmente por medio de plug-ins), las aplicaciones basadas en Flash o Java pueden ser implementadas con aproximadamente la misma facilidad. Dado que ignoran las configuraciones de los navegadores, estas tecnologías permiten más control sobre la interfaz, aunque las incompatibilidades entre implementaciones Flash o Java puedan crear nuevas complicaciones, debido a que no son estándares. Por las similitudes con una arquitectura cliente-servidor, con un cliente "no ligero", existen discrepancias sobre el hecho de llamar a estos sistemas “aplicaciones web”; un término alternativo es “Aplicación Enriquecida de Internet”.

<span style="font-family: Arial,sans-serif;">La **<span style="font-family: Arial,sans-serif; font-size: 10pt;">Programación **<span style="font-family: Arial,sans-serif; font-size: 10pt;"> es el proceso de diseñar, codificar, <span style="font-family: Arial,sans-serif;">[|depurar] y mantener el [|código fuente] de [|programas computacionales]. El código fuente es escrito en un[|lenguaje de programación]. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.