Python in the browser & Python nach Javascript wandeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mpathy
User
Beiträge: 48
Registriert: Montag 17. September 2007, 12:29

Hallo Zusammen!

Hab mir gerade mal wieder angeschaut, was für Möglichkeiten man mit Python so hat.

Zwei Sachen will ich mir genauer anschauen, wollte aber auch mal nachfragen, wer schon damit gearbeitet hat:

Zum einen die Möglichkeit, Python im Browser zu nutzen, sprich in der HTML-Datei einzubinden:
http://ironpython.net/browser/docs.html

Wer hat das schonmal benutzt?

Und zum anderen, weiß jemand was aus Volta geworden ist (mit dem man IronPython in Javascript umwandeln hat können?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Die IronPython-Variante benötigt Silverlight. Erfahrungen habe ich damit nicht. Doch seit Microsoft das Interesse an IronPython und IronRuby verloren hat und auch in Sachen Silverlight stattdessen mit HTML5 + JavaScript liebäugelt weiß ich nicht, ob es in einem Nicht-Microsoft-Umfeld (wie z.B. einem Intranet) lohnt, in diese Richtung zu gehen.

Seit Jahren dümpelt das Pyjamas-Projekt dahin. Es ist nach dem Vorbild von GWT entworfen. Im Prinzip eine gute Idee, doch auch GWT hat im Vergleich zu anderen Technologien im Java-Umfeld eine sehr kleine Fangemeinde und bei Pyjamas ist es glaube ich noch extremer. Theoretisch kann wohl auch Pypy JavaScript erzeugen. Doch da kann man glaube ich auch die Anwender an einer Hand abzählen.

Mittels Emscripten kann man CPython im Browser ausführen, aber das ist zwar ein spannendes Experiment und zeigt, dass JavaScript das C des Webs ist, doch praktikabel ist das weniger.

Neulich hat flosch hier von einem Python-Bytecode-Interpreter in JavaScript berichtet (aber immer noch keinen Source auf https://github.com/flosch/jspy veröffentlicht). Und es gibt noch http://www.skulpt.org/.

Aus einem Python-Quelltext kann man relativ einfach mit dem AST-Modul die Knoten in eine andere Sprache, z.B. JavaScript umsetzen. Das habe ich vor einigen Jahren mal ausprobiert, finde aber gerade nicht das Posting dazu.

Die Frage ist immer, wie nah will man an Pythons Semantik bleiben. Denn dann wird es beliebig kompliziert. Einfach nur JavaScript-Semantik in Python-Syntax ausdrücken, ist einfach. Man schaue sich z.B. einmal CoffeeScript an.

Wenn ich bei Skulpt z.B. `def a(x):pass; dir(a)` eingebe, kommt eine leere Liste zurück. Eigentlich müssten da aber zwei Dutzend Attribute sein. Wenn ich dort `a()` aufrufe, passiert einfach nichts, es müsste aber eine Exception ausgelöst werden. Damit ist Skulpt kein Python.

Stefan
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Die Frage bei sowas ist ja immer, ob man wirklich Python-Code in JS umwandeln will oder ob man ein Ergebnis im Browser anzeigen möchte, zu welchem man unter Nutzung von Python gelangt ist. Letzteres nennt sich dann Webapp und benötigt keinen Code-Umwandler, sondern schlichtweg ein (Micro-)Framework.

Wobei gut, die Anforderungen, die eine Python-Webapp an einen Server stellt, ist schon etwas anderes, als einfach nur JS im Browser ausführen zu lassen.
problembär

Ich denke, solange Python nicht als Skriptsprache direkt vom Browser unterstützt wird, ist es am einfachsten, Sachen, für die der Browser JavaScript vorsieht, in JavaScript zu schreiben.

Da bei Google wohl vieles in Python geschrieben ist und sogar Guido dort arbeitet, wäre es vielleicht nicht schlecht, wenn wenigstens Google Chrome auch Python als Skriptsprache unterstützen würde. Aber solange nichtmal die ein Bedürfnis sehen, den eigentlich veralteten De-Facto-Standard JavaScript zu überwinden, wird das wohl nichts.
BlackJack

@problembär: In wie weit ist JavaScript veraltet? Scheme wird nie wirklich alt, auch wenn es bei JavaScript eine komische Syntax hat. ;-) Und JavaScript wurde und wird ja weiter entwickelt. Mit V8 hat Google eine aktuelle, gute, und schnelle Implementierung von JavaScript am Start.

Wenn man die Syntax und einige semantische Kanten und Ecken nicht mag, bietet sich CoffeeScript an, was recht gut bei Entwicklern ankommt. Habe ich zumindest den Eindruck. Im Gegensatz zu den vorhandenen Ansätzen Java oder Python zu JavaScript zu übersetzen, hat CoffeeScript nicht das Problem eine andere Sprachsemantik auf JavaScript abbilden zu müssen.
mpathy
User
Beiträge: 48
Registriert: Montag 17. September 2007, 12:29

problembär hat geschrieben:Ich denke, solange Python nicht als Skriptsprache direkt vom Browser unterstützt wird, ist es am einfachsten, Sachen, für die der Browser JavaScript vorsieht, in JavaScript zu schreiben.

Da bei Google wohl vieles in Python geschrieben ist und sogar Guido dort arbeitet, wäre es vielleicht nicht schlecht, wenn wenigstens Google Chrome auch Python als Skriptsprache unterstützen würde. Aber solange nichtmal die ein Bedürfnis sehen, den eigentlich veralteten De-Facto-Standard JavaScript zu überwinden, wird das wohl nichts.
Ich finde JavaScript an sich nicht veraltet...

Aber gegen eine clientseitige Alternative zu Javascript im Browser hätte ich nichts (*) - wenn man jetzt damit anfängt, und nen Jahrzehnt verstreichen lässt, gibts auch keinen Browser mehr, das das nicht unterstützt.. Eine clientseitige Alternative zu Javascript ist keine Entscheidung für heute, sondern für die ferne Zukunft :)

Ich bin generell ein Mensch der gerne bei allem was er macht eine freie Wahl hat, und nicht zu einer Sache gezwungen sein muss.

Man könnte sogar sagen, vielleicht gefiele mir Javascript auch noch ein wenig besser, wenn ich eine Wahl hätte, so regt sich aber irgendwas in mir.. :)

Javascript ist z.B. was Node angeht ja eh nur so schnell weil es so sehr gepusht wird von allen. Wenn jemand an Python so intensiv und gutbezahlt nonstop rumoptimieren würde, wooooooooooooooooooooooshh.. :) :arrow: :arrow: :arrow: :arrow:


(*) = Es soll mir jetzt bloß niemand mit VBscript anfangen, das hat bei mir retrograde Peristaltik zur Folge.. :) Das darf ruhig IE only bleiben..
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Da Python ca 1991 entstanden ist, JavaScript aber 1995, ist es schwer, es im Vergleich zu Python als veraltet zu bezeichnen. Zudem müsste es dann ja einen Ersatz geben, den ich im Browser nicht sehe. Java und Applets (ebenfalls 1995 erfunden) sind es eben so wenig wie Flash oder Silverlight. Und ich denke, zukünftige neue Sprachen wie z.B. CoffeeScript, von dem JavaScript-Erfinder Eich öffentlich bekennt, dass es ihm gefällt, werden zu JavaScript kompilieren. Damit das wirklich gleichwertig ist, gilt es hier noch das Problem zu lösen, dass man im Debugger gerne den ursprünglichen Quelltext sehen will und nicht das übersetzte JavaScript. Ich bin aber zuversichtlich, dass das noch dieses Jahr funktionieren wird.

CoffeeScript beseitigt einige Ecken und Kanten, wie BlackJack so schön schreibt, fügt aber auch neue hinzu, denn in dem Bemühen, ähnlich wie Ruby Klammern von Funktionsaufrufen weglassen zu dürfen, ist da eine extrem mehrdeutige Syntax entstanden, wo jeder glaube ich immer schaut, wie's wohl in JavaScript übersetzt, wenn er es so oder anders macht. Eine Sprache, bei der man aber auch noch die Sprache kennen muss, in die übersetzt wird, ist keine eigenständige Programmiersprache, sondern bestenfalls ein Macro-Assembler.

Somit ist glaube ich CoffeeScript nicht das endgültige Ziel und warum sollte man nicht auch die deutlich einfachere Python-Syntax benutzen wollen. Nur von der Idee, ein "echtes" (semantisch gleichwertiges) Python in JavaScript zu haben, sollte man sich IMHO verabschieden. Das geht IMHO prinzipiell nicht effizient.

Ich denke auch, das Unladen Swallow-Projekt hat gezeigt, dass man trotz full-time-Entwicklung von guten Leuten, denen alle relevanten Informationen, was JIT-Compilerbau zur Verfügung stehen, Python nicht signifikant schneller werden kann, wenn man semantisch gleichwertig bleiben will und auch noch das C-API beibehalten muss. Somit denke ich nicht, dass es da je ein "wooooooooooooooooooooooshh" geben wird.

Übrigens kann man mit Titanium Desktop-Anwendungen mit HTML-Technologie bauen und dort Ruby, Python oder PHP statt JavaScript als Programmiersprache im Browser einsetzen. Macht aber glaube ich kaum einer.

Stefan
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
problembär hat geschrieben:Ich denke, solange Python nicht als Skriptsprache direkt vom Browser unterstützt wird, ist es am einfachsten, Sachen, für die der Browser JavaScript vorsieht, in JavaScript zu schreiben.

Da bei Google wohl vieles in Python geschrieben ist und sogar Guido dort arbeitet, ...
Ja, ja, aber James Gosling, seines Zeichens Miterfinder von Java, arbeitet auch bei Google. Und Google macht bekanntlich auch viel in Java. :-)

Abgesehen davon glaube ich persönlich, dass der Höhepunkt von JS noch nicht erreicht ist. Ich denke, dass da noch mehr kommt. Wie z.B. beim Gnome Projekt, wo Teile in JS implementiert sind.

Gruß, noisefloor
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

sma hat geschrieben:Mittels Emscripten kann man CPython im Browser ausführen, aber das ist zwar ein spannendes Experiment und zeigt, dass JavaScript das C des Webs ist, doch praktikabel ist das weniger.
Dazu gibt es übrigens bei http://syntensity.com/static/python.html eine Demo und eine neuere Variante hier: http://repl.it/

Weitere Links: https://github.com/kripken/emscripten/wiki

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ach, für ein Python im Browser hätte ich auch eine Sinnvolle Idee:

Ein Paste-Service direkt mit Start-Button... Oder noch schöner für unser Forum: Einen Python-Code-Tag, bei dem man den Code direkt starten kann ;)

EDIT: Ach, so ein wenig geht das schon bei repl.it in die Richtung eines Paste Dienstes, hier ein altes Skript von mir: http://repl.it/BqC#

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Ein Paste-Service direkt mit Start-Button... Oder noch schöner für unser Forum: Einen Python-Code-Tag, bei dem man den Code direkt starten kann ;)
Na sowas würde nur bei den einfachsten Skripten funktionieren, weil Dateizugriff schon nicht mehr geht und irgendwelche Module warscheinlich auch schon Probleme bereiten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Natürlich hat sowas Grenzen. z.B. gibt es kein _socket, aber anscheinend eine Art Virtuelles Dateisystem...

Wie wäre es mit einer ganzen VM in JS und dann Python laufen lassen? Einen Virtuelles Linux system gibt es ja schon: http://bellard.org/jslinux/ mehr info: http://bellard.org/jslinux/tech.html
Ein Python ist allerdings nicht installiert ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten