Was Perl einem Programmierer alles lehrt
Ich bin im Artikel über Zifferngruppierung kurz darauf eingegangen, dass ich in Perl auch nach neun Jahren immer noch weit vom Meisterstatus entfernt bin. Das könnte man so verstehen, dass Perl komplizierter sei als andere Sprachen. Meines Erachtens ist eher das Gegenteil der Fall; Perl bietet lediglich so viele Möglichkeiten, dass es deshalb viel länger dauert, bis man alle erforscht hat. Dafür lässt mich Perl aber auch viele Probleme um so vieles schneller und einfacher lösen als in anderen Sprachen.
Darüber hinaus bietet Perl aber auch noch weitaus mehr. Wer sich etwa einmal durch die Funktionsweisen von grep oder map gequält hat, versteht damit wesentliche Aspekte der funktionalen Programmierung. Zumindest wenn er sich vergegenwärtigt, dass mithilfe von Referenzen auf Subroutinen auch Closures leicht zu erschlagen sind.
Aber auch objektorientierte Programmierung ist in Perl leichter zu verstehen als etwa in Java. In Java ist Objektorientierung “einfach da” und scheint auf magische Art und Weise zu funktionieren. Allerdings bekomme ich als Programmierer nichts davon mit. Objektorientierung in Perl hingegen ist sehr transparent. Ich sehe deutlich besser wie etwa die Vererbung gehandhabt wird. Und damit verstehe ich auch, was denn woanders - etwa bei Java - hinter den Kulissen abläuft.
Perl zwingt den Programmierer dazu, sauberen Code zu schreiben. Jedenfalls dann, wenn der Programmierer immer wieder mal seinen alten Code anfassen muss. Wer, je nach Leidensfähigkeit, alten Code ein-, zwei- oder gar dreimal neugeschrieben hat, nur weil dieser alte Code so unsauber war, wird irgendwann anfangen, sauber zu programmieren. Sprachen, die in einer oberflächlichen Betrachtung deutlich übersichtlicher sind als Perl, zwingen den Programmierer nicht zu einem sauberen Stil. Denn in Python oder Java versteht man den alten Code auch so - zumindest halbwegs. Somit sinkt der Leidensdruck sauber zu arbeiten.
Als erste Programmiersprache würde ich Perl zwar keinem Einsteiger empfehlen; Perl ist aber die ideale Sprache für den, der sich bereits in anderen Sprachen eingearbeitet hat. Allerdings halte ich auch Python nicht wirklich für die ideale Einsteigersprache, auch wenn anderes das wohl anders sehen.

Save This Page
Zum Beispiel kann man in Perl mal einfach die Klasse eines Objektes wechseln:
my $foo = Foo->new;
bless $foo, ‘Bar’;
Und schon ist $foo ein Objekt der Klasse Bar
Die Objektorientierung in Java hat einen Vorteil, der den Programmierer zwingt bei OO zu bleiben. Man kann nicht auf “Interna” zugreifen. So muss man tatsächlich auf die getter/setter zurückgreifen, die die Klasse zur Verfügung stellt. In Perl kann man auf die innersten Innereien des Objekts zugreifen. Was leider manche Programmierer dazu verführt, um die Objektorientierung herum zu programmieren.
Nicht nur alter Code zwingt Perl-Programmierer zu sauberem Code. Es gibt einige Hilfen: das strict-Pragma, das warnings-Pragma, Perl::Critic, Perl::Tidy und B::Lint.
Wenn ein Unternehmen sauberen Perl-Code haben will, sollte es seinen Mitarbeiten in Codingguidelines sagen, dass strict, warnings und Perl::Critic Pflicht sind.
Larry Wall hat mal gesagt, dass durch die Möglichkeit, in Perl schauderhaften Code zu schreiben auch die Möglichkeit gegeben ist, saubereren Code zu schreiben als in jeder anderen Sprache.
Man entwickelt sich in der Regel ja auch im Laufe seines Programmierer-Daseins. Am Anfang ist es vielleicht “Cool” schlechten Code zu schreiben (oder man weiß es einfach nicht besser - so war es bei mir jedenfalls), aber nach und nach kommt man auf den Trichter, dass gewisse “Standard” nicht umsonst da sind. Ich denke, dass ich mittlerweile einigermaßen sauberen Code schreibe (außer bei Quick’n'Dirty-Programmen, die mir nur auf die Schnelle bei einem Problem helfen sollen und dann gleich wieder gelöscht werden).
Gruß,
Renée