[Cologne-pm] Warum Perl?
Michael Lamertz
mike at lamertz.net
Tue Apr 1 09:34:22 CST 2003
Hey Cem,
die Reply hier ist in Hektik entstanden, also geniess' das alles mit
einem wenig Vorsicht...
On Mon, Mar 31, 2003 at 10:37:33PM +0200, cem.sakaryali at easi.de wrote:
> Hallo,
>
> Ich wuerde dies nutzen auch etwas Werbung fuer Perl zu machen
"Spread the word, Dude!"
> und moechte dabei kurz auflisten warum als sprache Perl benutzt wurde.
Na die Frage kannst wohl ausschliesslich Du (bzw. der Programmierer,
falls jmd. anderes) beantworten :)
> Meine Bitte an euch waere, mir zu helfen diese Auflistung zu erweitern.
> Also stellt euch die Frage:
>
> Warum Perl und nicht eine andere sprache?
>
> Fuer mich war es
> - mehr moeglichkeiten als awk
> - eine durchgehende logic (shell scripte)
> - frei und platform unabhaengig
* Auch wenn es immer wieder Irre gibt, die ganze Programme in awk
schreiben, so liegt awk's Hauptstaerke doch in der Filterung von
Dateien, abhaengig von bestimmten Signalworten.
Perl kann das zwar auch (Stichwort 'perl -an'), hoert da aber bei
weitem nicht auf.
* Der Vorteil gegenueber Shell ist die wesentlich hoehere Maechtigkeit.
Variablen in Shell zu manipulieren kann einem die Finger brechen (Muss
ich mehr sagen als `expr ...` ?!?). Sobald es an Probleme wie
Stringmanipulation geht kommt man ohne Hilfsprogramme (sed/awk) nicht
mehr aus.
Shell-Functions sind in keinster Weise vergleichbar mit Funktionen in
echten Programmiersprachen.
* Perl ist, durch die starke Integration der Regexp-Engine *extrem*
stark im verarbeiten von Textstreams.
* Wer einmal angefangen hat, seine Datenstrukturen in nested Hashes
abzulegen will's niemals mehr anders machen. Alle anderen Methoden
wirken hinterher schwerfaellig.
print $mitarbeiter->{Koeln}{Hauptfiliale}{Vertrieb}{Leiter}{Name};
> mir fehl leider die Erfahrung mit anderen Sprachen. Sodass ich
> kein Gefuehl habe ob Perl schneller zu lernen ist als andere Spachen.
> Oder ob man mit Perl schneller programmiert als mit anderen.
* Perl
Der eine oder andere wird jetzt moeglicherweise Einspruch einlegen,
aber Grundsaetzlich ist Perl IMO eine schwere Sprache.
Das gilt noch nicht fuer Einzeiler, aber sobald's an Referenzen und
so'n Kram geht wird's doch recht haarig.
"Context" ist in Perl ebenfalls extrem wichtig, und das einem
Anfaenger zu vermitteln ist nicht einfach:
Wieso gibt
print @array;
das Array aus und wieso steht hier in $size die Groesse?!?
$size = @array
Das Gespuer dafuer welcher Context wo greift muss man erst
entwickeln, oder immer wieder nachschlagen.
Zum Context kommt dann haeufit die Precedence, die teilweise
entscheidet in welchem Kontext sich ein Ausdruck befindet...
Fazit: Perl *ist* *nicht* einfach.
Auf der anderen Seite steht Perl's wirklich ausgezeichnete
*englische* Dokumentation. Sobald man
perldoc perl
perldoc perlfaq
perldoc perltoc
kennt steht einem eigentlich saemtliche notwendige Information auf
Knopfdruck zur Verfuegung.
Ich verweise Anfaenger eigentlich gerne in Richtung Python, da es
dort auch ganz gute Einfuehrungen gibt und ich die betreffende
Person dann nicht immer am Hals hab' :)
Perl ist eher 'was fuer alte Krieger :)
Zu den Vorteilen:
Regexp-Engine und Stream-Processing
Hashes fuer komplexe Datenstrukturen
Schnelle Develop/Test Zyklen, da kein Compilerlauf notwendig.
Grosse Auswahl an existierendem Code (CPAN)
Maechtige Library, voller Zugriff auf die komplette
System-Umgebung und C-Library
* Python
Klar lesbar, allerdings *sehr* verbose.
Extrem schnell zu lernen, da Syntax deadsimple.
http://www.freenetpages.co.uk/hp/alan.gauld/
Objektorientierung ist hier nicht so zwingend wie bei Java, faellt
aber sehr leicht beim Schreiben.
Einige Leute haben Horror vor dem Whitespace-Handling von Python,
aber das hat sich bei mir in der Praxis als unproblematisch
herausgestellt.
Regexps in Python sehen fuerchterlich aus.
* Java
Muss compiliert werden.
"Hello World" in Java ist zu lang und umstaendlich - und das gilt
auch fuer *alle* anderen kleinen Utilities die man schreiben will.
Sprache und API sind sehr stark verknuepft, so dass man Java
schlecht auf ein Minimum reduzieren und dann Deployen kann.
Ueberhaupt: In der Regel braucht man ein eigenes Programm um ein
anderes Java-Programm zu starten, da man in der Regel so ca. 1mio
Environment-Variablen setzen muss.
Java kommt (zumindest bis 1.3) selber nicht legal an das
Systemenvironment 'ran und ist somit als Systemsprache fuer mich
komplett inakzeptabel. Diese tatsache ist fuer mich doppelt
komisch, da man ohne ein riesen Environment Java-Programme
ueberhaupt nicht erst an's rennen bringt.
Fast alle Java-Apps die ich kenne liefern ihre eigene Runtime mit
aus, weil *niemand* vertraut, dass die korrekte Version bereits
installiert ist.
Auch wenn die Java-Leute mittlerweile Libs mit "Perl-Regular
Expressions" besitzen, ist deren Gebrauch furchtabr, genau wie bei
Python.
Stream-Processing ist umstaendlich
* C/C++
IMO Vollstaendig ander Zielgruppe.
> Die Praesentation ist für Ingenieure gedacht also hauptsaechlich
> Fortran leute oder kein programmiere.
Zum Thema Fortran faellt mir dann zumindest noch PDL ein
http://pdl.perl.org/
Das sollte fuer die Leute schon interessant sein.
Ok, das ist alles was mir so auf die Schnelle einfaellt...
--
Well, then let's give that Java-Wussie a beating... (me)
-=+ Join Cologne.pm at http://cologne.pm.org +=-
Michael Lamertz | +49 2234 204947 / +49 171 6900 310
Sandstr. 122 | mike at lamertz.net
50226 Frechen | http://www.lamertz.net
Germany | http://www.perl-ronin.de
More information about the Cologne-pm
mailing list