Programmierer auf der Suche nach Code

02.04.2007

Wer selber programmiert, gerät häufig in Situationen, in denen ein konkretes Code-Beispiel nützlich wäre. Das kann beim Lösen eigener Aufgabenstellungen helfen, oder es kann zumindest etwas Licht ins Dunkel einer Funktion, einer Methode, eines Operators oder Statements bringen.

Für Programmierer auf der Suche nach Code-Beispielen bietet Google im Rahmen seiner Umorientierung auf ein semantisches Netz eine spezielle Code-Suche an. Die entsprechende Suchseite ist unter {http://www.google.com/codesearch www.google.com/codesearch] zu finden.

Die Code-Suche arbeitet per Default mit regulären Ausdrücken. Nun ist deren Syntax nicht jedermanns Sache, doch nur so wird wirklich präzises Suchen möglich. Allerdings sind auch literale Zeichenketten als Suchausdruck erlaubt. Dazu kommen Syntax-Möglichkeiten, um die Suche auf bestimmte Programmiersprachen oder Dateitypen zu beschränken. Die Suchmöglichkeiten sind auf der Suchstartseite erläutert.

Nehmen wir ein Beispiel. Wer schon mal mit der Funktion <code>pack</code> zu tun gehabt hat, weiß, dass deren Syntax und Möglichkeiten sich nicht gleich jedem erschließen. In Sprachen wie Perl ist diese Funktion jedoch beispielsweise bestens geeignet, um eine UU-Enkodierung auf eine Zeichenkette anzuwenden. In das Suchfeld von Google's CodeSearch geben wir ein:

lang:"perl" \spack\("u"

Präsentiert wird uns dieses Ergebnis. Zu jedem gefundenen Perlscript, in dem pack("u" vorkommt, werden entsprechende Code-Ausschnitte in der Ergebnisanzeige der Suchtreffer gleich angezeigt. Die gefundenen Perlscripts sind anklickbar und führen zu vollständigen Listings der jeweiligen Scripts. Darin sind die gefundenen Suchtreffer nochmals optisch hervorgehoben.

Ein zweites Beispiel: wer hier fleißig mitliest, kennt das Tutorial zu Mikroformaten. Nun mag ein solches Tutorial beim Einstieg in die Materie helfen, doch es kann sicher nicht alle Frage beantworten. Angenommen, wir möchten ein paar konkrete Beispiele zu class="dtstart" (betrifft das hCalendar-Mikfoformat) sehen. Wir geben in der CodeSearch ein:

\sclass="dtstart"

In diesem Fall haben wir auf die Angabe der Sprache verzichtet, weil sich herausgestellt hat, dass auf diese Weise mehr Ergebnisse zustande kommen. Der Grund ist, dass HTML eben auch innerhalb von Programmiersprachen wie PHP häufig als Output vorkommt.

Das Beispiel zeigt aber auch, dass die Code-Bibliothek, die Google bislang zusammengetragen hat, noch nicht so umfangreich ist, wie das wohl später einmal sein soll. Kein Wunder, denn die Code-Suche befindet sich wie viele der anderen Google-Services noch im Beta-Stadium.

Und wie sucht sich die Code-Suche ihre Listings zusammen? Zum einen durch gewöhnliches Crawling, also durch das, was der Google-Robot tut, wenn er Webseiten besucht. Weitere Listings finden ihren Eingang in das Archiv der Code-Suche durch explizites Hinzufügen. Google bietet dazu ein Formular zum Beitragen von Code an.

Die Google Code Search hat aber, als sie im Oktober 2006 online ging, auch Bedenken ausgelöst. Vor allem wenn es dem Google-Robot gelingt, an den Quelltext etwa von PHP-Scripts zu kommen, die innerhalb der Document Root eines Webservers liegen, könnten ungewollt sensible Daten in das öffentlich durchsuchbare Archiv gelangen, beispielsweise Datenbankzugangsdaten, die im Script kodiert sind. Passieren kann ein solches Versehen, wenn aus irgendwelchen Gründen Backups von Webanwendungen in Form von GZIP- oder TAR-Archiven innerhalb der Document Root abgelegt sind, oder wenn — möglicherweise nur vorübergehend &mdash; einmal die Webserverkonfiguration fehlerhaft ist und aufgerufene Scripts nicht ausgeführt, sondern im Quelltext an den aufrufenden Client ausgeliefert werden.

Wenn Sie selber glauben, über lehrreiche Listings zu verfügen, die Sie gerne mit anderen teilen möchten, dann ist die Form des Veröffentlichens über das erwähnte Formular sicher eine geeignete Form.

Lesenswert zu diesem Thema:

Und last but not least natürlich die Google Code-Suche nach Bill Gates


Kommentare

Neuen Kommentar hinzufügen
oder Anmelden als Wikidot User
(wird nicht veröffentlicht)
- +
Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License