2012-08-28 17 views
19

La pregunta es: ¿por qué las continuaciones (en Ruby) y las corutinas (en Python) no son más utilizadas para la programación web?Corutinas o continuaciones para programación web en Python y Ruby. Por qué no?

La programación web en el lado del servidor se dificulta por el problema de preservar el estado entre las solicitudes. Dos soluciones elegantes y relacionadas a esto son las continuaciones (como se encuentran en Scheme, Ruby y Smalltalk) y corutinas (como se encuentran en Python y Go).

Bruce Tate en su Más allá de Java (O'Reilly, 2005) habló de Ruby on Rails y Seaside como nuevos desarrollos en la programación Web. Para mí, Seaside fue el verdadero avance: al usar las continuación de Smalltalk, Seaside hizo que sea muy fácil programar secuencias complejas de solicitud/respuesta.

Sé sobre las corotines de Python usadas en Tornado y Twisted para reducir las devoluciones de llamada, pero eso es de bajo nivel, en comparación con escribir una vista/controlador en una sola coroutine para manejar una secuencia de solicitudes HTTP para completar una compra en línea , por ejemplo.

Me pregunto por qué estas ideas que se ven tan bien en papel no se implementan más ampliamente en Python y Ruby. ¿Es solo un asunto cultural? ¿Limitaciones en las instalaciones implementadas en estos idiomas? ¿O hay un error fundamental en estos enfoques en el contexto del desarrollo web?

+1

Si eres lo suficientemente inteligente, ¿por qué no te rindes? – mlvljr

+7

mlvljr: Estoy bastante seguro de que la gente es más inteligente de lo que lo he intentado y me gustaría saber de ellos antes de intentarlo yo mismo. –

+3

Me temo que esta pregunta entra en conflicto con [la cláusula "No preguntar" de las preguntas frecuentes] (http://stackoverflow.com/faq#dontask). Usted tiene preguntas múltiples, y cada una podría ser una discusión bastante larga. –

Respuesta

5

que he usado Seaside y las continuaciones son un bello modelo para desarrollar aplicaciones de servidor de cliente. Simplifican las aplicaciones cliente/servidor tradicionales que no podía creer por qué no lo estaba haciendo ningún otro langugage.

Pero lamentablemente las webapps ya no son lo que solían ser. En lugar de solicitar solo una página, ahora con ajax hay varias solicitudes en diferentes momentos. Es por eso que las continuaciones no son tan útiles como solían ser.

Incluso Avi Bryant (autor original de Seaside) ha dicho que bajo ajax hacer callbacks más fácil (programación impulsada por eventos) es más importante que las continuaciones.

Tome un vistazo a esta discusión para más quora: http://www.quora.com/Whats-the-best-continuation-based-web-framework

+2

elviejo: gracias por su visión y por el enlace a la respuesta de Quora que es realmente bueno. –

+2

Este es un muy buen punto.Diría que las continuaciones se adaptan mucho mejor a las llamadas de la API que pueden necesitar hacerse en sucesión. – rbp

1

aplicación Usted debe estar escrito en el marco de continuación/co-rutinas, así como bibliotecas de soporte también. No es un modelo trivial para entender por principiantes. También hay frameworks mucho más fáciles como gevent, que ofrece las mismas posibilidades para hacer hilos verdes y más fácil de usar debido a parches de mono.

1

Principalmente por razones no técnicas. El número de personas que conocen Seaside o incluso Smalltalk es pequeño, por lo que no hay un gran grupo de programadores baratos que puedan ser contratados. Debido a esto, la cantidad de proveedores de servicios que saben cómo instalar y mantener un sistema Seaside también es baja.

Cuestiones relacionadas