Seite 1 von 1

Interessante Artikel bei heise Developer

Verfasst: Freitag 30. Januar 2009, 19:27
von Leonidas
Für alle die eine Einführung suchen gibt es mit Erlang und Continuations zwei lesenswerte Artikel zu Programmierthemen bei heise.

Verfasst: Freitag 30. Januar 2009, 19:44
von BlackVivi
Wann sind Menschen eigentlich zu dumm zum scrollen geworden? 8 Seiten für Text, der auch auf 2 Seiten gepasst hätte oO' Regt mich sowieso auf... jede verdammte Seite hat nich mehr als'ne halbe Seite Text. Sollten lieber ein paar Punkte zum festhalten einbauen, wie bei der Wikipedia.

Zu den Texten: arg komplex für mich oO' Hab Continuations eh nie wirklich verstanden. Vielleicht kann jemand ein Beispiel in Python schreiben ._. Dann versteh ichs bestimmt.

Verfasst: Freitag 30. Januar 2009, 19:53
von Leonidas
BlackVivi hat geschrieben:Wann sind Menschen eigentlich zu dumm zum scrollen geworden? 8 Seiten für Text, der auch auf 2 Seiten gepasst hätte oO' Regt mich sowieso auf... jede verdammte Seite hat nich mehr als'ne halbe Seite Text. Sollten lieber ein paar Punkte zum festhalten einbauen, wie bei der Wikipedia.
Dafür gibts die Druckansicht. Ich habe überlegt die zu verwenden, aber dort sind die Zeilen so lang (blöder Widescreen), dass es unangenehm zu lesen ist.
BlackVivi hat geschrieben:Zu den Texten: arg komplex für mich oO' Hab Continuations eh nie wirklich verstanden. Vielleicht kann jemand ein Beispiel in Python schreiben ._. Dann versteh ichs bestimmt.
Python unterstützt keine Continuations. Das nicht namentlich genannte Framework mit Continuations ist wohl Nagare (dessen Seite ist gerade down) und das ist nur deswegen möglich, da es auf Stackless setzt, wo es tatsächlich Continuations gibt.

Und ja, Continuations habe ich auch noch nicht verstanden, deswegen bin ich froh um den Code um es auszuprobieren. Allerdings ist er natürlich etwas sinnlos (wie der Leserbrief in der aktuellen c't dazu anmerkt), aber besser das als nichts.

Verfasst: Freitag 30. Januar 2009, 20:00
von BlackVivi
Leonidas hat geschrieben:Und ja, Continuations habe ich auch noch nicht verstanden, deswegen bin ich froh um den Code um es auszuprobieren. Allerdings ist er natürlich etwas sinnlos (wie der Leserbrief in der aktuellen c't dazu anmerkt), aber besser das als nichts.
Gut, ich dachte schon ich wär zu doof dafür oo' Aber die Wikipediaseite zu Continuations ist plain falsch, da steht das Python es unterstützt. Zwar steht da hauptsächlich stackless python, aber trotzdem.

Verfasst: Freitag 30. Januar 2009, 20:42
von BlackJack
@BlackVivi: Mehr Seiten == mehr "page impressions" == mehr Werbebanner angezeigt == mehr Geld für den Webseitenbetreiber. :-/

Verfasst: Freitag 30. Januar 2009, 20:47
von BlackVivi
BlackJack hat geschrieben:@BlackVivi: Mehr Seiten == mehr "page impressions" == mehr Werbebanner angezeigt == mehr Geld für den Webseitenbetreiber. :-/
Aber views von'r selben IP werden doch nicht als zusätzliche page impression gewertet.... oder ist das inzwischen anders oO?

(arg arg arg arg off topic, ich weiß oO *nachdenk* genau!)

Hat jemand'n Beispiel in Stackless Python für Continuations? Ein minibeispiel?

Verfasst: Freitag 30. Januar 2009, 23:43
von Darii
sma hat sich da mal Gedanken zu gemacht.

Seaside finde ich ziemlich schick. Durch die Syntax von Smalltalk wirkt das alles ziemlich elegant. Dagegen wirkt die klassische Webentwicklung wie Steinzeit, weil man sich da für vergleichsweise simple Sachen immer ziemlich einen abbrechen muss um den Zustand nicht zu verlieren. Der Nachteil ist wohl, dass das alles recht Ressourcenfressend ist. Die einzige kommerzielle Webseite von der ich weiß, dass sie Seaside nutzt ist CMS BOX.

Nagare hat mir irgendwie zu viele externe Abhängigkeiten.

Verfasst: Sonntag 1. Februar 2009, 10:58
von sma
Habe den Heise-Artikel nur Überflogen. IMHO fehlt da die Referenz auf PLT-Scheme, dessen Webserver Continuations von Anfang an unterstützt und in dessen Umfeld einige theoretische Paper entstanden sind. Auch sollte man Paul Graham erwähnen, der sich das Prinzip eines Continuation-basierten Server patentieren lassen hat.

Daumenregel: Eine Continuation ist eine Funktion, die Stellvertreter für das restliche Programm zu einem bestimmten Zeitpunkt ist. Betrachtet man das Programm "A + B". So wird 1. A ausgewertet, 2. B ausgewertet und 3. + angewendet und beide Werte addiert. Die Continuation vor 1. entspricht λ() = A+B. Die Continuation vor 2. entspricht λ(x) = x + B. Die Continuation vor 3. entspricht λ(x,y) = x + y. Nur werden einer Continuation nicht explizit Argumente übergeben, sondern es eine Closure und ihre freien Variablen sind im Programmkontext gebunden, also λ A + B, λ x + B, λ x + y.

Im Unterschied zu einer Coroutine kann eine Continuation mehrfach aufgerufen und durchlaufen werden. Coroutinen sind somit spezielle Continuations. Generatoren sind wiederum spezielle Coroutinen.

Python hat nur (seit 2.5) Coroutinen, keine Continuations.

Eine Scriptsprache mit Continuations ist z.B. Rhino, die Java-Implementierung von JavaScript, wie sie Java 6 beiliegt. JavaScript 1.8 wie es in Firefox implementiert ist, hat wie Python Coroutinen. Lua hat übrigens auch Coroutinen.

Seaside braucht, damit der Back-Knopf funktioniert, jedoch echte Continuations. Es wird dabei ausgenutzt, dass man in Squeak-Smalltalk an den gesammten Programmzustand in Form einer verketteten Liste von MethodContext und BlockContext-Objekten herankommt, die man (im Gegensatz zu CPython) kopieren und später wieder setzen kann. Eine Continuation in Squeak-Smalltalk ist somit ein Objekt, das eine serialisierte Kopie des kompletten Ausführungskontextes (alle lokalen Variablen, alle Zwischenergebnisse auf dem internen Stack) hält und beim "Aufruf" den aktuellen Kontext mit der deserialisierten Kopie überschreibt. Es zeugt von der Flexibilität von Smalltalk, dass diese Modifikation die VM nicht aus dem Tritt bringt.

Stefan

Verfasst: Sonntag 1. Februar 2009, 16:41
von Leonidas
sma hat geschrieben:Habe den Heise-Artikel nur Überflogen. IMHO fehlt da die Referenz auf PLT-Scheme, dessen Webserver Continuations von Anfang an unterstützt
Wird erwähnt und es gibt im Artikel zwei Links auf PLT:
So hat auch PLT Scheme Continuations in seine Scheme Web Servlets Library integriert, wenn auch nicht in der Konsequenz und mit dem Reichtum an vorgefertigten Komponenten wie Seaside. Ein weiteres Scheme Web Framework basierend auf den Ideen von Seaside ist der Modal Web Server für Chicken Scheme. Die Entwicklung dieser Bibiothek ist jedoch eher experimentell und wird nicht weiter verfolgt. Für den großen Scheme-Bruder Common Lisp bietet das Framework UnCommon Web die entsprechenden Funktionen.
Mich hat das eben auch im Web-Server Kontext interessiert und da Seaside bei mir nicht tut (GNU Smalltalk ist broken und der Rest tut auch nicht so wie ich wollte) wollte ich es mit PLT versuchen. Da bin ich jedoch aus Zeitgründen nicht weit gekommen.

Verfasst: Sonntag 1. Februar 2009, 18:50
von sma
Leonidas hat geschrieben:Mich hat das eben auch im Web-Server Kontext interessiert und da Seaside bei mir nicht tut (GNU Smalltalk ist broken und der Rest tut auch nicht so wie ich wollte) wollte ich es mit PLT versuchen. Da bin ich jedoch aus Zeitgründen nicht weit gekommen.
Nimm Squeak, wenn dich das UI nicht stört oder ansonsten die nicht-kommerzielle Lizenz von VisualWorks, wenn dich da nicht stört, dass es kommerzielle Software ist.

Stefan

Verfasst: Sonntag 1. Februar 2009, 19:12
von Leonidas
sma hat geschrieben:ansonsten die nicht-kommerzielle Lizenz von VisualWorks, wenn dich da nicht stört, dass es kommerzielle Software ist.
Stört mich eigentlich beides irgendwieweit, aber zum versuchen wäre das OK gewesen. Wenn ich mich richtig erinnere tat VisualWorks hat bei mir nicht, weil das Image für Linux x86_64 nicht verfügbar war und das 32-Bit Image ließ sich nicht konvertieren, weil das im Internet beschriebene Konvertiertool nicht dabei war. Vielleicht ist es besser geworden, werd ich beizeiten nochmal probieren, denn VisualWorks sah damals auf Windows recht brauchbar aus.

Ja, ich habe manchmal echt Talent auf solche Probleme zu stoßen. :cry: