Los diferentes paradigmas de programación web

Hace un par de días leí un interesante artículo sobre los paradigmas de programación web en el blog de Abhijit Nadgouda. Lo encontré bastante explicativo, así que me puse en contacto con el autor para saber si le importaría que intentase traducirlo al español. Una cosa es entender el artículo y otra ha sido tratar de traducirlo al español entero, es más complicado y he tenido varias dudas que supongo que serán típicas en las traducciones de literatura especializada (traducir o no traducir el nombre de determinada tecnología, las siglas que usar [inglés, castellano]), amén de varias expresiones inglesas que me han resultado un poco difíciles de traducir (y quizás el resultado sea un tanto artificioso).

De todas maneras, con el espíritu de traducir un artículo que puede resultar útil a quien se quiera informar sobre el tema, lo he intentado. El resultado es el siguiente, y las modificaciones o correciones que aportéis serán más que bienvenidas!

_________

La Web ha sido la cumbre de las redes, desde los puntos de vista del software y social. Las redes de software llevadas al extremo han convertido la Web en una plataforma de redes sociales, de colaboración, de publicación de contenido como en los medios de comunicación y en plataforma de programación. De todas formas, la Web fue originalmente diseñada para documentos, como una forma de compartir información. Para ser capaces de hacer lo que queramos con la Web, hemos de hacerla programable.

Programando la Web

La Web es programable hoy en día. Puede ser programada para varios propósitos, algunos de los cuales han sido mencionados en el comienzo del artículo. Esta programabilidad deriva de los maduros principios genéricos del software. Se necesita una arquitectura, un diseño y una implementación. El software genérico de programación ha pasado por muchos cambios, algunos de los cuales pueden ser calificados como mejoras. Desde los estilos de programación como la programación estructurada la atención se ha desplazado hacia la arquitectura y el diseño, produciendo técnicas como POO y las nuevas arquitecturas Ágil y «Model Driven«. En líneas similares, hoy en día la Web está llena de incipientes arquitecturas y aproximaciones. Reflexionemos sobre algunas de ellas.

Servicios

El concepto de servicio fue creado para tratar de hacer hincapié en las loose couplings y en las relaciones cliente-servidor. El software anterior a la Web estaba normalmente atado al hardware y asociado a plataformas. La Web, siendo tan abierta y ubicua, no puede permitirse hacer eso. La Web fue creada para compartir, sin tales restricciones. De ahí vino el concepto de servicio. Un servicio es una función con un objetivo, sirve a todos los clientes sin ninguna restricción en sus detalles de implementación.

Arquitectura Orientada a Servicios (AOS, SOA en inglés).

Tal colección de servicios llevó a que los clientes pudiesen aprovechar la denominada como Arquitectura Orientada a los Servicios. Estos servicios se comunicaban unos con los otros, algunos colaboraban y otros trabajaban autónomamente.

Para ser capaces de establecer una etapa de entendimiento, los clientes tenían que obedecer los protocolos mencionados en el servicio. Los más populares eran XML-RPC y SOAP. Se centraban en abstraer la Web para aplicaciones y dominios. Un acercamiento distinto fue lleado a cabo con REST, que se centraba en usar la Web tal y como es, siguiendo sus principios básicos.

La ventaja de la AOS era que ahora los negocios podían escoger entre distintos servicios sin ser entorpecidos por la tecnología o por límites organizacionales. Ni las definiciones ni las especificaciones de las AOS estaban limitadas por la Web o dependían de ella. La AOS podría permitir interesantes mezclas e integraciones. El Software como un Servicio (Sofware As A Service, SaaS está completamente basado en esto y ha sido capaz de introducir el concepto de «subcontratación análogica» (analogical outsourcing) a la empresa.

De todas maneras hay algunas desventajas clave en esta aproximación. La mayor está en el esfuerzo para ser una plataforma agnóstica y portable, hundiendo a las AOS bajo una capa de especificaciones. Incrementalmente se hace difícil y costoso el ser capaz de cumplir con los protocolos y hablar con un servicio. Otra desventaja, que no tiene por qué ser grave a veces, es que los servicios no son descubribles. El conocimiento de los servicios es necesario para poder usar el servicio que proporciona un directorio de servicios. Dado que la Web es ilimitada por naturaleza, es imposible mantener tal directorio. Esto hace los SOA menos accesibles.

Arquitectura Orientada a la Web

Para hacer la AOS más ligera y más popular llegó la AOW. Básicamente es un subconjunto de AOS que recomienda REST antes que homólogos más pesados como SOAP. La filosofía de REST es diferenciar entre la programación en red y la programación de escritorio, haciendo más simple su uso con lo anterior.

AOW es mas personalizable para la Web al incluir REST. Y especializándolo puede deshacerse de las pesadas abstracciones que lo hace incluir todo.

Arquitectura Orientada a Recursos (AOR)

Éste es un acercamiento radical, desde el punto de vista de la AOS. Alex Bunardzic introdujo la AOR. Mientras que la AOW es conceptualmente suave, la AOR es una rebelde con causa. Alex señala que el concepto de servicios no debería ser aplicado a la Web. Como se menciona antes, los servicios no pueden ser descubiertos y es imposible mantener un catálogo. Aquí es donde va en contra de la Web, la AOR cree que la Web es explorativa por naturaleza.

Por la unicidad de la Web como medio, la única abstracción que le hace justicia es el recurso. La Web es una colección de recursos. Estos recursos son astronómicamente diversos, y sería matemáticamente imposible mantener una apariencia de un inventario razonable de los recursos de la Web.

…

Cada recurso en la Web, no importa cúan único o complicado sea, obedece un protocolo. Este protocolo tiene tres aspectos resaltables, éstos son:

  1. Cada recurso conoce cómo se representa a sí mismo al consumidor.
  2. Cada recurso sabe cómo hacer una transición de un estado a otro
  3. Cada recurso sabe como autodestruirse.

La AOR es mas un paradigma que un acercamiento de arquitectura, que considera que los recursos son elementos de la Web. La parte clave, de todas formas, es que pueden ser descubiertos, y una vez que son descubiertos pueden representarse a sí mismos. No hay un requerimiento de conocimiento previo del recurso para establecer una conversación, al contario que las habilidades cognitivas de un servicio en la AOS. La AOR está completamente basada en REST y aprovecha sus ventajas – simplicidad, conocimientos técnicos mínimos y URI para cada recurso. El uso de elementos básicos de la WWW original hace que sea fácil que dos recursos se comuniquen.

La única desventaja que le veo a la AOR es que está bien definido para la Web. Aunque puede haber implementaciones análogas en otras áreas, así como AOS no está conceptualizada en plataformas no-Web. Hay nuevos desarrollos apareciendo en esta área, pero aún no está tan maduro como la AOS.

Epílogo

Si se analizan, todos estos acercamientos se centran en tener un interfaz estandarizado.La AOR es más simple que la AOS, y usa los hipervínculos efectivamente para alcanzar una base más sólida. Pero si eso es un requisito será determinado por las necesidades de la Empresa.

¿Como desarrollador de software qué me interesa de todo esto? Bien, estos paradigmas están a punto de definir la dirección hacia la que la programación Web se dirigirá en el futuro. La que domine sobrevivirá. De todas maneras, para ser dominante tendrá que demostrar ser leal a la Web y a sus negocios. Si las dos coexisten, será crítico identificar la aplicabilidad de cada una de ellas. Si no, habrá que prepararse para manejar sus desventajas. De cualquier forma, esto afectará al negocio en el que sean usadas. Y con la Web jugando un papel importante, ¡este impacto no debe ser ignorado!

Referencias del autor:

_____

Por cierto, el post lo descubrí vía menéame.

AHHH… Mi monitor se deforma…

Si las posibilidades de XGL no estaban muy claras, gracias a este video he visto que por lo menos queda más que curioso funcionando con una pantalla táctil. Es algo que ya había pensado, pero viendo este video parece incluso divertido, como si el monitor reaccionase ante la presión que ejerce el hombrecillo sobre él (ya sé que lo hace, es táctil y todo eso, pero el resultado es muy natural).

Bueno, después de este intento de amenizar la presentación del video, lo pongo, que total es el centro de este post, para que nos vamos a engañar.

Visto en HispaMP3

Momentos de IRC divertidos

En el IRC se dan esos momentos irrepetibles de vez en cuando… y una recopilación genial de ellos es bash.org que, a pesar de lo que parece por la URL, no tiene nada que ver con bash

bloodninja: Baby, I been havin a tough night so treat me nice aight?
BritneySpears14: Aight.
bloodninja: Slip out of those pants baby, yeah.
BritneySpears14: I slip out of my pants, just for you, bloodninja.
bloodninja: Oh yeah, aight. Aight, I put on my robe and wizard hat.
BritneySpears14: Oh, I like to play dress up.
bloodninja: Me too baby.
BritneySpears14: I kiss you softly on your chest.
bloodninja: I cast Lvl. 3 Eroticism. You turn into a real beautiful woman.
BritneySpears14: Hey…
bloodninja: I meditate to regain my mana, before casting Lvl. 8 chicken of the Infinite.
BritneySpears14: Funny I still don’t see it.
bloodninja: I spend my mana reserves to cast Mighty F*ck of the Beyondness.
BritneySpears14: You are the worst cyber partner ever. This is ridiculous.
bloodninja: Don’t f*ck with me bitch, I’m the mightiest sorcerer of the lands.
bloodninja: I steal yo soul and cast Lightning Lvl. 1,000,000 Your body explodes into a fine bloody mist, because you are only a Lvl. 2 Druid.
BritneySpears14: Don’t ever message me again you piece of ****.
bloodninja: Robots are trying to drill my brain but my lightning shield inflicts DOA attack, leaving the robots as flaming piles of metal.
bloodninja: King Arthur congratulates me for destroying Dr. Robotnik’s evil army of Robot Socialist Republics. The cold war ends. Reagan steals my accomplishments and makes like it was cause of him.
bloodninja: You still there baby? I think it’s getting hard now.
bloodninja: Baby?
————–
BritneySpears14: Ok, are you ready?
eminemBNJA: Aight, yeah I’m ready.
BritneySpears14: I like your music Em… Tee hee.
eminemBNJA: huh huh, yeah, I make it for the ladies.
BritneySpears14: Mmm, we like it a lot. Let me show you.
BritneySpears14: I take off your pants, slowly, and massage your muscular physique.
eminemBNJA: Oh I like that Baby. I put on my robe and wizard hat.
BritneySpears14: What the f*ck, I told you not to message me again.
eminemBNJA: Oh ****
BritneySpears14: I swear if you do it one more time I’m gonna report your ISP and say you were sending me kiddie porn you f*ck up.
eminemBNJA: Oh ****
eminemBNJA: damn I gotta write down your names or something

Ésta viene de aquí… pero hay citas como para estar horas pasando un rato entretenido.

De como hacer un videoclip divertido con bajo presupuesto

Voy a poner un par de videoclips que me han parecido muy divertidos, y no gracias a sus efectos especiales ni a lo que cuentan, sino porque los que lo hacen se ve que se lo habrán pasado genial haciéndolo :)

