Perl oder Python?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
stevens
Beiträge: 91
Registriert: 01.02.2005 00:59:01
Wohnort: Zürich
Kontaktdaten:

Perl oder Python?

Beitrag von stevens » 01.02.2005 01:11:19

Hallo.

Ich beschäftige mich nun seit einiger Zeit mit Linux. Nachdem ich es bis anhin nur für kleinere Serversachen eingesetzt habe, wurde es nun vor ein paar Monaten auch zu meinem bevorzugten Desktopsystem. Da kommt es mir ganz gelegen, dass ich die Ausbildung zum Programmierer in Java mache :-)

Nun würde ich mir gerne noch eine passende Scriptsprache aneignen, denn irgendwie bin ich in letzter Zeit immer wieder über eine der beiden Sprachen Perl und Python gestolpert.

Jetzt frage ich mich, welche Sprache wohl sinnvoller wäre. Wo liegen die Vorteile und wo die Nachteile der jeweiligen Sprache? Welche Dinge lassen sich besonders gut und welche eher weniger gut realisieren? Ich habe beispielsweise (ohne genauer reinzusehen) Python-Scripts gesehen, die mit recht wenig Aufwand ganz "nette" GUIs zustande bringen. Von Perl hingegen bekomme ich immer wieder zu lesen, wie unglaublich mächtig und effizient die Sprache sei.

Tja... welche Sprache wird wohl dir richtige sein?
// GNU/Linux - Weil man sich Freunde nicht kaufen kann
// False Website // False Junksite // GPG Public Key // German-Bash

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.02.2005 02:09:11

(Edit: Willkommen im Forum!)

Kommt drauf an, was du lieber magst, als Java-Programmierer zieht es dich wohl eher zu Python.

Python hat eine sehr durchdachte Syntax und ist auch nach Monaten noch recht gut zu lesen. In Perl kann man zwar auch guten Code schreiben, man kann allerdings auch extrem unleserlichen Code schreiben.

Ich persönlich würde dir zu Python raten; die Standardbibliothek ist mindestens so mächtig wie die von Perl, und es ist meiner Meinung nach einfacher, C(++)-Routinen dynamisch nachzuladen.

Die Diskussion hatten wir aber schon häufiger, such mal im Forum nach Python Perl ;)

Es ist letzten Endes Geschmachkssache. Mir gefällt

Code: Alles auswählen

foo.replace("bar","baz")
besser als

Code: Alles auswählen

$foo =~ s/bar/baz/;
Wenn dir die kurze Schreibweise von Perl-Syntax besser gefällt, dir aber der Rest nicht ganz so gefällt, sieh' dir mal ruby an.

resi
Beiträge: 14
Registriert: 14.07.2003 15:25:11

Beitrag von resi » 01.02.2005 09:55:38

Wenn du keinen speziellen Grund hast, Perl einzusetzen, würde ich auf
alle Fälle zu Python raten. Ist eine sehr universelle Sprache.
Serverapplikationen sind damit ebensogut zu realisieren (Zope ist in
Python geschrieben) wie Desktop-Applikation. Für grafische Oberflächen
stehen Tk, WxPython/WxWindows, Qt/PyQt, etc. zur Verfügung. Als Java
Programmierer dürfte dich auch interessieren, dass es eine Python-
Impementierung in Java gibt, nämlich Jython. Kannst dann direkt aus deinem
Python Code Java Klassen / z.B auch Swing Klassen aufrufen. Jython hatte
erst kürzlich bei einer Abstimmung über Scriptspachen für Java das
Rennen gemacht.

Karl

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 01.02.2005 12:53:29

Und nicht zuletzt ist Python vielseitiger einsetzbar als Perl, zumindest was die Geräte angeht: Mittlerweile bietet selbst Nokia für seine Symbian-Handys ein Python-Kit an.

Und ich werde mir nach den Jahren Perl nun wohl auch mal Python genauer ansehen.

Hat jemand zufällig einen direkten Vergleich, was die Performance angeht (speziell bei vielen kleinen Dateioperationen, was ja nunmal Haupteinsatzgebiet von Perl ist)?

cu

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.02.2005 13:34:09

niemand hat geschrieben:Hat jemand zufällig einen direkten Vergleich, was die Performance angeht (speziell bei vielen kleinen Dateioperationen, was ja nunmal Haupteinsatzgebiet von Perl ist)?
http://shootout.alioth.debian.org/

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 01.02.2005 15:35:30

