[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