Hallo,
seit einiger Zeit pflege ich eine Seite, auf der beschrieben wird, warum ich von Perl nach Python umgestiegen bin. Ich habe gerade noch ein paar Dinge ergänzt, und dachte, es könnte vielleicht jemanden interessieren:
http://www.thomas-guettler.de/vortraege/programmierung/einfuehrung.html#perl...
Gruß, Thomas
On Fri, 1 Dec 2006 22:25:30 +0100 guettli@thomas-guettler.de (Thomas Guettler) wrote:
http://www.thomas-guettler.de/vortraege/programmierung/einfuehrung.html#perl...
Nach dem ersten Satz würde ich erwarten: "Warum ich von emacs auf vim umgestiegen bin?"
Da kann man sich sicher drüber streiten. Du hast da Argumente angeführt, die nicht wirklich überzeugend sind. Wenn man selber programmiert und es stört einen, dass es magische Variablen gibt oder das man Klammer weglassen kann, dann nutzt man diese Features einfach nicht.
Perl Doku nur als manpage? Kennst du cpan? Ich habe pod2latex noch nie verwendet, aber ich würde unterstellen dass man damit PDF's machen kann.
Ich habe mit Python noch nie gearbeitet, kann schon sein das es in machen Punkten besser ist. Und wenn du einmal dabei bist Vergleich anzustellen, guck dir mal ruby an.
http://tryruby.hobix.com/ - sehr cool, und du must nichtmal was installieren
http://whytheluckystiff.net/ruby/pickaxe/ - ein freies Buch mit dem man die Grundlagen schnell lernt
Henning
On Fri, Dec 01, 2006 at 10:25:30PM +0100, Thomas Guettler wrote:
Hallo,
... und dachte, es könnte vielleicht jemanden interessieren:
dann mach ich gleich mal mit ;)
Also ich selbst benutzte Perl nun schon eine ganze Weile (ich glaube, als ich angefangen habe Perl zu lernen, konnte man noch legal Perl4 Bücher im Buchladen kaufen), dennoch habe ich mir in der letzten Woche nun doch mal Python angeschaut... (keine Ahnung warum ich es noch nicht eher gemacht habe, vielleicht Angst vor Veränderung?)
Wenn ich mir Thomas' Vergelich zwischen Perl und Python in Ruhe bis zu Ende durchlese (auch wenn es als Perl-Fan an manchen Stellen schwer fällt ;) muss ich sagen, dass er im Großen und Ganzen Recht hat.
Es fühlt sich für mich so an, als würde man bei Python Klarheit und Eindeutigkeit auf Kosten von Kompaktheit und Vielfälltigkeit bekommen.
Das man auch in Perl übersichtliche und gutwartbare Programme schreiben kann, davon bin ich überzeugt (siehe auch [1]). Allerdings glaube ich, dass man dazu auch eine Menge Erfahrung braucht. Hier macht es sich Python leichter, es beschneidet den Programmierer in seiner Freiheit und hilft so Fehler und Uneindeutigkeiten von vornherein zu vermeiden.
Meiner Meinung nach ist Perl wesentlich individueller. Quellcode von unterschiedlichen Menschen sieht sehr oft auch unterschiedlich aus. Ich merke manchmal sogar an mir selbst, dass ich gleiche Probleme an verschiedenen Tagen der Woche auf ganz unteschiedliche Art und Weise in Perl löse (Vielleicht bin ich ja ein bissschen schizophren?). Soetwas kann einen manchmal auch verunsichern!
Weiterhin würde ich unterstellen, dass Perl auch nicht so einfach projektkombatibel ist. Damit meine ich die Arbeit von mehreren Entwicklern am gleichen Quellcode. Aus eigener Erfahrung kann ich sagen, dass man in so einem Szenario viel Zeit damit verbringt, sich über den Quellcode der anderen zu ,,ärgern'', weil er z.B. zwei Zeilen länger als die eigene Version ist, oder ein Zwischenvariable zu viel nutzt. Anschließend fängt man dann an, den Quellecode zu verändern... kurzum, man hätte auch gleich alles selbst machen können.
Damit Projekte mit Perl funktionieren, sind klare Regeln und ein einheitliches (hohes) Sprachniveau notwendig! Das ist in der Praxis leider oft nicht gegeben. :(
Insofern halte ich Python auch für pädagogisch sinnvoller. Der Programmierneuling wird am Anfang vom Interpreter gezwungen, sich an bestimmte Regeln zu halten (z.B. Einrückung). Die Beschränktheit der möglichen Lösungen eines Problems in Python schafft Sicherheit.
Sicherlich ist das für uns ,,Perlprofis'' kein Argument, schließlich kennen wir unsere Sprache sehr gut und wissen auch nachts im Schlaf, was der Unterschied zwischen ,,eq'' und ,,=='' ist. Allerdings nützt das in der Realität leider wenig, da man oft mit Menschen zusammenarbeitet, die nicht ganz so versiert sind.
Ein Beispiel aus dem Leben: Mein Mitbewohner (angehender Informatiker) musste im 3. Semster eine Projekt beackern, bei dem es um Messdatenauswertung und schliessende Visualisierung mit gnuplot ging. Das ganze sollte in Python realisiert werden. Dieses Projekt war auch gleichzeitig sein erster Berührungspunkt mit Python. (Interesanterweise scheinen Uni-Informatiker sowieso standardmäßig ziemlich wenig mit praktischer Kodierung zu tun zu haben ;) Der Quellcode der entstand, war für das erste mal durchaus okay, vertändlich und wiederverwendbar.
Meine These: Hätte er es in Perl kodiert, hätte man es ungesehen wegschmeissen können.
Hier noch ein paar Gedanken zum Punkt: Wie ich Python in Zukunft einsetzen werde.
Für größere Projekte, die perspektivisch vielleicht in C/C++ kodiert werden sollen, ist es zum Prototyping meiner Meinung nach besser geeignet als Perl. Wenn es am Ende nicht unbedingt um Performance geht, ist eine Überführung in eine kompilierte Sprache wahrscheinlich meistens sogar unnötig. Pythons standardmäßig stärkere OOP punktet hier im Vergleich zu Perl. Gestern habe ich z.B. ein bisschen mit QT für Python herumgespielt. Wenn man in QT/C++ fit ist, weiss man spätestens nach dem zweiten QT/Python Beispiel, wie der Hase läuft und kann intuitiv und schnell loslegen. Python scheint mir momentan auch mehr Bindings zu C/C++-Biliotheken zu haben. Somit kann man also auch in Python durchaus schnellen Code generieren.
Auf der anderen Seite habe ich wahrscheinlich auch nicht immer Lust, in jedem kleinen Script mit Regulären Ausdrücken, erst ein Compile/Match druchzuführen. Das geht in Perl dann doch wesentlich einfacher.
Desweiteren werden ja einige der Kritikpunkte mit Perl6 wirklich behoben werden (siehe auch [2]).
Allseits noch ein schönes Wochenende! Marcus
-- [1] http://www.oreilly.de/catalog/perlbp/ [2] http://www-user.tu-chemnitz.de/~maob/lectures/perl6-essentials.html
naja, a fool with a tool is still a fool. Egal ob mit perl oder python. Ich bin mir nahezu 100% sicher dass ein Programmierer ohne Konzept mit python genauso baden geht wie mit perl. Und einruecken kann man ja auch in perl :-)
On Sunday 03 December 2006 16:40, Frank Gerlach wrote:
naja, a fool with a tool is still a fool. Egal ob mit perl oder python.
Schöner Sprachmix. Dem kann ich auch: give him enough rope to hang himself, but never enough to hang everybody else too!
Ich bin mir nahezu 100% sicher dass ein Programmierer ohne Konzept mit python genauso baden geht wie mit perl.
Baden gehen bedeutet erstmal dass es nass wird. Nicht dass man absäuft. Du würdest Dich wundern wie gut einige Projekte schwimmen... ;-)
F: Was ist eigentlich der Unterschied zwischen Freunden und Kollegen? A: Freunde kann man sich aussuchen!
Und einruecken kann man ja auch in perl :-)
Ja, aber es kostet mehr Überwindung.
Um bei Deinem Bild von oben zu bleiben: ich sehe einen Idioten lieber mit einem Fuchsschwanz als mit einer Zimmermannskreissäge unterwegs - die "Kollateralschäden" sind geringer...
Konrad
lug-dd@mailman.schlittermann.de