äääh, ich klinke mich hier unverschämterweise mal ein und stelle eine einfach klingende aber dennoch schwere frage:

wenn ich mir als neuling eine programmiersprache beibringen möchte, mit der ich plattformunabhängige, grafische applikationen in relativ kurzer zeit entwickeln kann und ich zugleich wartbaren code haben möchte - würde ich mich dann für "java" oder für "python" entscheiden?
"In den reichen Ländern hat die Freiheit gesiegt - mit all den schrecklichen Folgen, die das für die anderen mit sich bringt und noch bringen wird. Die Demokratie ist auf andere Epochen verschoben." (L. Canfora)

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 01.02.2005 15:45:59

Sicherlich Python. Java ist mehr für größere Applikationen ausgelegt. Das "in kurzer Zeit" ist damit weniger gegeben. Die anderen Punkte treffen bei beiden zu.

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 01.02.2005 16:07:57

Python wird auch für "Software rapid Prototyping" eingesetzt.
Hier auch noch ein netter Link zu Python im Vergleich mit anderen Sprachen
Was ist Python


Gruß

Dookie

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 01.02.2005 16:20:07

hmm, danke. das sieht gut aus - ich hatte insgeheim damit gerechnet, dass python herauskommt... :-)

thanx
"In den reichen Ländern hat die Freiheit gesiegt - mit all den schrecklichen Folgen, die das für die anderen mit sich bringt und noch bringen wird. Die Demokratie ist auf andere Epochen verschoben." (L. Canfora)

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 01.02.2005 16:32:41

Ich sag Java - die Basics zu lernen, ist nicht schlecht. Und Java macht es einem dann doch sehr einfach :)

cu

Benutzeravatar
stevens
Beiträge: 91
Registriert: 01.02.2005 00:59:01
Wohnort: Zürich
Kontaktdaten:

Beitrag von stevens » 01.02.2005 17:20:45

Danke erstmal für die ganzen Antworten. Ich liebäugelte vor allem auch deshalb mit Perl, weil es schon etwas älter und deshalb wohl (zumindest in der Unix/Linux-Welt) auch weitflächiger verfügbar sein dürfte. Aber wenn ich mir das hier so durchlese, scheinen die Tendenzen ja doch eher in Richtung Python zu gehen. Und aufgrund meiner Java-Wurzeln kommt mir die Syntax natürlich auch recht gelegen ;-)
// GNU/Linux - Weil man sich Freunde nicht kaufen kann
// False Website // False Junksite // GPG Public Key // German-Bash

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 01.02.2005 18:57:05

Na ja,

wir erstellen Applikationen sehr häufig in Java, aber benutzen auch sehr häufig Perl für Skripte, Testunterstützung und kleinere Applikationen, für die eine Java-Applikation etwas oversized währe oder nicht angedacht ist. Perl selber hat eine sehr breite Userbasis, auch aufgrund seines alters, aber auch aufgrund seiner Möglichkeiten (wie war das noch: schwieriges einfach und kompliziertes machbar zu machen... ;-).

Perl findet man inzwischen schon bei jeder Unix-Distribution standardmässig und schliesslich sind die Java-Regex nicht umsonst von Perl beeinflusst...

Perl bietet Dir aber auch die Möglichkeit, selber zu entscheiden, möchte ich Prozedural oder Objektorientiert das Skript schreiben. (Ok, Objektorientierung in Perl ist nur ein Aufsatz, man kann aber auch sehr gut dort sehen, wie OO in Programmen (Compilerbau) realisiert ist.)

Vieles kann man bestimmt auch von anderen Skriptsprachen sagen, aber ich persoenlich moechte Perl auf keinen Fall missen! Für mich eine der schoensten Scriptsprachen (musste sein, da in den Beitraegen vorher der Fokus doch zu stark auf Python gelegen hat ;-)

Gruss,
PuddleJumper.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.02.2005 19:07:51

puddlejumper hat geschrieben:schwieriges einfach und kompliziertes machbar zu machen...
Ich dachte, dass ist das Motto von Python...
Perl's Motto ist doch "Es gibt mehr als einen Weg" (von denen jeder kryptisch ist >-))

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 01.02.2005 19:19:37

s/(kryptisch) ist/$1 sein kann/;

Gruss,
PuddleJumper;-)

regedit
Beiträge: 10
Registriert: 23.07.2004 20:53:35

Beitrag von regedit » 01.02.2005 20:17:55

Verstehe ich es richtig, dass du gerade anfängst Java zu lernen? Ich würde nur eine Sprache auf einmal lernen. Ich programmiere schon seit längerem Java, und muss sagen, dass es immer wieder neue Sachen zu lernen gibt, und das Thema noch lange nicht erschöpft ist. Und ich muss meinem Kollegen zustimmen, als er sagte, als ich ihm mitteilte, dass ich Python lernen wollte, dass es, wenn ich es bauchen würde es immer noch früh genug wäre damit anzufangen.

Aber das ist alles eine Geschmacksfrage.

bye

resi
Beiträge: 14
Registriert: 14.07.2003 15:25:11

Beitrag von resi » 02.02.2005 10:28:14

PuddleJumper schrieb

-- Perl findet man inzwischen schon bei jeder Unix-Distribution standardmässig
-- und schliesslich sind die Java-Regex nicht umsonst von Perl beeinflusst...

Python findet man ebenso auf allen Distris. Die Regex von Perl wurden von Python
übernommen und sind dort genauso verfügbar.

-- Perl bietet Dir aber auch die Möglichkeit, selber zu entscheiden, möchte ich
-- Prozedural oder Objektorientiert das Skript schreiben.

trifft für Python genauso zu

-- Ok, Objektorientierung in Perl ist nur ein Aufsatz, man kann aber auch sehr
-- gut dort sehen, wie OO in Programmen (Compilerbau) realisiert ist.)

Trifft für Python nicht zu, da OO in Python vollwertig integriert ist.

-- Für mich eine der schoensten Scriptsprachen (musste sein, da in den
-- Beitraegen vorher der Fokus doch zu stark auf Python gelegen hat Wink

Sorry, aber wenn du Perl schön findest, hege ich den Verdacht, dass du noch
nie in Python programmiert hast ;.)

-- s/(kryptisch) ist/$1 sein kann/;

"kryptisch sein kann".replace("sein kann", "oft ist")

Gruß,
Karl.

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 02.02.2005 12:49:39

Nicht zu vergessen ist aber, dass man auch in Perl lesbaren Code produzieren kann. Ob man in Python kryptischen Code basteln kann, probiere ich nachher erstmal aus, hab's mir gerade erst gezogen und gebaut.

cu

julien
Beiträge: 1062
Registriert: 06.05.2002 19:53:05
Wohnort: Oberhessen

Beitrag von julien » 02.02.2005 13:13:06

Der Spruch, dass Perl ja so kryptisch sein, ist schon ziemlich abgedroschen :roll:
Man kann mit Perl sehr wohl lesbaren Code erzeugen.
Und dank Gtk2 Bindings kann man mit Perl auch wunderbar grafische Applikationen erstellen ;)
Man hat mit Perl mit Sicherheit nicht weniger Möglichkeiten als mit Python.

Benutzeravatar
chemosh
Beiträge: 146
Registriert: 17.12.2002 13:25:57
Wohnort: Oldenburg
Kontaktdaten:

Beitrag von chemosh » 02.02.2005 13:42:06

Wir haben uns in der Projektgruppe der Uni letztendlich auch für Python anstelle von Perl entschieden.
Aber nicht weil eine Sprache mächtiger ist als die andere, sondern weil in Python per default quasi eine bessere lesbarkeit des Codes bietet.

Zwar kann man auch in Perl gut lesbaren Code erzeugen, aber durch die Vorgaben bei Python ist das quasi schon miteingebaut ;)

Letztendlich ist und bleibt das aber eine Geschmackssache...

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 02.02.2005 15:09:08

Ich denke, egal welche Programmiersprache, man kann immer sauberen oder unsauberen Code schreiben ;)
Bei Perl ist das evtl. ein wenig einfacher als in anderen Sprachen.

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 02.02.2005 21:35:04

resi hat geschrieben: Python findet man ebenso auf allen Distris.
Solaris 9, installation von der Stange, hat zwar Perl (Version 5.6.1) aber kein Python. Es kann zwar nachinstalliert werden, aber die meisten Firmen setzten nach meinen Erfahrungen eher auf Perl anstatt auf andere Scriptsprachen.
Die Regex von Perl wurden von Python
übernommen und sind dort genauso verfügbar.
Jetzt kribbelts mich ja in den Fingern - und da ich gerade Webung sehe:
"und wer hat's erfunden" ;-) [sorry, nicht ernstgemeint!]
Sorry, aber wenn du Perl schön findest, hege ich den Verdacht, dass du noch
nie in Python programmiert hast ;.)
Da hast Du natürlich recht, aber für Objektorientierung habe ich für mich persoenlich halt Java und Smalltalk (Programmiersprachen sind ja nun mal auch sehr stark geschmacksache, weswegen ich z.B. auch kein C++ bzw. Simula benutze... und glücklicherweise auch nicht benutzen muss :-)

Gruss,
PuddleJumper.

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 12.02.2005 14:40:18

puddlejumper hat geschrieben:Solaris 9, installation von der Stange, hat zwar Perl (Version 5.6.1) aber kein Python. Es kann zwar nachinstalliert werden, aber die meisten Firmen setzten nach meinen Erfahrungen eher auf Perl anstatt auf andere Scriptsprachen.
Oha und mein SunOS 4.5 hat auch kein Python. Aber ich denke nicht, dass wir hier so wiele Sun Freunde haben, ich habe auf allen meinen Rechnern Python drauf, meist selbstkompiliert.
puddlejumper hat geschrieben:Jetzt kribbelts mich ja in den Fingern - und da ich gerade Webung sehe:
"und wer hat's erfunden" ;-) [sorry, nicht ernstgemeint!]
Naja, das ist Open Source, heißt also das man Dinge auch übernehmen kann. Außerdem sind diese gleibe ich nicht von Perl übernommen sondern einfach eine Implementation der traditionellen NFA Engine. Perl nutzt die ja auch. Und PHP mit PCRE (Perl Compatible Regualr Expression) genauso. Und Java, und JavaScript, und sed.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 12.02.2005 15:27:54

niemand hat geschrieben:Nicht zu vergessen ist aber, dass man auch in Perl lesbaren Code produzieren kann. Ob man in Python kryptischen Code basteln kann, probiere ich nachher erstmal aus, hab's mir gerade erst gezogen und gebaut.

cu
So, nachdem ich mich etwas in Python eingefuchst habe: Es ist kaum möglich, mit Python kryptischen Code zu erzeugen. Irgendwie ist da alles gut lesbar.

cu

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 12.02.2005 15:36:58

niemand hat geschrieben:Irgendwie ist da alles gut lesbar.
Nicht, wenn man sich Mühe gibt ;)
http://p-nand-q.com/python/obfuscated_python.html

Benutzeravatar
puddlejumper
Beiträge: 58
Registriert: 22.01.2005 00:29:52

Beitrag von puddlejumper » 12.02.2005 19:36:34

Leonidas hat geschrieben:Oha und mein SunOS 4.5 hat auch kein Python. Aber ich denke nicht, dass wir hier so wiele Sun Freunde haben, ich habe auf allen meinen Rechnern Python drauf, meist selbstkompiliert.
Och mannooo, ich wollte mich ja nur rechtfertigen, da ich in meinem ersten Posting von Unix-Systemen gesprochen hatte...
Leonidas hat geschrieben:Naja, das ist Open Source, heißt also das man Dinge auch übernehmen kann. Außerdem sind diese gleibe ich nicht von Perl übernommen sondern einfach eine Implementation der traditionellen NFA Engine. Perl nutzt die ja auch. Und PHP mit PCRE (Perl Compatible Regualr Expression) genauso. Und Java, und JavaScript, und sed.
Hab' mich ja auch nicht gegen das übernehmen beschwert, da ich die Regex-Version von Perl ziemlich genial finde!

Aber wie Du schon sagtest, es ist eine NFA Implementation. Und diese Implementation hat auch wieder ihre eigenen Erweiterungen/Änderungen. Wie bei vielen anderen NFA Implementierungen auch ... wobei es ja eigentlich kaum eine Implementierung in einem Programm gibt, die sich genau so verhält wie die in einem anderen... Und wenn das alles gleich währe warum heisst das dann bei PHP PCRE...

Und dann gibt es auch noch eine DFA Impl. (awk/gawk/lex/flex)

Gruss,
PuddleJumper.

Antworten