Python vs. andere Sprachen

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.
rgrk

HELO,

ich komme mit PHP gut zurecht, habe einige Erfahrungen mit Perl und beschäftige mich seit Kurzem mit Python und Ruby ... bin also Einsteiger.

Frage:
Wenn ich vorgenannte "Techniken" benutzen kann welcher sollte ich den Vorrang geben?
- Performance
- Stabilität
- Komfort
- etc.

Vielen Dank.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

rgrk hat geschrieben:Wenn ich vorgenannte "Techniken" benutzen kann welcher sollte ich den Vorrang geben?
- Performance
- Stabilität
- Komfort
- etc.
Hä? Das sind alles keine Techniken?! Und nunja, du postest in einem Python-Forum, was erwartest du dir für eine Antwort? ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rgrk

[quote="Leonidas"][quote="rgrk"]Wenn ich vorgenannte "Techniken" benutzen kann welcher sollte ich den Vorrang geben?
- Performance
- Stabilität
- Komfort
- etc.[/quote]
Hä? Das sind alles keine Techniken?! Und nunja, du postest in einem Python-Forum, was erwartest du dir für eine Antwort? ;)[/quote]


HELO,

da niemand perfekt ist sollten man sich auch selbstkritisch unter die Lupe nehmen ...

Techniken:
Ja, doch in PHP braucht kein Binärmodus aktiviert werden.
Es wird lediglich das Tempfile verschoben.

Ungeachtet dessen habe ich etwas über File-Upload via CGI in Python gelesen.
Small-File und Big-File ...
Irgendwie muß ja wohl gepuffert werden!

Wo bitte ist die Grenze der Dateigröße?

Erfahrungsaustausch ???
Danke.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

rgrk hat geschrieben:Ja, doch in PHP braucht kein Binärmodus aktiviert werden.
Es wird lediglich das Tempfile verschoben.
Was für ein Binärmodus? Was für ein Tempfile?
rgrk hat geschrieben:Ungeachtet dessen habe ich etwas über File-Upload via CGI in Python gelesen.
Small-File und Big-File ...
Irgendwie muß ja wohl gepuffert werden!
Erstens kannst du CGI vergessen, das ist schon lange nicht mehr zeitgemäß, zweitens, wo hast du das mit Small-File und Big-File her? Davon habe ich in Python noch nie gehört.
rgrk hat geschrieben:Wo bitte ist die Grenze der Dateigröße?
Je nach Serverkonfiguration. nehme ich mal an.
rgrk hat geschrieben:Erfahrungsaustausch ???
Was willst du denn machen? So ohne Qualifizierung kann man dir nicht allgemein alle möglichen Erfahrungen sagen. Dich wird etwa wenig interessieren wie einfach man in Python Parser für Quellcode und Binärdateien schreiben kann, sondern vermutlich irgendwas anderes.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rgrk

[quote]Je nach Serverkonfiguration. nehme ich mal an.[/quote]
Nein. Unterscheidung zwischen Small-File und Big-File ...

Wo ich das gefunden? Suchmaschine ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

rgrk hat geschrieben:Wo ich das gefunden? Suchmaschine ...
Link?

Und mach mal BBcode an…
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Pro-Python werden andere argumentieren, ich habe heute meinen Pro-JavaScript-Tag.

Zunächst aber: die "Techniken" (die alles, nur keine Techniken sind) sind hochgradig missverständlich. Was meint Performance oder Stabilität? Komfort liegt IMHO weniger in der Sprache, als in der gesamten Entwicklungsumgebung. Java als Sprache ist hopp, doch dank guter IDEs, ist die Arbeit damit durchaus topp.

Spannender als Performance als Wert an sich, ist, a) wie schnell kann ich die Lösung für ein Problem umsetzen und b) wie schnell läuft dann das Programm für dieses eine *konkrete* Problem.

