2012-08-28 9 views
19

Die Frage ist: Warum werden Fortsetzungen (in Ruby) und Koroutinen (in Python) nicht häufiger für Web-Programmierung verwendet?Coroutines oder Fortsetzungen für Web-Programmierung in Python und Ruby. Warum nicht?

Serverseitige Webprogrammierung wird durch das Problem des Beibehaltens des Status zwischen Anforderungen erschwert. Zwei elegante und verwandte Lösungen dazu sind Fortsetzungen (wie in Scheme, Ruby und Smalltalk zu finden) und Koroutinen (wie in Python und Go).

Bruce Tate in seinem Jenseits Java (O'Reilly, 2005) sprach über Ruby on Rails und Seaside als spannende neue Entwicklungen in Web-Programmierung. Für mich war Seaside der eigentliche Durchbruch: Mit Smalltalk-Fortsetzungen machte es Seaside sehr einfach, komplexe Anfrage/Antwort-Sequenzen zu programmieren.

Ich weiß über Python-Coroutinen in Tornado und Twisted verwendet, um Callbacks zu reduzieren, aber das ist etwas Low-Level, im Vergleich zum Schreiben einer Ansicht/Controller in einer einzigen Coroutine für eine Sequenz von HTTP-Anfragen, um einen Online-Kauf abzuschließen , beispielsweise.

Ich frage mich, warum diese Ideen, die auf dem Papier so gut aussehen, in Python und Ruby nicht mehr weit verbreitet sind. Ist es nur eine kulturelle Angelegenheit? Einschränkungen in den Einrichtungen wie in diesen Sprachen implementiert? Oder gibt es einen grundlegenden Fehler in diesen Ansätzen im Kontext der Web-Entwicklung?

+1

Wenn Sie schlau genug sind, warum nicht mitgehen? – mlvljr

+7

mlvljr: Ich bin mir ziemlich sicher, dass die Leute klüger sind als ich es versucht habe und ich würde gerne von ihnen hören, bevor ich es selbst ausprobiere. –

+3

Ich fürchte, diese Frage fällt in Konflikt mit der Klausel "Nicht fragen" (http://stackoverflow.com/faq#dontask). Sie haben mehrere Fragen und jeder kann eine ziemlich lange Diskussion sein. –

Antwort

5

Ich habe Seaside und Fortsetzungen sind ein schönes Modell für die Entwicklung von Client-Server-Webapps. Sie vereinfachen traditionelle Client/Server-Anwendungen, die ich nicht glauben konnte warum keine andere Sprache es tat.

Aber leider sind Webapps nicht das, was sie einmal waren. Anstatt nur eine Seite anzufordern, gibt es jetzt mit ajax mehrere Anfragen zu verschiedenen Zeiten. Deshalb sind Fortsetzungen nicht mehr so ​​nützlich wie früher.

Sogar Avi Bryant (ursprünglicher Autor von Seaside) hat gesagt, dass unter Ajax Callbacks zu erleichtern (ereignisgesteuerte Programmierung) ist wichtiger als Fortsetzungen.

Werfen Sie einen Blick auf diese Quoren Diskussion für mehr: http://www.quora.com/Whats-the-best-continuation-based-web-framework

+2

elviejo: danke für deine Einsicht und für den Link zur Quora-Antwort, die wirklich gut ist. –

+2

Das ist ein sehr guter Punkt.Ich würde sagen Fortsetzungen sind viel besser geeignet für API-Aufrufe, die möglicherweise nacheinander durchgeführt werden müssen. – rbp

1

Sie Anwendung sollte, sowie Support-Bibliotheken auch auf Fortsetzung/Koroutinen Rahmen geschrieben werden. Es ist kein triviales Modell, das Anfänger verstehen. Es gibt auch viel einfachere Frameworks wie gevent, die die gleichen Möglichkeiten bei der Herstellung von grünen Threads bieten, und die einfacher zu verwenden sind, weil Affen gepatcht werden.

1

Hauptsächlich aus nichttechnischen Gründen. Die Anzahl der Leute, die Seaside oder sogar Smalltalk kennen, ist klein, so dass es keinen großen Pool an billigen Programmierern gibt, die man einstellen kann. Aus diesem Grund ist die Anzahl der Dienstanbieter, die wissen, wie ein Seaside-System installiert und gewartet wird, ebenfalls gering.