Ich spreche Internet...aber was genau? (Python zu JS, PHP)

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.
Faerelis
User
Beiträge: 34
Registriert: Sonntag 20. November 2011, 16:55

Hallo Zusammen,

ich bin z.Z. dabei mich mehr mit WEB-Development zu beschäftigen, dabei sind HTML(!) und CSS kein Problem, aber für mich stellt sich die Frage was noch wichtig ist zu wissen. JavaScript steht zur Zeit bei mir auf dem Plan.

Ich habe folgende Fragen die ich leider bis jtz nicht ausreichend beantwortet sehen konnte...

...HTML5 ist dermaßen umfangreich und ausgeprägt, dass einiges mit HTML5 möglich ist wozu vorher andere Optionen genutzt werden musste (siehte PHP), man siehe das Canvas was mit HTML5 kommt und viele andere Elemente die HTML5 zur Zukunft des Web 2.0 machen. Im Blick auf die Fragestellung "hat PHP neben HTML5 eine Zukunft?", was wäre da eine realistische Anwort?

...Mein "lieblings" Sprache Python würde ich gerne umfangreicher einsetzen, auch in Sachen Webgestalltung, aber wo positioniert sich Python in bezug zu JavaScript und PHP, sind sie austauschbar zu Python? oder wo hat sich Python in der Webgestalltung eingeordnet?

Da ich selbst noch wenig Übersicht habe, ist es für mich verwirrend und dort wo ich bis jtz nachgeforscht habe wurden die Unterschiede, Gemeinsamkeiten, Anwendungsgebiete, Verhalten zu einander, nicht herausgearbeitet. Ich möchte mit Python auch an Webseiten arbeiten, kann ich es wie JS nutzen, oder ist es sowas wie PHP?

Sollte ich da was nicht richtig gefragt haben, werde ich mich gerne klarer ausdrücken, sollte es nötig sein.

MfG
P.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dir fehlt irgend wie der komplette Background, was die essenziellen Webtechnologien und -protokolle anbelangt. Das kann man imho sehr einfach durch wikipedia / google selber recherchieren (wenn man sich die Mühe macht).

Machen wir es kurz und "lügen" ein wenig:
JavaScript -> Client (embedded im Webbrowser)
Python, PHP, *whatever* -> Server

Python hat im Webbereich also praktisch die gleiche Rolle wie PHP.

Vielleicht ist es am einfachsten, wenn Du Dir mal ein Web-Framework anguckst. Flask oder Bottle böten sich für einen schnellen Einblick an.

JS wird z.B. für Dinge wie AJAX gebraucht; also Logik, die Client seitig durchgeführt werden soll.

Weiterführendes kannst Du auch in unserem Wiki finden: wiki.python.de.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Faerelis hat geschrieben:...HTML5 ist dermaßen umfangreich und ausgeprägt, dass einiges mit HTML5 möglich ist wozu vorher andere Optionen genutzt werden musste (siehte PHP), man siehe das Canvas was mit HTML5 kommt und viele andere Elemente die HTML5 zur Zukunft des Web 2.0 machen. Im Blick auf die Fragestellung "hat PHP neben HTML5 eine Zukunft?", was wäre da eine realistische Anwort?
Naja, das ist so ein wenig wie Fragen ob Windows zu Zeiten von HTML noch Zukunft hat. Sind ganz verschiedene Sachen. Meist wird HTML am Server mittels PHP oder Python oder What-have-you generiert und dann im Browser dargestellt, mittels HTML und CSS.

Natürlich kann man die ganze Seite auch in JS und HTML realisieren, ein wenig so wie GMail das macht, aber um irgendwelchen Code der Serverseitig läuft wirst du nicht herumkommen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Faerelis
User
Beiträge: 34
Registriert: Sonntag 20. November 2011, 16:55

Danke für die schnelle Antwort. Wie bereits angedeutet bin ich relative neu, von daher ergeben sich manchmal solche Grundsatzfragen.

JS = Client, Python etc. Server, klar; Aber mich wundert auch der Zusammenhang... JS ist eine Scriptsprache wie Python und hat Objekte, Strings, Prozeduren etc. wie Python, also einen (für meine Sicht) ähnlichen/gleichen Aufbau, warum ist dann nur JS auf ClientSeite nutzbar? Wenn ich mir das so ansehe, dürfte es doch auch möglich sein ganze Programme mit JS zu schreiben, so lange diese nicht auf den NutzerRechner zugreifen.

((Ich werde hier keine speziellen Fragen stellen, wie mache ich dies oder jenes, aber es werden nur immer solche speziellen Fragen beantwortet wenn ich irgendwo nachschaue. Möchte ich aber solche Fragen beantwortet haben (wie oben) dann bekomme ich Antworten "arbeite dich ein" oder "das ist schwer zu erklären". ))
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Mittlerweile ist dank node.js JavaScript auch auf der Serverseite nutzbar (wenn auch der Fokus eindeutig auf paralleler, nicht-blockierender Programmierung liegt).
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Naja, JS ist eben von Haus aus Sandboxed - Python nicht. Natürlich könnte man in einen Browser auch Python als Scriptsprache anbieten - gibt / gab dazu doch auch schon Ansätze.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Faerelis hat geschrieben:JS = Client, Python etc. Server, klar; Aber mich wundert auch der Zusammenhang... JS ist eine Scriptsprache wie Python und hat Objekte, Strings, Prozeduren etc. wie Python, also einen (für meine Sicht) ähnlichen/gleichen Aufbau,
Das siehst du ganz richtig. Essentiell sind Python und JavaScript nicht so unterschiedlich. In den Details natürlich unglaublich verschieden, aber das ist natürlich an dieser Stelle nicht relevant.
Faerelis hat geschrieben:warum ist dann nur JS auf ClientSeite nutzbar? Wenn ich mir das so ansehe, dürfte es doch auch möglich sein ganze Programme mit JS zu schreiben, so lange diese nicht auf den NutzerRechner zugreifen.
Da hast du ungenau formuliert, weil man kann das zweierlei auslegen (und wenn ich Hyperions und webspiders Posts anschaue, dann wird das auch so gemacht): "Warum ist nur JS auf Client-Seite nutzbar" oder "Warum ist JS nur auf Client-Seite" nutzbar.

Um die erste Formulierung zu beantworten: Weil Browser in der Regel nur Interpreter für JavaScript haben. Es gibt etwa Forks wie Dartium, die neben JavaScript auch Dart verstehen, aber sogar die Entwickler raten vom Einsatz als ´Pprimärbrowser ab, weil das eher eine Tech-Demo ist und kein fertiges Produkt. Nun, natürlich kann man auch Sprachen zu JavaScript kompilieren, wie Beispielsweise CoffeeScript oder ClojureScript machen. Eine durchaus beachtliche Liste solcher Lösungen findes du im CoffeeScript-Wiki.

Um die zweite Formulierung zu beantworten: Ist es nicht. Es spricht nichts dagegen JavaScript auch auf Server-Seite auszuführen. Die bekannteste Lösung dazu ist zurzeit Node.js, wovon ich aber nur mäßig begeistert bin. Daneben gibt es noch zig weitere Implementationen wie RingoJS etc.
Faerelis hat geschrieben:Möchte ich aber solche Fragen beantwortet haben (wie oben) dann bekomme ich Antworten "arbeite dich ein" oder "das ist schwer zu erklären".
Wo? Hier werden auch allgemeine Fragen oftmals durchaus umfangreich beantwortet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Faerelis
User
Beiträge: 34
Registriert: Sonntag 20. November 2011, 16:55

(das mit dem Beantworten galt nicht diesem Forum)
Faerelis
User
Beiträge: 34
Registriert: Sonntag 20. November 2011, 16:55

Ok, danke an alle, das hilft meinem Verständnis schon weiter.

Im Grund liegt es also nur den Interpretern, wenn in den gängigen Browser, z.B. ein Python, Interpreter eingebaut wäre, könnte man, aufgrund der erweiterten Möglichkeiten Pythons, auf sensible Daten auf dem Nutzerbrowser zugreifen und sich die dollsten Sachen ausdenken? na das wäre ja ein Hackerparadis :(
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Sandboxing, kennst du es?

Irgendwie werde ich den Eindruck nicht los Leute sollten sich besser zumindest elementare Programmierkenntnisse zulegen bevor sie anfangen über "Hacker" zu reden. Der Hinweis sich einzulesen kommt ja nicht von ungefähr.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Faerelis hat geschrieben:Im Grund liegt es also nur den Interpretern, wenn in den gängigen Browser, z.B. ein Python, Interpreter eingebaut wäre, könnte man ...
... könnte man Python im Browser nutzen, kann man aber nicht, weil alle großen Browser sich zur Zeit auf JavaScript beschränken. Theoretisch könnten sie jede Sprache unterstützen.
Faerelis hat geschrieben:... z.B. ein Python, Interpreter eingebaut wäre, könnte man, aufgrund der erweiterten Möglichkeiten Pythons, auf sensible Daten auf dem Nutzerbrowser zugreifen und sich die dollsten Sachen ausdenken? na das wäre ja ein Hackerparadis :(
Nein, wenn Browser Python unterstützen würden, dann würde die sich darum kümmern das man damit keinen Schaden anrichten kann, ist bei JS nicht anders.

Das "Hackerparadis" gibt es doch schon durch die Browser Plugins, also durch Java, Flash und Co.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sr4l hat geschrieben: Nein, wenn Browser Python unterstützen würden, dann würde die sich darum kümmern das man damit keinen Schaden anrichten kann, ist bei JS nicht anders.
Dann wäre es aber kein "Python" mehr, sondern eine Sprache, die eine Untermenge von Python darstellte ;-) Sicherlich kommt es hier auf die Art und Weise an, wie man Python definiert. Ich sehe die Standardlib als essenziellen Bestandteil an - und der beinhaltet ja zig IO-Funktionalität.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deets

@Hyperion: du hast da eine komische Definition von "Untermenge einer Sprache". Die standardlib ist da sicher nur sehr beschraenkt bis gar nicht ausschlaggebend in allen anderen Kontexten von "Untermenge einer Sprache".

Selbstverstaendlich wuerde ein Browser-Python sowas wie itertools beinhalten. Aber ich halte os.path zB nicht fuer Teil des Sprachumfangs von Python...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

deets hat geschrieben: Selbstverstaendlich wuerde ein Browser-Python sowas wie itertools beinhalten. Aber ich halte os.path zB nicht fuer Teil des Sprachumfangs von Python...
Und wo würdest Du da eine (sinnvolle) Grenze ziehen?

Es mag natürlich immer auf den Kontext drauf ankommen, aber wenn ich irgend wo lese, dass ein Programm Python als Scriptsprache anbietet, dann würde ich erwarten, dass ich damit alles machen kann, was ein Stand-alone Python mir auch bietet. Aber vielleicht sehe ich das ja wirklich anders als die "Mehrheit" ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deets

Es geht um die *Semantik* einer Programmiersprache. Die haengt nunmal nicht von Bibliotheken ab. ueblicherweise. ausser irgendwelchen sprach-internen Funktionen benoetigen die. Das waere dann aber sicher auch nix das Sandbox-relevant waere. *Ausser* jemand entwickelt eine Sprache mit eingebauten File-Operatoren oder sowas.
BlackJack

@Hyperion: Nach der Definition kann kein Browser Java. :shock:

Den Sprachumfang inklusive Standardbibliothek könnte man im Browser ja zur Verfügung stellen. Es ist halt nur der Sandkasten, der die Verwendbarkeit einschränkt. Wenn Du ein normales Python in einer jail-/chroot Umgebung ausführst, wo Python weder Schreibberichtigung auf dem Dateisystem hat, noch die Erlaubnis Sockets zu öffnen, ist das doch auch noch Python und nicht plötzlich eine Untermenge der Sprache.

Zumal im Browser schreiben auf Dateien innerhalb und lokal zum Sandkasten und öffnen von Sockets mit einer „same origin policy” ja durchaus möglich sein könnten.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ok, ich sehe ein, dass ich da wohl die Lage falsch beurteilt habe.

@deets: Stimmt, die Semantik (und Syntax) prägen eine Sprache. Ansonsten könnte man ja sogar nicht von "JavaScript" sprechen, da ja letztlich jede Integration in ein Programm besondere Funktionalität zugänglich macht (JS im Browser != JS in Plasma / Qt). Da habe ich mich wohl verrannt. :oops:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Faerelis
User
Beiträge: 34
Registriert: Sonntag 20. November 2011, 16:55

BlackJack hat geschrieben:...Wenn Du ein normales Python in einer jail-/chroot Umgebung ausführst, wo Python weder Schreibberichtigung auf dem Dateisystem hat, noch die Erlaubnis Sockets zu öffnen...
Das finde ich interessant; Wenn man ein Interpreter in einen Browser einbaut und diesem Interpreter, seitens des Browsers, nur beschränkte Rechte gibt, dann kann doch der Sprachumfang ja größer sein, als man durch beschränkte Rechte letztendlich nutzen kann. Von daher wäre es doch egal ob Browser verschiedenste Interpreter implementiert haben...oder wäre dann der Browser so weit manipulierbar, dass man diese beschränkten Rechte umgehen kann? Daraus wäre dann ja geschlossen, dass man dann keine zusätzlichen Interpreter implementiert.

ps: dies sind Fragen eines Wenigbewanderten, ich bitte um Nachsicht

pps: SolitaryMan; jtz haben wir alle gesehen, wo du mich überall gefunden hast, danke

ppps: ich weiss was Hacker und was Hacker sind, aber Reden und Reden sind zwei Sache...
deets

Es ist so: wenn die Sprache es erlaubt, dass zB Maschinen-Code generiert wird (explizit, oder durch Ausnutzung von Luecken in zB JIT-Implementationen), dann gibt es nur ein Mittel, um eine Sprache einzufangen: Sandboxen, wie zB Chrome sie implementiert. Wenn die Bug-frei sind, dann kann die Sprache versuchen was sie will, sie wird nicht rauskommen.

Python ist zwar von der Sprache selbst her ziemlich sicher, d.h. wenn man alle System-nahen Module abklemmt, dann ist man da recht sicher. Aber sie ist nicht mit dem Ziel geschrieben worden eine sichere Sprache zu sein.

Insofern muesste man sie eben einsperren, wie Chrome das ja auch tut.

Aber das alles ist theoretisches Geschwaetz - auf Browsern ist im Moment JS verfuegbar. Punkt. Mittels Plugins koennte man auch Python verfuegbar machen, aber das ist nicht wirklich realistisch. Bliebe noch sowas wie die Chrome Pepper API - aber dann ist man halt auf 30% des Browsermarktes beschraenkt.
Antworten