In Python fällt es mir recht leicht mich auszudrücken. Ich mag diese Sprache. Ähnlich leicht fällt es mir in JavaScript, auch wenn dort mehr syntaktischer Ballast zu beachten ist. CoffeeScript versucht diesen zu reduzieren, geht aber IMHO zu weit. Python hat da irgendwie die für mich richtige Mischung. Da es mir leicht fällt, komme ich schnell zu Lösungen, also hat die Sprache eine hohe Performance. PHP finde ich hässlich und in sich total inkonsistent, Perl kann ich nur notdürftig lesen, daher wäre für mich die zweite Wahl Ruby, welches mir dank der Nähe zu Smalltalk zusagt. Bei Ruby muss ich aber häufig als bei Python darüber nachdenken, welche Syntaxvariante ich nun benutzen soll, daher ist die gefühlte Performance hier nicht so hoch. JavaScript ist da wieder schön eindeutig. Mir machen allerdings sowohl Ruby als auch JavaScript Spaß.

Python, Ruby und PHP sind IMHO alle ungefähr gleich schnell bzw. langsam. Die Standard-Implementierungen sind alle Interpreter, die prinzipbedingt nur so-und-so schnell sein können. Googles JS-Interpreter V8 ist deutlich schneller -- genau wie Lua, eine weitere kleine, feine Programmiersprache mit einem JIT-Compiler. Wenn's schneller (als PHP) und dennoch dynamisch sein soll, würde ich JavaScript empfehlen.

Erst statisch kompilierende Sprachen sind dann wieder schneller, da es dort meist viel einfacher ist, sie effizient in Maschinencode umzusetzen. Java ist z.B. eine schnell ausführende (nicht unbedingt schnell zu programmierende) Sprache, die ich als leidlich modern bezeichnen würde (für C müsst ich mich schon bezahlen, Java würde ich gerade noch "for fun" machen ;)

Meint Stabilität, wie sehr sich die Sprache über die Jahre geändert hat bzw. in Zukunft ändern wird? Alle erwähnten Sprachen stammen aus den Anfängen oder der Mitte der 90er Jahre und sind damit 15-20 Jahre alt. An den Bibliotheken wird noch gebastelt, aber der Sprachkern ist eigentlich relativ stabil. JavaScript ist in der Form von ECMAScript 3 bzw. 5 übrigens als einzige der erwähnten Sprachen international standardisiert. Java ist zwar ein de-facto-Industriestandard und für Ruby 1.8.7 wird es gerade in Japan versucht, doch für Python gibt es nur eine informelle Sprachreferenz und für die anderen Sprachen bloß Beispielimplementationen. Stabiler als ein Standard kann es eigentlich nicht sein.

Oder ist gemeint, wie häufig die Sprache abschmiert? Für PHP und Perl habe ich keine Erfahrungswerte, aber Python, Ruby und V8 sind felsenfest. Und selbst wenn, wird sauber eine Exception gemeldet und gut ist: Ein "core dump" ist die absolute Ausnahme.

Bleibt Komfort: Für Java gibt es fantastisch gute IDEs -- aber man braucht sie auch. RubyMine ist noch recht gut. Für PHP gibt es ebenfalls von Jetbrains übrigens PHPstorm. Wer meint, echte Männer brauchen keine Werkzeug-Unterstützung bei der Programmierung und wer nicht mit vi (vim ist ja schon für Weicheier) klarkommt, der solle sterben gehen, kann natürlich auch mit einem Texteditor mit Syntax-Highlighting vorlieb nehmen. Das gibt's für alle. Bei Ruby gefällt mir das Paketsystem. Python verziehe ich nicht, das man einmal installierte Pakete noch nicht einmal wieder deinstallieren kann. Zu Perl kann ich nichts sagen. Gut gefällt mir, dass z.B. bei Rails wirklich an alles vom Aufsetzen eines Projekts bis zum Deployment bedacht wurde. Bei Django war das, so mein Stand von vor vielleicht einem Jahr, nicht der Fall. Für JavaScript mit V8 und Node ist vielleicht ein Blick auf Cloud9 interessant. Das ist nicht nur eine komplett browserbasierte IDE mit Editor, Projekt- und Versionsverwaltung, Debugger, Kollaboration, Chat und Github-Intergration, sondern kann man sie sogar als Service buchen (39€ pro Monat finde ich aber zu teuer, da war RubyMine ja billiger und den Preis von IDEA habe ich in 6 Monaten erreicht).

Stichwort Komfort: Man sollte Polyglott sein, d.h. mehr als eine Programmiersprache beherrschen. Aber es ist schon praktisch, finde ich, wenn ich eine Sprache sowohl für den Webclient als auch für den Webserver benutzen kann: Mit JavaScript ist das zur Zeit am einfachsten.

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

sma hat geschrieben:Python verziehe ich nicht, das man einmal installierte Pakete noch nicht einmal wieder deinstallieren kann.
Du meinst, mit easy_install installierte Pakete? Man kann inzwischen auch pip nutzen.

(Das alles ist selbstredend nur dann nötig, wenn man keine Möglichkeit hat, das Paket über eine betriebssystemeigene Paketverwaltung zu beziehen.)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:JavaScript ist in der Form von ECMAScript 3 bzw. 5 übrigens als einzige der erwähnten Sprachen international standardisiert.
Was nutzt das einem, wenn die Sprache einfach kaputt ist?

Javascript kennt keine Möglichkeit ein Programm im mehr als eine Datei aufzuteilen. Sprich man darf sich da was eigenes basteln.
Namenräume darf man sich auch selber basteln.
Es gibt zig verschiedene Möglichkeiten Klassen zu definieren, das heißt jedes Framework bastelt sich sein eigenes Klassensystem.
Es gib keine Möglichkeit über eigene Objekte so zu iterieren wie über Arrays. Jedes Framwork muss ich sich zueinander völlig inkompatible Iterator-Protokolle basteln.
Undefinierte Variablen schmeißen nicht immer Ausnahmen.
Semikolons werden nicht erzwungen.
Implizite Typumwandungeln bei dynamisch typisierten Sprachen sind einfach dumm.
Variablen sind global falls nicht anders definiert.

Sorry, dass das jetzt OT wurde, aber imo ist Javascript und damit Webapps der größte Rückschritt seit man nicht mehr reinen Maschinencode eintippen muss. Aber die schlechteste Alternative setzt sich ja leider öfter mal durch. Javascript war schon vor zehn Jahren eine Zumutung ist es ist kaum besser geworden. Die Sprache ist einfach nicht für Programme > 10 Zeilen geschaffen.
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Nein. Unterscheidung zwischen Small-File und Big-File ...
Das habe ich auch noch nie gehört - würde mich aber genau so wie Leonidas interessieren, was das bedeuten soll :-)

Gruß, noisefloor
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Darii, deine Punkte sind nicht von der Hand zu weisen, aber IMHO nicht so kritisch, wie du es schreibst. Es gibt ein Modulkonzept, das dem von Python nachempfunden wurde. Damit ist es nicht weiter schwer, ein Programm in mehr als eine Datei aufzuteilen. Im Browser gibt es das Konzept einer Datei sowieso nicht. Auf dem Server aber hat man bei Node und allen anderen mir bekannten Systemen immer das CommonJS-Modulsystem zur Verfügung. Namensräume bildet man mit Objekten ab. Statt "man muss sich etwas eigenes basteln" würde ich eher darauf hinweisen, dass die Sprache so flexibel ist, dass man sowohl klassenbasierte als auch prototypische Vererbung nutzen kann. Diese Flexibilität hat IMHO dazu geführt, dass die Sprache auch nach über 10 Jahren noch relevant ist und fast schon die Maschinensprache des Webs ist, in die man alles mögliche kompilieren kann (z.B. Python über LLVM via Emscripten). Natürlich kann man über Objekte iterieren, seit ES5 auch ohne hasOwnProperty sondern direkt mit Object.keys. Nutzt man SpiderMonkey (wie z.B. CouchDB oder mongoDB oder Riak) oder Rhino hat man auch Generatoren mit yield, list comprehensions und Mehrfachzuweisungen wie in Python. Auch hat Mozilla das zugegeben merkwürdige Binding von Variablen korrigiert, indem man statt "var" ein "let" benutzen sollte, was die aus anderen Sprachen gewohnte Sichtbarkeit von Variablen hat.

Wer gerne überall Semikolons haben will, vertraut diese Aufgabe der IDE seiner Wahl an - Intellij IDEA und alle darauf basierenden IDEs für Ruby, Python oder PHP können das. Diese können auch implizite globale Variablen finden und anmerken, sodass es leicht ist, zu fordern, dass man jede -- auch globale -- Variablen definieren muss. Was mich eher stört, ist, dass es keinen allgemeinen Standard für das Dokumentieren von JavaScript-Code gibt und verschiedene JavaDoc-lookalikes auf verschiedene Weise Typen definieren, die eine IDE ansonsten nutzen könnte, um Code-Completion zu bieten.

Stefan
BlackJack

@sma: Nicht die Flexibilität ist IMHO der Grund, das die Sprache so lange relevant ist, sondern dass es die einzige ist, die im Browser "flächendeckend" verfügbar ist. Also der gleiche Grund warum das tolle PHP immer noch relevant ist -- es ist halt "überall" verfügbar. :-P

Man kann nur über einen Workaround über Objekte iterieren wenn man nicht ES5 voraussetzen kann. Und dafür, dass es die einzige standardisierte Sprache unter den hier betrachteten dynamischen Sprachen ist, zählst Du da Eigenschaften auf, die man nur hat, wenn man diese oder jene Implementierung benutzt. ;-)
rgrk

Hier muß niemand in die Glaskugel schauen.
Anbei Quellcode zum Hochladen in PHP, PERL, Ruby und Python
- Self-Script
- CGI-Variante
- Big-File (blockweises Puffern)
- Small-File

Wie gesagt, ich kann PHP und etwas PERL,
Ruby und Python sind von der Suchmaschine.

Das Thema gerät "out of topic" und ist geschlossen.


EDIT (jens): Viel zu viel code gelöscht...
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

rgrk hat geschrieben:Das Thema gerät "out of topic" und ist geschlossen.
Haha, glaubst *du*... :twisted:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

rgrk wurde auf eigenen Wunsch gelöscht, könnt euch überlegen, ob ihr weiterdiskutieren wollt oder nicht.
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:

Ich fand es ganz ok, mit zu lesen... ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

na toll! Und ich weiß immer noch nicht, was er mit "Big File" meint :-( ;-)

Gruß, noisefloor
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben: Diese Flexibilität hat IMHO dazu geführt, dass die Sprache auch nach über 10 Jahren noch relevant ist und fast schon die Maschinensprache des Webs ist, in die man alles mögliche kompilieren kann (z.B. Python über LLVM via Emscripten).
Ja, aber das heißt nicht, das Javascript gut ist. Es war einfach nicht schlecht genug als das man damit nichts machen konnte. ;) Und irgendwann hatte dann jeder Browser eine halbwegs erträgliche JS-Unterstützung (ich sag mal nur document.all vs. document.getElementById) und man hat es verwendet um Probleme zu lösen. Nicht optimal, aber man hat etwas laufen. Vielleicht sollte man aber wirklich für Web eine neue Sprache erfinden und sie nach JS kompillieren.
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Darii hat geschrieben:Vielleicht sollte man aber wirklich für Web eine neue Sprache erfinden und sie nach JS kompillieren.
Sowas wie Python? :lol:
Die Idee klingt gut, aber ich finde auf die schnelle nicht mal, welche Python-Version da unterstützt wird.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

b.esser-wisser hat geschrieben:
Darii hat geschrieben:Vielleicht sollte man aber wirklich für Web eine neue Sprache erfinden und sie nach JS kompillieren.
Sowas wie Python? :lol:
Nein. Pyjamas ist dafür da die Anwendung komplett in Python zu schreiben. Als Javascript-Ersatz taugt Python nicht. Die Möglichkeit beliebige Funktionen als Ausdruck definieren zu können ist schon nett und das geht mit Python ja nicht.
Antworten