Kreuvfs Allerweltsblog

2010-03-14

Reguläre Ausdrücke, 3. Auflage

Abgelegt unter Rezension,Software,Technologie von Kreuvf um 12:20:01

Rezensiert wird im folgenden das Buch „Reguläre Ausdrücke, 3. Auflage“ von Jeffrey E. F. Friedl in der deutschen Übersetzung von Andreas Karrer. Das Buch ist im O’Reilly Verlag erschienen und unter der ISBN 987-3-89721-720-1 auffindbar.

Zu dem Buch bin ich gekommen, nachdem ich im Jahre 2007 in der Dokumentation zum Apache-Webserver auf „PCRE“ gestoßen war. Auch wenn ich anfangs nicht viel davon verstand, so war doch mein Interesse geweckt an der weiten Welt der regulären Ausdrücke. Auf das Buch bin ich dann dadurch gestoßen, dass es einfach überall verlinkt war, wenn es um Literatur zu regulären Ausdrücken ging. Und das kann ich vorweg sagen: Die Investition lohnt sich.

Anders als bei meiner ersten Rezension werde ich dieses Mal auf die Darstellung negativer Seiten verzichten. Der Grund dafür ist, dass ich absolut nichts an diesem Buch auszusetzen habe bis auf ausgesprochen wenige Tippfehler, die die Qualität aber keineswegs schmälern.

Gute Seiten

Der Autor versteht es von Anfang an in einem lockeren erzählerischen Stil mit dem Thema umzugehen. Dies ist auch bei teils sehr trockenen Abschnitten stets gelungen. Ebenfalls merkt man, dass der Autor weiß, wovon er schreibt. Es kam mir niemals so vor als würde sich der Autor um die Erklärung einer Sache drücken wollen.

Die Zahl der Übungsaufgaben ist genau richtig und es werden auch exakt jene Dinge gefordert, die für den späteren Umgang mit regulären Ausdrücken entscheidend sind. Auch daran merkt man eindeutig, dass der Autor versteht, was er da schreibt. Und man merkt daran auch, dass sich der Autor die Mühe gemacht hat zu überlegen, wo es denn Knackpunkte im Verständnis geben kann und wie diese in eine fordernde Aufgabe umgewandelt werden können.

In den ersten 3 Kapiteln werden Grundlagen beschrieben, die Kapitel 4 bis 6 behandeln dann tiefergehende Themen, wobei mein persönliches Highlight Kapitel 6 ist, das sich um Effizienz- und Performancebetrachtungen dreht. Performance ist ein wiederkehrendes Thema, bei dem die einen sagen, dass es bei den heutigen Rechenleistungen ja unerheblich sei bestimmte Dinge zu optimieren, während die andere Seite dagegenhält, dass möglichst gute Performance immer angestrebt werden muss. Ich bin da ein Vertreter der Performancefans. Ein einfaches Beispiel ist das Durchsuchen der Warzone-2100-Quelltexte (.c- und .h-Dateien) mittels grep von der Kommandozeile aus. Verwende ich grep ohne den Schalter -i (Groß- und Kleinschreibung egal), so kann ich selbst auf meinem Computer (1 GHz) die gesamten Quelltexte in einem Augenblick durchsuchen, wenn der gesuchte Text ausschließlich aus Literalen besteht. Schalte ich -i dazu, so kann es bei entsprechend langen Texten (ab 10 Zeichen etwa) schon zu einer spürbaren Verringerung der Ausgabegeschwindigkeit kommen. Wird der gesuchte Text noch ein wenig länger, muss ich sogar über eine Sekunde auf das Ergebnis warten, was nicht mehr hinnehmbar ist.

Der Autor geht auf einen interessanten Fall ein, der nichtsdestotrotz realitätsnah ist und jemand schrieb mir mal, dass man sich heutzutage ja um Effizienz bei regulären Ausdrücken keine Sorge mehr zu machen brauchte. Ich konnte dies mit diesem Beispiel aus dem Buch widerlegen. Der Autor stellt an der entsprechenden Stelle (S. 232) garniert mit einer Portion Humor fest:

[…] Milde ausgedrückt, bedeutet das VIEL Arbeit. Auf meinem Rechner würde das etwa 50 Quintillionen Jahre dauern, plus/minus ein paar hundert Billionen Jahrtausende.1
[…]
1 Die angegebene Zeit ist aufgrund der Zahlen von anderen Benchmarks hochgerechnet; ich habe die Tests nicht wirklich so lange laufen lassen.

Es sind Dinge wie diese, die mir ein Schmunzeln auf die Lippen zaubern und den Charme dieses Buches ausmachen.

In den letzten Kapiteln werden verschiedene Programmier- und Skriptsprachen behandelt, wobei ich mich ausschließlich um PHP gekümmert habe. Der Autor erweitert die bestehenden PHP-Funktionen um eigene und gibt auch deren Quelltext an, sodass jeder diese weiteren Funktionen nutzen kann.

Es gibt sehr viele Kleinigkeiten, die ebenfalls zeigen, dass viel Zeit und Mühe und dieses Buch gefloßen sind: Die Typografie lässt keine Wünsche offen, zahlreiche Querverweise gestatten das schnelle Auffinden der relevanten Stelle, die Lösungen zu Übungen sind direkt auf der nächsten Seite, sodass man erst nach Umblättern die Lösung erfährt und nicht irgendwo am Ende des Buches zusammengefasst.

Fazit

Kaufbefehl! Wer sich ernsthaft für reguläre Ausdrücke interessiert, kommt um dieses Buch nicht herum. Mir hat es sehr bei der täglichen Arbeit geholfen und dafür gesorgt, dass ich nach Möglichkeit immer auf reguläre Ausdrücke zurückgreife, sofern dies möglich ist. Ich war erstaunt, als ich feststellte, dass sowohl Microsoft Office als auch OpenOffice.org beide reguläre Ausdrücke bei der Suche unterstützen. Aber auch sonst findet man immer wieder Anwendungsfälle für reguläre Ausdrücke, wo man sie vorher nicht vermutet hätte. Viel wichtiger aber: Probleme, die mir vorher unlösbar komplex erschienen, sind nun dank regulärer Ausdrücke sehr viel einfacher zu lösen.