Die technische Informatik unterliegt einem ständigen Prozess der Veränderung und Fortentwicklung. Dieser Prozess erfasst selbstverständlich auch das Software-Engineering, das in den vergangenen Jahren tiefgreifende, ja fundamentale Veränderungen erfahren hat. Während in den 80er Jahren Programme meist kommerziell entwickelt und vertrieben wurden, führten die 90er Jahre eine neue Philosophie ein, die es zuvor schon gab, die sich aber erst jetzt, dank einiger wichtiger Impulse entwickeln und ausformen konnte. Es ist die Philosophie der freien Software, die für alle Menschen frei zugänglich ist. Frei heisst dabei nicht in erster Linie kostenlos, sondern frei im Sinne der Nutzung. Dem Anwender bleibt die Freiheit unbenommen, die Software anzuwenden, den Quelltext einzusehen und die Software selbst zu verändern und zu verwerten. Rund um die Entstehung und Weiterentwicklung eines Programmes bildet sich eine «Community», eine Gruppen von Menschen also, die sich an der Programmierung und Fehlersuche, der Dokumentation und der Portierung auf andere Plattformen, sowie dem Support beteiligt. Auch diese Community ist selbstverständlich offen; jeder der will, kann mitmachen!
Aber welche Impulse waren es, die den Nährboden bildeten, auf dem freie Software innerhalb weniger Jahre gedeihen, wachsen und blühen konnte. Gewiss spielt die weltweite Vernetzung eine bedeutende, wenn nicht zentrale Rolle in diesem Prozess, denn die Kommunikation spielt in einer Community eine essentielle Rolle, da die Mitglieder in aller Regel über den ganzen Globus verteilt sind. Ein anderer, kaum weniger wichtiger Impuls kam aus der Entwicklung freier Betriebssysteme, allen voran Linux und FreeBSD. Dies sind Projekte die nicht nur sehr umfangreich sind, sondern auch Sogwirkung haben: Software von anderen Betriebssystemen will portiert und den Gegebenheiten des neuen «OS» angepasst werden.
Es ist sicher nicht falsch, wenn ich nun behaupte, dass auch Programmiersprachen bedeutende Impulse und Anregungen für die Community geliefert haben. Für nahezu alle Programmiersprachen gibt es OpenSource Projekte. Ja viele existieren überhaupt nur als freie Sofware, haben also keine zweckgebundene (kommerzielle) Vergangenheit und entstanden aus dem Wunsch heraus, einen neuen Formalismus zu entwerfen, der mit den Schwächen älterer Programmiersprachen nicht mehr behaftet ist. So enstanden Python, PHP, Ruby und …Perl!
Larry Wall entwarf Perl als eine Synthese aus UNIX Tools und C, zum Manipulieren von Text- und Logdateien. Und wie es so oft geschieht: was im Kleinen beginnt, wächst innerhalb weniger Jahre zu einem Giganten heran. Genau dies geschah mit Perl, das heute zu einer der beliebtesten Programmiersprachen gehört. Nicht nur im Web- und Scriptingbereich. Aber wie konnte es zu diesem kometenhaften Aufstieg kommen? Wie bei der freien Software muss es bedeutende Impulse gegeben haben, welche Perl die Schubkraft zu diesem fantastischen Erfolg verliehen. Gewiss, Perl hatte sehr früh das nötige Rüstzeug: eine offene Architektur, Flexibilität und ein modulares Konzept, vermöge dessen die Sprache erweitert werden kann. Hier ein kurzes Exempel: Perl kennt im Kern keine Funktionen für den Zugriff auf Datenbanken. Also wurde ein Modulsystem entwickelt, das es einem Perlprogramm ermöglicht, transparent auf eine Vielzahl unterschiedlicher Datenbanken zuzugreifen.
Eine ebenso wichtige Rolle bildete aber auch die Bewegung der freien Software. Freie Software begünstigte den Erfolg von Perl. Perl wurde ein bedeutender Vertreter freier Sotware und fördert nun seinerseits die Idee freier Software.
Nimmt man Perl, das auf CPAN.org verfügbare Modulangebot und die Myriade der Hilfsprogramme zusammen, entsteht ein System, das so gut wie alles kann! Ein so grosser Funktionsumfang hat aber auch seinen Preis. Es kann schnell komplex werden und …wird es oft auch! Gewiss, Perl und die verfügbaren Module sind gut dokumentiert, der Hilfesuchende findet im Internet Berichte, Bücher und Foren, die eigentlich jede Frage beantworten (der Verfasser wurde stets fündig). Aber es wäre auch eine erfreuliche Erleichterung, wenn es Periodika gäbe, die regelmässig über Programmierbeispiele, über aktuelle Probleme, neue Produkte und ganz allgemein über Trends in der Community informieren. Oder anders formuliert: ein Magazin, das dem Perlprogrammierer die Information fixfertig auf dem Silbertablett serviert, garniert mit Berichten über wichtige Projekte, Symposien und Aktivitäten in der weiten Welt.
Nun, so ein Magazin gibt es seit knapp zwei Jahren, es nennt sich – wohl als Anspielung auf Perl Variablennamen – «$foo». Schöpfer und Herausgeber des Magazins ist Renée Bäcker aus Riedstadt. Renée ist selbst ein absolut begeisterter Perl-Programmierer, wie er selbst sagt und ein Mann, der gerne die Initiative ergreift und etwas Neues erschafft: so hat Renée mit Kollegen ein eigenes Unternehmen gegründet und ist ständig auf der Suche nach neuen Projekten. Und als er auf der Suche nach einem informativen Perl-Magazin war und nichts fand, das seinen Ansprüchen genügte, beschloss er, die Sache selbst in die Hand zu nehmen. Seit dem Frühjahr 2007 verlegt Renée Bäcker ein eigenes Perl-Magazin, das sich sehen lassen kann.
Wer $foo gerne gedruckt zuhause im Lehnsessel lesen möchte, der kann das viermal pro Jahr erscheinende Magazin als Print-Version abonnieren und erhält zugleich Zugang zum Abobereich, wo er alle Ausgaben auch als PDF herunterladen kann. Wer das Online-Abo bestellt, bezahlt etwas weniger, muss sich aber mit der PDF-Version begnügen.
Wer $foo das erste Mal in Händen hält, wird überrascht sein, denn auf mehr als 60 Seiten (Ausgabe Winter 2008) bekommt der Leser eine geballte Menge an Informationen geboten. Das in ein schönes Layout gefasste Angebot umspannt einen weiten Bogen: Programmierbeispiele, Praxisberichte, Moduleinführungen, Tips & Tricks und einiges mehr. Ermöglicht wird diese Vielfalt durch ein Autorenteam, zu dem fünf Mitglieder gehören. Werfen wir kurz einen Blick in die aktuelle Ausgabe, um einige Themen herauszugreifen.
Perl Schatztruhe – Gemäss $foo gibt es auf der Perl Modulbibliothek CPAN.org mehr als 50.000 Module – und jeden Tag würden es mehr. Was tut man aber, wenn von einem Modul dringend die aktuelle Version benötigt wird und der Zugriff auf CPAN nicht möglich ist? Antwort von Renée Bäcker: Indem man CPAN::Mini verwendet, einem Tool, das oft verwendete Perl Module lokal speichert und aktuell hält.
Logging für Perl-Programme – In einem weiteren Artikel gibt der zuvor genannte Verfasser eine detaillierte und gut verständliche Einführung in Log4Perl, einem Modul, der Programmlogs erstellt. Was im ersten Moment nicht sehr aufregend klingt, erweist sich bei näherer Betrachtung als essentiell wichtig. Denn: bei der Fehlersuche ist nichts so wichtig wie die Meldungen, die ein Programm während der Ausführung erzeugt.
SQL Statements abstrakt erzeugen – Die meisten Datenbanken werden heute mit SQL Kommandos gesteuert. Wie geht man nun aber vor, wenn aus Gründen der Portabilität SQL Kommandos wie „SELECT * FROM table WHERE…“ nicht «hardcodiert» werden sollen. Antwort: Indem SQL::Abstract verwendet wird. Dieser Modul gestattet es, Abfragen abstrakt zu formulieren. So werden in einer Variablenstruktur die zu durchsuchenden Tabellen und Spaltennamen angegeben, ergänzt durch einen Hash, der die Suchkriterien bestimmt. SQL::Abstract erzeugt daraus ein fertiges SQL Kommando, das nur noch an den Server gesendet werden muss.
Perl Tutorial – Herbert Breunung hat für $foo ein reichhaltiges und leicht verständliches Tutorial verfasst. In der aktuellen Ausgabe erscheint Teil 5 dieses Tutorials mit Captures und Subroutinen.
Die unendlichen Tiefen von $_ – Perl ist ein wahrer Meister, wenn es um’s Abkürzen geht. Das gefällt nicht allen! Bei Perl ist es in gewissen Situationen sogar möglich, den Namen einer Variablen ganz wegzulassen. Etwa in einer while-Struktur beim Lesen aus einer Datei. Als Platzhalter wird hier eine Variable mit dem kryptischen Namen $_ verwendet. $foo erläutert, wie mit dieser Variablen umgegangen werden sollte und weist auf Gefahren, aber auch auf Vorteile von $_ hin.
Für wen ist $foo? Das Magazin deckt ein breites Spektrum ab, es geht in die Tiefe der Technik, bietet also auch einem erfahrenen Programmierer etwas. Auf der anderen Seite finden auch Einsteiger viel Wissenswertes und eine Einführung in diese Programmiersprache, von der auch der Autors dieses Berichtes fasziniert ist. Ich arbeite seit 15 Jahren mit Perl und habe in der aktuellen Ausgabe von $foo eine spannende und anregende Lektüre gefunden.
Abschliessend noch ein Wort zum Theme Community. Auch $foo leistet seinen Teil. Das Magazin steht auch Dritten offen und nimmt Artikel gerne entgegen. Es wäre schön, wenn sich Autoren finden würden, die zu verschiedenen Aspekten rund um Perl etwas beitragen. Die $foo Verleger freuen sich auf jede Anfrage.