Python / Perl - was ist besser geeignet?

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 21. November 2007, 10:39

DanielH hat geschrieben:Naja, egal, außer etwas Zeit, die ich eventuell verlieren könnte, wenn ich Perl UND Python lerne, sehe ich keine Nachteile (dafür aber viele Vorteile).

Und so lange wird es wohl nicht dauern die Basics von Perl zu lernen (Ich hab jetzt angefangen ein Tutorial zu lesen; wenn ich mit dem Tempo weiter lerne, bin ich in 1 bis 3 Tagen fertig).
Ja, die Basics bekommst du schnell hin, das stimmt. Aber die richtigen Features einer Programmiersprache lernst du erst wenn du dich intensiv damit beschäftigst. Damit will ich dich natürlich nicht von dem Entschluss beide Sprachen zu lernen abbringen, will dir nur sagen, dass nachdem man die Basics hat, die richtig tollen Sachen erst noch kommen. Das sehe ich an mir selbst, wenn ich meine alten Programme anschaue und mir an den Kopf fassen muss, was ich damals zusammengeschrieben habe. :)
DanielH hat geschrieben:Ach so, da hab ich dann wohl irgendwas falsch verstanden. Erstmal dachte ich PCRE sei der leicht modifizierte Perl engine, und dann dachte ich Python würde diesen verwenden (Und dadurch, dass Python nicht seinen eignen engine benutze, wäre Python langsamer).
Das Verwenden von "Fremdengines" muss nicht per-se langsam sein. Die Python-Regex-Engine besteht aus einer Mischung von Python-Dateien und einem C-Shared-Object (also etwa einer DLL), `sre`. Wenn Python PCRE verwenden würde, dann wäre es ganz ähnlich. Die Performance der Regular-Expressions ist eher weniger durch die Art der Anbindung definiert, sondern durch die Geschwindigkeit der Regex-Engine. In Python kannst du (theoretisch) neben `sre` auch `Oniguruma` oder `TRE` verwenden. Praktisch geht das nicht, weil beide Bindings noch nicht funktionieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Mittwoch 21. November 2007, 14:19

DanielH hat geschrieben:Da geb ich Dir zu 100% Recht; Bei den meisten Hostern ist der Support extrem schlecht.
Mein Hoster ist da allerdings eine Ausnahme ( http://all-inkl.com/ ).

Ich kann nur sagen, der Webhoster ist der Oberhammer ;)
Letzteres kann ich bestätigen: Zu meiner Zeit bei all-inkl tauche mal eine weitere Datenbank im Frontend (PMA) auf. Nach etwas Überfliegen stellte sich heraus, dass dies eine produktiv genutzte Datenbank eines anderen Kunden war. Die schlauerweise auch noch Passwörter enthielt - im Klartext! *Das* war der Oberhammer ;)

Den einen oder anderen Tag habe ich abgewartet in der Annahme, das würde sicher jemand bemerken und korrigieren - dem war jedoch nicht so. Entsprechend habe ich den Support auf die Problematik aufmerksam gemacht und es wurde immerhin entsprechend reagiert.

Tjoa, und einige Zeit später wechselten wir dann zu einem anderen Hoster, der hoffentlich mehr von Sicherheit verstand. Bei All-inkl kann man schon mal leicht am falschen Ende gespart haben.
DanielH
User
Beiträge: 5
Registriert: Donnerstag 15. November 2007, 20:13

Freitag 23. November 2007, 02:28

Multithreading und Multiprocessing ist sinnvoll fuer CPU-lastige nebenlaeufige Programme, fuer IO-lastige Programme aber eventuell nicht optimal. Es gibt noch eine andere Moeglichkeit! Ich zitiere mal die Doku vom asyncore-Modul:
Danke Rebecca, jetzt versteh ich's ;)

(Du hattest ja schon mal asyncore erwähnt; allerdings bin ich nicht auf die Idee gekommen mal danach zu googln, bzw. ich hab gedacht ich wüste ungefähr, was es ist)

Ja, die Basics bekommst du schnell hin, das stimmt. Aber die richtigen Features einer Programmiersprache lernst du erst wenn du dich intensiv damit beschäftigst. Damit will ich dich natürlich nicht von dem Entschluss beide Sprachen zu lernen abbringen, will dir nur sagen, dass nachdem man die Basics hat, die richtig tollen Sachen erst noch kommen. Das sehe ich an mir selbst, wenn ich meine alten Programme anschaue und mir an den Kopf fassen muss, was ich damals zusammengeschrieben habe.
Da hast Du sicherlich Recht. Vermutlich werde ich mich auch früher oder später mit einer Sprache intensiver beschäftigen, als mit der/den Anderen (ich denke das kommt ganz automatisch ;) ).

Aber ehrlich gesagt bin ich schon glücklich, wenn ich fremde Scripte einigermaßen gut verstehe (mit ner kurzer Recherche nach unbekannten Funktionen ect.). Denn, erstens kann man alleine durch das Abändern von fremden Scripte eine Menge realisieren, und zweitens lernt man dadurch auch ziemlich schnell (finde ich).

Letzteres kann ich bestätigen: Zu meiner Zeit bei all-inkl tauche mal eine weitere Datenbank im Frontend (PMA) auf. Nach etwas Überfliegen stellte sich heraus, dass dies eine produktiv genutzte Datenbank eines anderen Kunden war. Die schlauerweise auch noch Passwörter enthielt - im Klartext! *Das* war der Oberhammer

Den einen oder anderen Tag habe ich abgewartet in der Annahme, das würde sicher jemand bemerken und korrigieren - dem war jedoch nicht so. Entsprechend habe ich den Support auf die Problematik aufmerksam gemacht und es wurde immerhin entsprechend reagiert.

Tjoa, und einige Zeit später wechselten wir dann zu einem anderen Hoster, der hoffentlich mehr von Sicherheit verstand. Bei All-inkl kann man schon mal leicht am falschen Ende gespart haben.

Ui, ok, das ich schon heftig. Wann war das denn? (Ist hoffentlich schon länger her ;) )

Das ist aber ehrlich gesagt erst das erste Mal, dass ich über die was schlechtes gehört habe.

Ach so, da hab ich dann wohl irgendwas falsch verstanden. Erstmal dachte ich PCRE sei der leicht modifizierte Perl engine, und dann [...]
Das scheint aber zu stimmen? Auf jeden Fall konnte ich quasi keinen Unterschied zwischen Perl engine und PCRE feststellen.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 23. November 2007, 11:57

DanielH hat geschrieben:Ui, ok, das ich schon heftig. Wann war das denn? (Ist hoffentlich schon länger her ;) )
Ja, das ist schon einige Jahre her. Das muss dennoch nichts heißen.
DanielH hat geschrieben:Das ist aber ehrlich gesagt erst das erste Mal, dass ich über die was schlechtes gehört habe.
Das mag daran liegen, dass unzufriedene Kunden oft ihr Feedback für sich behalten. Oder daran, dass viele "bei mir lief alles glatt" mit "alles ist perfekt" gleichsetzen und das dann so propagieren.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 23. November 2007, 15:49

DanielH hat geschrieben:
Ach so, da hab ich dann wohl irgendwas falsch verstanden. Erstmal dachte ich PCRE sei der leicht modifizierte Perl engine, und dann [...]
Das scheint aber zu stimmen? Auf jeden Fall konnte ich quasi keinen Unterschied zwischen Perl engine und PCRE feststellen.
Nein, stimmt nicht:
Wikipedia zu PCRE hat geschrieben:Perl Compatible Regular Expressions (kurz PCRE, deutsch Perl-Kompatible Reguläre Ausdrücke) ist eine Programmbibliothek zur Auswertung von Regulären Ausdrücken. Der Name bezieht sich darauf, dass die Syntax der Ausdrücke der Programmiersprache Perl entliehen wurde. Sie entsprechen etwa dem Stand von Perl 5.0, beinhaltet aber auch zusätzliche, im POSIX-Standard definierte Ausdrücke, die auch teilweise erst von Perl 5.10 aufgenommen werden. Trotzdem gibt es viele Unterschiede zwischen den heutigen, von Perl verwendeten Regex und PCRE da perl nach 5.0 stark erweitert wurde.
Die Unterschiede beziehen sich wohl auf weniger bekannte Features der Perl-Regex. Perl Regular Expressions sind unglaublich umfangreich, aber der Versuch diese Features zu nutzen kann recht einfach zu absolut unlesbaren Programmen führen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 23. November 2007, 16:14

Leonidas hat geschrieben:Perl Regular Expressions sind unglaublich umfangreich, aber der Versuch diese Features zu nutzen kann recht einfach zu absolut unlesbaren Programmen führen.
Vor allem diejenigen, die wiederum Perl-Code in REs integrieren und dadurch auch durch PCRE nicht implementierbar sind.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Freitag 23. November 2007, 16:22

Leonidas hat geschrieben:Perl Regular Expressions sind unglaublich umfangreich, aber der Versuch diese Features zu nutzen kann recht einfach zu absolut unlesbaren Programmen führen.
Das war doch einer der Gründe, warum überlegt wurde REs aus Python zu entfernen, oder?... Ich meine, REs (insbesondere umfangreiche) sollten immer gut dokumentiert sein, dabei ist es egal in welcher Sprache. Oder seh ich das falsch?... Von REs weiß ich sehr wenig o_o
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 23. November 2007, 16:23

birkenfeld hat geschrieben:Vor allem diejenigen, die wiederum Perl-Code in REs integrieren und dadurch auch durch PCRE nicht implementierbar sind.
Da fällt mir eines meiner [wiki=IRC_Channel/Zitate#DieZukunftVonRuby]Lieblingszitate[/wiki] ein :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 23. November 2007, 16:30

BlackVivi hat geschrieben:Das war doch einer der Gründe, warum überlegt wurde REs aus Python zu entfernen, oder?
Ich kann mir nicht vorstellen, dass das jemals ernsthaft überlegt wurde.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Freitag 23. November 2007, 16:53

birkenfeld hat geschrieben:
BlackVivi hat geschrieben:Das war doch einer der Gründe, warum überlegt wurde REs aus Python zu entfernen, oder?
Ich kann mir nicht vorstellen, dass das jemals ernsthaft überlegt wurde.
Ich kann mich natürlich auch irren, aber meiner Meinung nach gab es mal eine Diskussion in'r Mailinglist, wo darüber nachgedacht wurde sie zu entfernen... Wegen der Lesbarkeit. Aber das ist schon sehr lang' her. Aber REs sind inzwischen nicht mehr wegzudenken...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 23. November 2007, 17:25

BlackVivi hat geschrieben:Ich kann mich natürlich auch irren, aber meiner Meinung nach gab es mal eine Diskussion in'r Mailinglist, wo darüber nachgedacht wurde sie zu entfernen... Wegen der Lesbarkeit. Aber das ist schon sehr lang' her. Aber REs sind inzwischen nicht mehr wegzudenken...
REs waren eigentlich nie wegzudenken. Was man hätte überlegen können, wäre die Regex-Engine aus der Stdlib zu entfernen. Letztendlich ist es ziemlich leicht so etwas zu tun, weil REs für Python keine Syntaxelemente sind.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Freitag 23. November 2007, 17:32

Leonidas hat geschrieben:
BlackVivi hat geschrieben:Ich kann mich natürlich auch irren, aber meiner Meinung nach gab es mal eine Diskussion in'r Mailinglist, wo darüber nachgedacht wurde sie zu entfernen... Wegen der Lesbarkeit. Aber das ist schon sehr lang' her. Aber REs sind inzwischen nicht mehr wegzudenken...
REs waren eigentlich nie wegzudenken. Was man hätte überlegen können, wäre die Regex-Engine aus der Stdlib zu entfernen. Letztendlich ist es ziemlich leicht so etwas zu tun, weil REs für Python keine Syntaxelemente sind.
Und das meinte ich doch ._. Die aus'r stdlib zu entfernen halt ._.

Tut mir leid, wenn ich mich unklar ausgedrückt habe.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Freitag 23. November 2007, 17:41

BlackVivi hat geschrieben:Und das meinte ich doch ._. Die aus'r stdlib zu entfernen halt ._.

Tut mir leid, wenn ich mich unklar ausgedrückt habe.
Und immer noch kann ich mir nicht vorstellen, dass das diskutiert wurde.

REs gehören zum Umfang einer Sprache einfach dazu, vor allem, wenn sie "batteries included" propagiert. Dass Pythons Engine darüberhinaus eine sehr gute ist, kommt dazu.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten