Re: Pyhton in html laufen lassen
Verfasst: Donnerstag 26. April 2012, 10:08
Man kann AppEngine-Programme (http://appengine.google.com) auch unter einer eigenen Domain ansprechen, wenn man zusätzlich noch einen (ebenfalls kostenlosen) Google Apps Account (http://apps.google.com) anlegt. Die einzige Einschränkung ist, dass es nicht mit ANAMEs geht, sondern nur mit CNAMEs, d.h. "http://meineseite.de" geht nicht, nur "http://www.meineseite.de". Ob die Mühe, einmal einen Account bei Google einzurichten und eine SMS zu beantworten das Hosting von bis zu 10 Programmen wert ist, muss jeder selbst bewerten.
Man kann auch auf Heroku (http://www.heroku.com/) neben vielen anderen Alternativen Python Webapps laufen lassen und kommt häufig auch mit deren kostenlosen Kontingent aus. Das ist nicht ganz so einfach wie AppEngine, lässt aber mehr Freiheiten, weil man sich nicht an spezielle Google-APIs binden muss. Dafür muss man sich wahrscheinlich auch noch bei einem Anbieter einer DB registieren, z.B. MongoLabs.
Der Titel suggerierte allerdings eigentlich die Idee, Python (nicht Pyhton) im Browser ablaufen zu lassen. Diese nicht gemeinte Frage möchte ich auch noch beantworten: Es gibt mehrere Ansätze, die ich allerdings alle nicht für praktikabel halte. Cool sind sie dennoch. IronPython zusammen mit Silverlight wurde schon erwähnt. Silverlight ist allerdings tot. Ich denke auch nicht, dass IronPython aktiv weiterentwickelt wird. Gleiches gilt für Jython in einem Applet. Java auf dem Client (außer für Inhouse-Lösungen und IDEs), speziell Applets sind tot und für Jython gilt auch: Die Weiterentwicklung ist ein Hobbyprojekt, das schneckengleich voranschreitet.
Da im Browser nur JavaScript läuft (das IE auch noch VBScript kann, sei hier egal und auch Dartium, eine Variante von Chrome, die eine DartVM -- siehe http://dartlang.org -- soll nicht weiter erwähnt werden) bleibt als Alternative zu Plug-ins wie Silverlight oder Java (gibt es eigentlich ein Python in ActionScript für Flash?) nur das Übersetzung von Python nach JavaScript und das das indirekte Ausführen der Programme.
Man kann dazu Python in JavaScript übersetzen oder in JavaScript einen Python-Interpreter schreiben. Ersteres erzeuge schneller ablaufenden Code, bedeutet aber Abstriche in der Semantik, denn JavaScript hat nun mal einen andere Semantik als Python und einige Sachen werden so einfach nicht gehen.
Ältestes Projekt dieser Art ist glaube ich Pyjamas (http://pyjs.org/), wo (ähnlich zu GWT) auf dem Server Python in JavaScript kompiliert wird. Ähnliche Ansätze haben auch andere verfolgt, inklusive yours truly. Ich denke, auch Pypy kann oder konnte mal JavaScript erzeugen. Das Projekt http://www.skulpt.org/ macht alles im Browser. Einen Interpreter zur Verfügung stellen macht, EMScripten (http://emscripten.org), ein Projekt, mit dem C-Code mit Hilfe der LLVM-Toolsuite in JavaScript übersetzt werden kann und was auch das Original-CPython übersetzen kann.
Eine denkbare Mischform wäre, in JavaScript einen Interpreter für Python-VM-Bytecode zu schreiben und dann eine Serverkomponente zu haben, die Python-Quelltext in Bytecode übersetzen kann, damit man den vorhandenen Python-Parser nutzen kann. Für Ruby hat jemand mal diesen Ansatz probiert.
Ich denke jedoch nicht, dass Python eine sonderlich gute Sprache ist, um mit dem DOM oder anderen typischen JavaScript-APIs zu interagieren, da leichtgewichtige Funktionen und Closures in der Syntax fehlen. Man müsste dann auch noch ein eigenes API zum Browser haben, so wie Pyjamas es versucht. Dann ist man aber so alleine auf weiter Front, das es einfacher ist, JavaScript (oder meinetwegen CoffeeScript) zu lernen und zu benutzen.
Stefan
Man kann auch auf Heroku (http://www.heroku.com/) neben vielen anderen Alternativen Python Webapps laufen lassen und kommt häufig auch mit deren kostenlosen Kontingent aus. Das ist nicht ganz so einfach wie AppEngine, lässt aber mehr Freiheiten, weil man sich nicht an spezielle Google-APIs binden muss. Dafür muss man sich wahrscheinlich auch noch bei einem Anbieter einer DB registieren, z.B. MongoLabs.
Der Titel suggerierte allerdings eigentlich die Idee, Python (nicht Pyhton) im Browser ablaufen zu lassen. Diese nicht gemeinte Frage möchte ich auch noch beantworten: Es gibt mehrere Ansätze, die ich allerdings alle nicht für praktikabel halte. Cool sind sie dennoch. IronPython zusammen mit Silverlight wurde schon erwähnt. Silverlight ist allerdings tot. Ich denke auch nicht, dass IronPython aktiv weiterentwickelt wird. Gleiches gilt für Jython in einem Applet. Java auf dem Client (außer für Inhouse-Lösungen und IDEs), speziell Applets sind tot und für Jython gilt auch: Die Weiterentwicklung ist ein Hobbyprojekt, das schneckengleich voranschreitet.
Da im Browser nur JavaScript läuft (das IE auch noch VBScript kann, sei hier egal und auch Dartium, eine Variante von Chrome, die eine DartVM -- siehe http://dartlang.org -- soll nicht weiter erwähnt werden) bleibt als Alternative zu Plug-ins wie Silverlight oder Java (gibt es eigentlich ein Python in ActionScript für Flash?) nur das Übersetzung von Python nach JavaScript und das das indirekte Ausführen der Programme.
Man kann dazu Python in JavaScript übersetzen oder in JavaScript einen Python-Interpreter schreiben. Ersteres erzeuge schneller ablaufenden Code, bedeutet aber Abstriche in der Semantik, denn JavaScript hat nun mal einen andere Semantik als Python und einige Sachen werden so einfach nicht gehen.
Ältestes Projekt dieser Art ist glaube ich Pyjamas (http://pyjs.org/), wo (ähnlich zu GWT) auf dem Server Python in JavaScript kompiliert wird. Ähnliche Ansätze haben auch andere verfolgt, inklusive yours truly. Ich denke, auch Pypy kann oder konnte mal JavaScript erzeugen. Das Projekt http://www.skulpt.org/ macht alles im Browser. Einen Interpreter zur Verfügung stellen macht, EMScripten (http://emscripten.org), ein Projekt, mit dem C-Code mit Hilfe der LLVM-Toolsuite in JavaScript übersetzt werden kann und was auch das Original-CPython übersetzen kann.
Eine denkbare Mischform wäre, in JavaScript einen Interpreter für Python-VM-Bytecode zu schreiben und dann eine Serverkomponente zu haben, die Python-Quelltext in Bytecode übersetzen kann, damit man den vorhandenen Python-Parser nutzen kann. Für Ruby hat jemand mal diesen Ansatz probiert.
Ich denke jedoch nicht, dass Python eine sonderlich gute Sprache ist, um mit dem DOM oder anderen typischen JavaScript-APIs zu interagieren, da leichtgewichtige Funktionen und Closures in der Syntax fehlen. Man müsste dann auch noch ein eigenes API zum Browser haben, so wie Pyjamas es versucht. Dann ist man aber so alleine auf weiter Front, das es einfacher ist, JavaScript (oder meinetwegen CoffeeScript) zu lernen und zu benutzen.
Stefan