El grupo se llama Ok Go, es una banda de indie rock de Estados Unidos (concretamente Chicago), y son conocidos por sus tres singles, «Get Over It», «A Million Ways» and «Here it Goes Again.»

Este es el videoclip de A Million Ways, que cualquier grupo de 4 amigos con un grupo podría haber grabado en el jardín de su casa (después de unas cuantas horas de entrenamiento, supongo, eso sí…).

Este otro video es de la canción Here it goes again, y es del mismo estilo aunque esta vez han cambiado el escenario y lo han hecho en una sala con 6 máquinas de correr, ya véis, tampoco es ninguna superproducción…

Lo gracioso es que en directo también hacen los bailecitos estos, debe de ser divertido verles en concierto. Y como la percepción de que es algo que cualquiera podría hacer no es sólo mía (yo siendo original, no!), les han surgido cientos de imitadores, algunos valientes incluso suben sus videos a youtube.

PD y Offtopic: hay algo que me fastidia (un poco) de mi WordPress, y es que cuando convierte los emoticonos en imágenes les añade un salto de línea después (como la cara feliz de este post), y me pasa lo mismo en los comentarios. Alguien en la sala me puede guiar en mi fallo de configuración? Gracias mil!

Efecto sonoro típico: El grito de Wilhelm

No sé si os habrá pasado alguna vez, pero hay efectos sonoros que se oyen en varias películas. Yo siempre identifico un sonido que usan para las patrullas de bomberos y el de las patrullas de policía, incluso los usaron en el juego SimCity (o al menos eso creí reconocer…).

Uno de estos efectos sonoros que se usan en diversas películas es el grito de Wilhelm. El grito se usó por primera vez en 1951, en la película Distant Drums y desde entonces se ha usado en muchísimas películas, series de TV e incluso videojuegos. En la wikipedia hay una lista de películas que usan este grito.

En este video podéis ver extractos de varias películas donde lo usan, resulta curioso verlas todas seguidas…

Si aún no lo habéis oido suficiente después de ver el video recopilatorio, aún podéis descargarlo aquí.

Vía Webmaníacos
Extra: lista de clichés sonoros en el cine

Frases que no quieres oir a tu sysadmin

100 Frases que no querrías oir decir a tu administrador de sistemas, que no recuerdo donde lo vi enlazado.

Algunas de las que más me han gustado han sido:

  • 4. Id a por vuestra cinta de backup (tenemos cinta de backup?)
  • 22. Dónde está la tecla «cualquiera» que debería de pulsar?
  • 46. NO! ESE BOTÓN NO!
  • 51. SÍIIIIII. Eso si que es una CAIDAAAA del SISTEEMA!!
  • 52. Qué quieres decir con «podría tirar toda la red»?
  • 61. OH MIERDA! (mientras busca en el teclado apresuradamente ^C)
  • 69. UPPPPS. Guardad vuestro trabajo, RÁPIDO!
  • 83. No hagas eso, hace que el sistema se cuel…… MIERDA!
  • Pobrecitos lusers, cuando los sysadmins se lo pasan bien les hacen unas cuantas perrerías.

    Cómo mejorar un poco el lenguaje de cada día

    Vía Menéame encuentro un útil enlace a una sección de la web de la RAE donde se comentan algunos de los errores más frecuentes en castellano (y la manera correcta de usar el lenguaje).

    Yo obligaría a todo castellanoparlante que se precie de serlo a que lea la diferencia entre A VER y HABER… que no es tan difícil. Como es algo que odio especialmente, sin ninguna razón en particular para odiarlo tanto, pongo la explicación al asunto entera:

    A ver / haber

    Aunque a ver y haber se pronuncian de la misma forma, deben distinguirse adecuadamente en la escritura.

    a) a ver

    Se trata de la secuencia constituida por la preposición a y el infinitivo verbal ver:

    Vete a ver qué nota te han puesto.
    Los llevaron a ver los monumentos de la ciudad.

    Como expresión fija, presenta distintos valores y usos:

    *

    En tono interrogativo, se emplea para solicitar al interlocutor que nos deje ver o comprobar algo:

    —Mira lo que he comprado. —¿A ver?

    *

    Expresa, en general, expectación o interés por saber algo, y va normalmente seguida de una interrogativa indirecta:

    A ver cuándo nos dan los resultados.

    *

    Se utiliza para llamar la atención del interlocutor antes de preguntarle, pedirle u ordenarle algo:

    A ver, ¿has hecho lo que te dije?
    A ver, trae el cuaderno.

    *

    Equivale a claro o naturalmente, como aceptación de algo que se considera inevitable:

    —Pero ¿al final os vais? —¡A ver! Si no lo hacemos, perdemos el dinero de la reserva.

    *

    Delante de una oración introducida por la conjunción si, expresa, bien expectación, curiosidad o interés, a veces en forma de reto; bien temor o sospecha; bien deseo o mandato:

    ¡A ver si adivinas lo que estoy pensando!
    A ver si te caes.
    A ver si eres más organizado de ahora en adelante.

    En muchos de estos casos la secuencia a ver puede reemplazarse por veamos, lo que pone de manifiesto su relación con el verbo ver y no con el verbo haber:

    A ver con quién aparece mañana en la fiesta [= Veamos con quién aparece mañana en la fiesta].
    A ver si te atreves a decírselo a la cara [= Veamos si te atreves a decírselo a la cara].

    b) haber

    Puede ser un verbo o un sustantivo:

    *

    Como verbo, haber se usa como auxiliar, seguido de un participio, para formar los infinitivos compuestos de la conjugación:

    Haber venido antes.
    Tiene que haber sucedido algo.
    Sigo sin haber entendido lo que ha pasado.

    También se emplea como infinitivo del verbo impersonal que denota la presencia o existencia de lo designado por el sustantivo que lo acompaña:

    Parece haber un chico esperándote en la puerta.
    Tiene que haber muchas cosas en el frigorífico.

    *

    Como sustantivo, haber es masculino y significa, en general, ‘conjunto de bienes o caudales de una persona’:

    Su haber era más bien escaso.

    Pero con sólo ese pequeño extracto no basta, haced el favor de leerlo entero (o al menos echarle un vistazo), vuestro lenguaje os lo agradecerá.

    Link: RAE
    Extra: Galería de los Horrores del Instituto Cervantes (vía un comentario en meméame).

    Editado: Qué bien, llevaba cierto tiempo con la duda de Impreso / Imprimido, a la que nunca había obtenido una respuesta suficientemente convincente, pero la acabo de encontrar :) (para vagos : se pueden usar las dos formas indistintamente).