Buscar

lunes, 16 de mayo de 2011

Programando Web

Algo de historia
El objetivo de la programación es resolver problemas con ayuda de la computación.

Al inicio, programar una computadora fue cablear una cierta configuración en los circuitos de una computadora.

Luego, fue mover los interruptores adecuados.

Después, fue escribir las instrucciones para que la computadora misma creara la configuración deseada.

Al comienzo, las instrucciones eran binarias; luego mnemotécnicas que representaban secuencias binarias; después, declarativas que representaban secuencias mnemotécnicas.

Muchos, si no todos, los lenguajes de programación actuales emplean declaraciones que definen bloques lógicos que se colocan en secuencia.

Una cierta secuencia lógica se puede aislar en algo conocido, en general, como procedimiento. Los procedimientos que retornan un valor son llamados funciones. También se puede decir que lo que hay son funciones, y que los procedimientos simples son funciones que retornan un valor nulo.

Un cierto conjunto de procedimientos y variables se puede aislar en algo conocido como clase (de objeto). Una clase (de objeto) funciona como un tipo de variable. Así como una variable que instancia el tipo int es un entero, una variable que instancia cierta clase (de objeto) se llama objeto (de esa clase).

La programación que usa objetos se llama orientada o objetos, o OOP (por sus siglas en inglés). En contraposición, a la que no los usa se le llama procedural.

OOP y Procedural
Una ventaja de la OOP es que brinda una mayor claridad para resolver problemas relativamente complejos. Una compleja solución procedural, con un sistema complejo de reglas, suele tener una solución OOP más simple, que suele ser más simple de entender y mantener.

Para la computadora, ambas soluciones funcionan. OOP es para facilitar las cosas a los humanos, de modo similar a como lo hicieron, en su tiempo, la misma programación procedural, la assembler con sus mnemotecnicas, o la binaria, etc. Cada una surgió para facilitar las cosas a los humanos.

Interpretado
Programar en OOP suele requerir un trámite un poco mayor que la programación procedural. Hay ciertas prácticas burocráticas, que hay que seguir, al margen del problema que se soluciona. Hay esquemas previos para definir clases, con sus métodos (procedimientos o funciones), propiedades (las variables) y bibliotecas auxiliares.

La programación procedural también requiere algo de burocracia para eso, aunque un poco más simple, en general.

Esto es porque los programas, OOP o procedural, escritos en un lenguaje cercano al humano, tienen que ser traducidos a binario, el lenguaje del sistema operativo de la computadora, para que los pueda ejecutar. Y los trámites tienen que ver con esa tarea de traducción, llamada compilación.

Antes que se pueda ejecutar, el programa fuente, que entendemos los humanos, tiene que ser compilado para que lo entienda la computadora.

Una forma de simplificar esto, para los humanos, es con la programación interpretada. Allí, un programa llamado intérprete se encarga de todos esos trámites, permitiendo al programador concentrarse en el problema.

Hay intérpretes para lenguajes OOP y procedurales también.

Ejecutar el código fuente interpretándolo cada vez que se ejecuta suele ser más lento que ejecutar su versión compilada pero facilita las cosas para los humanos. Además, para resolver la cuestión de la velocidad, es posible obtener versiones compiladas de programas desarrollados con la ayuda de intérpretes.

Web
Una página web es, básicamente, un programa que es interpretado por un navegador. El lenguaje de programación web es un consolidado de HTML, CSS y javascript.

Casi inmediatamente, se vió la posibilidad de generar páginas web usando otros lenguajes de programación, como C, Perl o Java. Después de todo, se trata de texto.

Las páginas web generadas por otros programas se llamaron dinámicas, porque podían cambiar en respuesta a la entrada del usuario. En contraposición, las páginas web no dinámicas se denominan estáticas.

Sin embargo, comparado con hacer una página web directamente, hacer una página dinámica supone un tramite mayor. El diseño de página estática se suele fragmentar para ser reconstruido con un programa. Si uno lo mira de cierta distancia, es código de cierto lenguaje con HTML insertado.

