Había leído un artículo sobre esto hace mucho tiempo. El autor tuvo que retirarlo debido a que algunas personas dijeron que el artículo era injusto hacia el género femenino. He copiado el texto de la conversación de un sitio espejo. No tengo ninguna propiedad de los contenidos a continuación.
A continuación se muestra la conversación entre Ryan Tomayko y su esposa.
Esposa: ¿Quién es Roy Fielding?
Ryan: un chico Es listo.
- Dada la controversia sobre la igualdad de matrimonio, ¿cuál fue la actitud sobre el matrimonio interracial con Loving v Virginia?
- ¿El presidente Obama facilitó / patrocinó la adopción del matrimonio de un solo sexo en los Estados Unidos? ¿Cómo?
- ¿Es inconstitucional hacer ilegal la dote?
- Estoy en una relación con una chica musulmana. Una de sus tres hermanas ya se había fugado con los hindúes, otras dos se casaron a la fuerza. ¿Cómo podemos casarnos?
- ¿Cuánto beneficio de seguridad social obtendrá una pareja casada que trabaja?
Esposa: ¿Oh? ¿Qué hizo él?
Ryan: Ayudó a escribir los primeros servidores web y luego hizo un montón de investigación explicando por qué la web funciona de la manera en que lo hace. Su nombre está en la especificación del protocolo que se usa para obtener páginas de los servidores a su navegador.
Esposa: ¿Cómo funciona?
Ryan: ¿ La web?
Esposa: sí.
Ryan: Hmm. Bueno, todo es bastante sorprendente en realidad. Y lo curioso es que todo está muy infravalorado. El protocolo del que estaba hablando, HTTP, es capaz de todo tipo de cosas que las personas ignoran por alguna razón.
Esposa: ¿ Quieres decir http como el principio de lo que escribo en el navegador?
Ryan: si Esa primera parte le dice al navegador qué protocolo usar. Esas cosas que escribe allí son uno de los avances más importantes en la historia de la computación.
Esposa: ¿Por qué?
Ryan: Porque es capaz de describir la ubicación de algo en cualquier parte del mundo, desde cualquier parte del mundo. Es la base de la web. Puede pensarlo como coordenadas GPS para conocimiento e información.
Esposa: ¿ Para páginas web?
Ryan: Para cualquier cosa realmente. Ese tipo, Roy Fielding, habla mucho sobre lo que esas cosas apuntan en esa investigación de la que estaba hablando. La web está construida en un estilo arquitectónico llamado REST. REST proporciona una definición de un recurso, que es a lo que apuntan esas cosas.
Esposa: ¿ Una página web es un recurso?
Ryan: Algo así. Una página web es una representación de un recurso. Los recursos son solo conceptos. URLs – esas cosas que escribes en el navegador …
Esposa: Sé lo que es una URL …
Ryan: Oh, cierto. Esos le dicen al navegador que hay un concepto en alguna parte. Un navegador puede entonces pedir una representación específica del concepto. Específicamente, el navegador solicita la representación de la página web del concepto.
Esposa: ¿Qué otros tipos de representaciones hay?
Ryan: En realidad, las representaciones son una de estas cosas que no se usan mucho. En la mayoría de los casos, un recurso tiene una sola representación. Pero esperamos que las representaciones se utilicen más en el futuro porque hay un montón de nuevos formatos apareciendo por todas partes.
Esposa: ¿Como qué?
Ryan: Hmm. Bueno, hay un concepto que la gente está llamando a servicios web. Significa muchas cosas diferentes para muchas personas diferentes, pero el concepto básico es que las máquinas podrían usar la web como lo hace la gente.
Esposa: ¿Es esto otra cosa del robot?
Ryan: No, en realidad no. No quiero decir que las máquinas estarán sentadas en el escritorio y navegando por la web. Pero las computadoras pueden usar esos mismos protocolos para enviar mensajes entre sí. Hemos estado haciendo eso durante mucho tiempo, pero ninguna de las técnicas que utilizamos hoy en día funciona bien cuando necesitas poder hablar con todas las máquinas en todo el mundo.
Esposa: ¿Por qué no?
Ryan: Porque no fueron diseñados para ser utilizados de esa manera. Cuando Fielding y sus amigos comenzaron a construir la web, la principal preocupación era poder hablar con cualquier máquina en cualquier parte del mundo. La mayoría de las técnicas que utilizamos en el trabajo para lograr que las computadoras se comuniquen entre sí no tienen esos requisitos. Solo necesitabas hablar con un pequeño grupo de máquinas.
Esposa: ¿ Y ahora necesitas hablar con todas las máquinas?
Ryan: Sí, y más. Necesitamos poder hablar con todas las máquinas sobre todas las cosas que están en todas las otras máquinas. Por lo tanto, necesitamos una forma de que una máquina le diga a otra máquina sobre un recurso que podría estar en otra máquina.
Esposa: ¿Qué?
Ryan: Digamos que estás hablando con tu hermana y que ella quiere pedir prestada la barredora o algo así. Pero no lo tienes, tu mamá lo tiene. Así que le dices a tu hermana que lo obtenga de tu mamá. Esto sucede todo el tiempo en la vida real y sucede todo el tiempo cuando las máquinas comienzan a hablar también.
Esposa: Entonces, ¿cómo se dicen las máquinas dónde están las cosas?
Ryan: La URL, por supuesto. Si todo lo que las máquinas necesitan para hablar tiene una URL correspondiente, ha creado la máquina equivalente a un sustantivo. Que usted, yo y el resto del mundo hemos acordado hablar de sustantivos de cierta manera es muy importante, ¿eh?
Esposa: sí.
Ryan: Las máquinas no tienen un nombre universal, por eso apestan. Cada lenguaje de programación, base de datos u otro tipo de sistema tiene una forma diferente de hablar de sustantivos. Es por eso que la URL es tan importante. Dejemos que todos estos sistemas nos hablen acerca de los sustantivos de cada uno.
Esposa: Pero cuando estoy mirando una página web, no pienso en eso de esa manera.
Ryan: Nadie lo hace. Excepto Fielding y un puñado de otras personas. Es por eso que las máquinas todavía apestan.
Esposa: ¿Qué pasa con los verbos y los pronombres y los adjetivos?
Ryan: Es gracioso que hayas preguntado porque ese es otro gran aspecto de REST. Bueno, los verbos son de todos modos.
Esposa: sólo estaba bromeando.
Ryan: Fue una broma divertida, pero en realidad no es una broma. Los verbos son importantes. Existe un poderoso concepto en programación y teoría de la CS llamado polimorfismo. Esa es una forma geek de decir que diferentes nombres pueden tener el mismo verbo aplicado a ellos.
Esposa: No lo entiendo.
Ryan: Bueno … mira la mesa de café. ¿Cuáles son los sustantivos? Taza, bandeja, periódico, mando a distancia. Ahora, ¿cuáles son algunas cosas que puedes hacer con todas estas cosas?
Esposa: no lo entiendo …
Ryan: puedes conseguirlos, verdad? Puedes recogerlos. Puedes derribarlos. Puedes quemarlos. Puedes aplicar esos mismos verbos exactos a cualquiera de los objetos que están sentados allí.
Esposa: esta bien… entonces?
Ryan: Bueno, eso es importante. ¿Qué pasaría si en lugar de que yo pudiera decirte “toma la taza” y “obtén el periódico” y “obtén el control remoto”; ¿Y si en vez de eso tuviéramos que idear verbos diferentes para cada uno de los sustantivos? No podía usar la palabra “obtener” universalmente, sino que tuve que idear una nueva palabra para cada combinación de verbo / sustantivo.
Esposa: ¡Wow! Eso es raro.
Ryan: Sí, lo es. De alguna manera, nuestros cerebros son lo suficientemente inteligentes como para saber que los mismos verbos se pueden aplicar a muchos nombres diferentes. Algunos verbos son más específicos que otros y se aplican solo a un pequeño conjunto de sustantivos. Por ejemplo, no puedo conducir una taza y no puedo beber un automóvil. Pero algunos verbos son casi universales como GET, PUT y DELETE.
Esposa: No puedes BORRAR una taza.
Ryan: Bueno, está bien, pero puedes tirarlo. Esa fue otra broma, ¿verdad?
Esposa: sí.
Ryan: De todos modos, HTTP, este protocolo creado por Fielding y sus amigos, se trata de aplicar verbos a sustantivos. Por ejemplo, cuando vas a una página web, el navegador realiza un GET HTTP en la URL que ingresas y una página web vuelve.
Las páginas web suelen tener imágenes, ¿verdad? Esos son recursos separados. La página web solo especifica las direcciones URL de las imágenes y el navegador va y realiza más GET HTTP en ellas hasta que se obtienen todos los recursos y se muestra la página web. Pero lo importante aquí es que tipos muy diferentes de sustantivos pueden tratarse de la misma manera. Si el sustantivo es una imagen, texto, video, mp3, una presentación de diapositivas, lo que sea. Puedo OBTENER todas esas cosas de la misma manera dada una URL.
Esposa: Suena como que GET es un verbo bastante importante.
Ryan: lo es. Especialmente cuando estás usando un navegador web porque los navegadores son prácticamente solo cosas OBTENIDAS. No hacen muchos otros tipos de interacción con los recursos. Esto es un problema porque ha llevado a muchas personas a suponer que HTTP es solo para OBTENER. Pero HTTP es en realidad un protocolo de propósito general para aplicar verbos a sustantivos.
Esposa: genial Pero todavía no veo cómo esto cambia nada. ¿Qué tipos de sustantivos y verbos quieres?
Ryan: Bueno, los sustantivos están ahí pero no en el formato correcto.
Piensa en cuándo estás comprando en línea Compras de productos electrónicos, ropa, computadoras, libros, DVD y más en busca de cosas que me compre para Navidad. Imagina cada uno de los productos como sustantivos. Ahora, si estuvieran disponibles en una representación que una máquina pudiera entender, podrías hacer muchas cosas interesantes.
Esposa: ¿Por qué una máquina no puede entender una página web normal?
Ryan: Porque las páginas web están diseñadas para que las entiendan las personas. A una máquina no le importa el diseño y el estilo. Las máquinas básicamente solo necesitan los datos. Idealmente, cada URL tendría una representación legible por humanos y una legible por máquina. Cuando una máquina OBTIENE el recurso, pedirá la máquina legible. Cuando un navegador obtiene un recurso para un humano, pedirá el legible para humanos.
Esposa: ¿Entonces la gente tendría que hacer formatos de máquina para todas sus páginas?
Ryan: Si fuera valioso.
Mira, hemos estado hablando de esto con mucha abstracción. ¿Qué tal si tomamos un ejemplo real. Usted es profesor; en la escuela, apuesto a que tiene un gran sistema informático, o tres o cuatro sistemas informáticos más probables, que le permiten administrar a los estudiantes: en qué clases están, qué calificaciones están recibiendo, contactos de emergencia, información sobre los libros que enseña, etc. Si los sistemas están basados en la web, probablemente haya una URL para cada uno de los nombres involucrados aquí: estudiante, profesor, clase, libro, sala, etc. Ahora mismo, obtenga la URL a través de El navegador te da una página web. Si hubiera una representación legible por máquina para cada URL, sería trivial bloquear las nuevas herramientas en el sistema porque toda esa información sería consumible de manera estándar. También haría que sea bastante más fácil para cada uno de los sistemas hablar entre ellos. O bien, podría construir un sistema estatal o nacional que pudiera hablar con cada uno de los sistemas escolares individuales para recopilar las calificaciones de los exámenes. Las posibilidades son infinitas.
Cada uno de los sistemas obtendría información entre sí utilizando un simple HTTP GET. Si un sistema necesita agregar algo a otro sistema, usaría un HTTP POST. Si un sistema quiere actualizar algo en otro sistema, utiliza un HTTP PUT. Lo único que queda por resolver es cómo deberían ser los datos.
Esposa: Entonces, ¿esto es en lo que ustedes y todas las personas de computadoras están trabajando ahora? ¿Decidir cómo deberían ser los datos?
Ryan: Lamentablemente, no. En cambio, la gran mayoría está ocupada escribiendo capas de especificaciones complejas para hacer esto de una manera diferente que no es tan útil o elocuente. Los sustantivos no son universales y los verbos no son polimórficos. Estamos desperdiciando décadas de uso real en el campo y técnica probada y comenzando de nuevo con algo que se parece mucho a otros sistemas que han fallado en el pasado. Estamos usando HTTP, pero solo porque nos ayuda a hablar menos con nuestra red y con la gente de seguridad. Estamos cambiando la simplicidad por herramientas y asistentes llamativos.
Esposa: ¿Por qué?
Ryan: No tengo ni idea.
Esposa: ¿Por qué no dices algo?
Ryan: Tal vez lo haga.
Creo que entiendes que ser paciente con tu pareja es la mejor sugerencia aquí. Además, debe ser lo más descriptivo posible, para explicar lo que hace y por qué lo hace.
Espero que esto ayude.