lunes, 30 de noviembre de 2015

Gestor de colecciones (I): Programación en Web

La programación en Web es muy diferente de la de escritorio, para la programación en Web hay que aprender varios lenguajes y formas de trabajar, todo cambia y puede costar un poco para los que no estamos acostumbrados. En escritorio tomas un PC, eliges un lenguaje, programas y ejecutas, no hay mas, pero cuando estamos en Web hay dos máquinas implicadas, el servidor aloja las páginas, las prepara y las envía a tu ordenador donde se visualizan.Y unos cuantos lenguajes que aprender, no se puede usar uno solo.

HTML

Inicialmente las páginas eran siempre estáticas, el HTML es un lenguaje de marcado de documentos, en el viajan los textos a mostrar junto a los formatos en que se visualizan. El servidor no hace mas que almacenar las páginas HTML, y cuando el navegador le solicita una se la envía tal cual. Es el propio navegador el que monta la página con los formatos que contenga. No hay interactividad alguna, una vez montada la página no se puede modificar, es completamente estático, pero aun así siempre se pueden poner enlaces a otras páginas, que lanzarán estas al llamarlas, pudiendo hacer que el sistema parezca un poco mas interactivo. La página cuando se lanza tiene un estado, y puede contener campos que sean editables, por ejemplo un formulario de contacto. Cuando se le da el botón de enviar la página se recarga, enviándose a si misma los datos de los campos, en una acción que se denomina POST. Podemos tomar esos datos y enviarlos en un mail por ejemplo tras el Post, esto es lo mas interactivo que puede ser una página web.

CSS

Hemos dicho que junto a los textos viaja el formato, lo que lo hace poco flexible, por ello se idearon las Hojas de Estilo en Cascada (Cascading Style Sheets). En ellas no hay textos, solo las especificaciones de los formatos en que presentarlos, tamaños, colores, márgenes, alineación, todo atributo que se puede cambiar se puede establecer en el elemento o en la Hoja de Estilo. Las hojas de estilo pueden viajar dentro del propio documento o en uno aparte, por lo que el navegador al leer el HTML y encontrar que se llama a una hoja externa, le pide al servidor el fichero y lo procesa. Las hojas permiten modificar el aspecto de las páginas colo cambiando los estilos, lo que has hace útiles para definir de manera sencilla el aspecto, y han llegado a ser imprescindibles si quieres hacer algo con la misma apariencia en todas las hojas. Se denominan en cascada porque son acumulativas, un atributo de un elemento puede redefinirse parcialmente en otro, por ejemplo podemos establecer un tamaño de letras general, y para ciertos elementos cambiar ese tamaño, manteniendo los mismos colores, alineaciones, márgenes, etc.

LENGUAJES DE SCRIPT

Las páginas no son interactivas, por lo que para mejorarlas se idearon una serie de lenguajes denominados de script, que permiten alterar las páginas antes o después de enviarlas al navegador. Así por ejemplo podemos cargar una lista de registros de una base de datos en el lado del servidor, y montar la página con ellos. Una vez enviada la página el servidor se desentiende, a nuestro navegador le llega una página que puede variar en cada llamada. Esto son script del lado del servidor, la interacción se produce cuando se pide la página, enviando tras el nombre una serie de parámetros, o en el Post al recibir los datos de los campos escritos en la página. Los mas usados son PHP y ASP. Cuando se ha recibido la página en el cliente, otros lenguajes de script se pueden ejecutar en el mismo, aquí no se puede acceder por ejemplo a la base de datos, pero si es posible cambiar elementos de las páginas, cambiar aspectos y colores, hacer visibles o presentar zonas, o cosas similares. Cada día son mas potentes, el mas usado es JavaScript, en el está escrito por ejemplo Ajax que es una forma de poder refrescar una parte de la página, sin necesidad de volver a enviar toda al servidor.

PHP

El lenguaje PHP permite mezclarse junto al HTML, lo que le hace a veces un poco mas complicado de seguir si no se hace adecuadamente, es un lenguaje con sintaxis de C, en el que podemos definir Objetos y Clases, montando toda la lógica de negocio en el servidor. Cuando se procesa la página se ejecuta el programa en PHP, generándose una página HTML normal, que es enviada al navegador, en ese momento se ha perdido toda interacción. Cuando la página se procesa, se envía una orden POST al servidor, que monta de nuevo la página, pero ya podemos leer datos de ese Post y procesar la página o los datos de la misma. Las variables no son necesario definirlas, lo que puede ser una fuente de problemas, y su nombre siempre empieza por un signo de dolar, y es débilmente tipado, lo que si no controlamos puede causar problemas. Si el script da un error al montar la página, dará un error que se presentará en el navegador si es grave, pero es complicado seguir el programa ya que se ejecuta en el servidor, y en el cliente se ve solo el resultado, aunque hay sistemas para poder depurar los programas.

JAVASCRIPT

Los script en Java se ejecutan en el navegador, usan la sintaxis del Java pero no es Java, por tanto no necesitan la máquina Java para su ejecución, por lo que también es un lenguaje con sintaxis de C, aunque es Orientado a Objetos no permite definir Clases sino prototipos, aunque lo suyo es usar pequeñas funciones y no grandes programas. Una de sus características es que no necesita definir las variables, y que no es tipado, es sencillo y rápido. Cuando se produce un error no se presenta, solo se ignora el script, por lo que es difícil seguir los fallos, pero al estar en el navegador se pueden ver el código.

Programación en Web

Para hacer un programa en Web necesitamos manejar una Base de Datos y por tanto el lenguaje SQL, las páginas se montarán usando HTML, CSS, PHP y JavaScript, por tanto debemos conocer 5 lenguajes diferentes, y una forma no habitual de interactuar con las páginas, y esto sin pensar en otras tecnologías como ASP.NET, que tienen la ventaja de que incluye casi todo en un solo sistema, y puedes programar sin necesidad de ver lo que hay por debajo.