Se hizo así por un tiempo, pero luego se vió más conveniente insertar, en las páginas estáticas, la parte dinámica que se requería, luego usar un programa para resolver esos bloques dinámicos, y finalmente enviar el resultado al navegador. Es decir, HTML con código de otro lenguaje insertado. Básicamente, ese es el esquema que usan ASP, JSP y PHP.

Web, OOP y Procedural
La diferencia entre alternativas como JSP y PHP es cómo se resuelven los bloques dinamicos insertados en la página. Los primeros usan Java, un lenguaje OOP, y los segundos usan PHP, un lenguaje interpretado, básicamente.

Normalmente OOP permite expresar una solución en términos más simples que la alternativa procedural. Sin embargo, en el mundo web, este poder no ha significado mucha diferencia. De hecho, la web está más poblada de soluciones procedurales.

Un purista OOP podría elegir OOP simplemente por ser OOP y porque supone que si es mejor para ciertos casos es mejor para todos los casos.

Sin embargo, OOP es simplemente una forma de resolver un problema. Y su poderío limitado en la web puede ser algo interesante de ver para aprender de ello.

Liberando la web
Me parece que algunas aproximaciones tratan de forzar el desarrollo web hacia una cierta forma de trabajo, ignorando partes de su naturaleza.

Por ejemplo, tratan a una página web como si fuera simplemente una vista e implementan, en su propia versión, algunas de las características que ya tiene presente.

De ese modo, se puede lograr una forma de trabajar uniforme y estandar, similar a la que se logra en otros entornos no web, pero se obliga a los programadores a redefinir artificiosamente lo que la página es.

Pero una página web es un programa intérpretado. Quizás haya modos de aprovechar ese hecho en lugar de tratar de negarlo o limitarlo.

Quizás sería conveniente reconsiderar el modo en que se vuelve dinámica una página. Insertar código entre las etiquetas puede llegar a complicar el conjunto. Eso, en javascript, se resolvió usando unobstrusive javascript, que permite aislar el código en un lugar determinado y que actúe sobre la página desde afuera. Entonces, tal vez se podría hacer algo similar con los otros lenguajes que corren en el servidor. Unobstrusive PHP, unobstrusive JSP, etc. Lograr actuar sobre una página sin tocar su fuente estática.

Pienso que, de ese modo, el desarrollo HTML/CSS/Javascript se podría realizar con toda la libertad e innovaciones que son parte de su naturaleza. Y las partes dinámicas podrían ser resueltas usando el framework que mejor se adecúe al lenguaje que se utilice, pero aparte, en su propio ambito. Respetando el ámbito HTML/CSS/Javascript y tratando de complementar, potenciar, lo que las páginas ya son.

3 comentarios:

  1. hola, muy bueno tu blogs tengo una duda, yo realize una galeria de fotos dinamica con xml en flash con algunos tutoriales que encontre en la web todo me salio bien pero mi duda es que no se ve en firefox ni en safari, tal vez me puderias ayudar

    ResponderEliminar
  2. Hola, gracias.
    Si la galería flash no se ve en Firefox ni Safari, se me ocurre que podría ser un problema del flash player instalado para esos navegadores. Abren bien otros flash?
    Si abren bien otros flash, quizás la galería se ha hecho de modo que usa alguna particularidad de Internet Explorer (se suelen salir del estandar) que no hay en otros navegadores.
    Si puedes, me indicas la dirección de la página para verla mejor.

    ResponderEliminar
  3. hola gracias por respoderme, yo solo se de programacion lo que aprendo en internet, y como he realizado mi website queria que me funcionara en todo los navegadores. y otras galerias si abren bien y son mas complicadas.
    como esta que realize ://www.raqsperu.com que si se ve sin problemas.

    es esta mi web : http://www.neoweb-design.com
    hay tengo un dos galerias uno en portafolio y otro en plantilla.

    tambien he subida solo una galeria de ejemplo y tampoco se ve es :
    http://www.neoweb-design.com/neoweb

    y el tutorial donde aprendi es este:

    http://www.compilador.net/2009/12/galeria-de-imagenes-con-xml-en-flash.html

    muchas gracias por tu tiempo. ojala me puedas ayudar ya que me estoy volviendo loca jeje y en lo que yo te puedo ayudar hay estare .

    jocelyn

    ResponderEliminar