Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2008  »  10  »  Babylon zu fünft  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© Orlando Florin Rosu, fotolia.com

Populäre Programmiersprachen treten gegeneinander an

Babylon zu fünft

von Nils Magnus, Peter Kreußel
Erschienen im Linux-Magazin 2008/10

Kaum ein Thema trennt Entwickler so nachhaltig wie die Frage nach der besten Programmiersprache. Typisierung, Datenstrukturen, Freiheit in der Syntax oder Kürze des Code halten als Argumente her. Das Linux-Magazin hat prominenten Protagonisten von fünf populären Sprachen die gleiche Aufgabe gestellt.

Kleine Scharmützel am Entwicklerstammtisch zwischen den Anhängern unterschiedlicher Progammiersprachen sind zwar meist unterhaltsam, verlaufen aber in der Regel ergebnislos. Wirklich vereint ernsthafte Entwickler nur die allerletzte Erkenntniss, dass die Frage nach der einen, der einzigen, der universellen Programmiersprache eher akademischer Natur ist. Allgemeine Zustimmung findet da meist auch die These, dass sich unterschiedliche Sprachen für manche Anwendungsszenarien besser oder schlechter eignen als andere.

Um in diesen Sprachverwirrungen einen Überblick zu gewinnen, hat das Linux-Magazin prominente Entwickler gebeten, eine überschaubare Programmieraufgabe in ihrer Lieblingssprache zu lösen. Gefordert war, eine Textdatei neu zu sortieren, deren Fußnoten durcheinandergeraten sind (siehe Kasten "Die Spezifikation der Aufgabe"). Der Algorithmus zur Lösung sollte keinen Sprachpapst vor unlösbare Herausforderungen stellen, und die Teilnehmer sollten sich weniger in einem Programmierwettbewerb wähnen, sondern sich eher als Botschafter der Konzepte der unterschiedlichen Sprachen verstehen. Aus diesem Grund durften sie die Aufgabenstellungen in einem gewissen Grad variieren, wenn sie das glaubhaft rechtfertigen konnten.

Primär war also nicht, wer die Aufgabe mit den wenigsten Zeilen löst oder welcher Code am schnellsten läuft, sondern wie die in den Sprachen angelegten Denkmodelle sich in den Lösungen niederschlagen.

Die Spezifikation der
Aufgabe

Ein Text möge ungeordnete Fußnoten enthalten. Am Ende des Textes folgt ein getrennter Abschnitt, der auf die Verweise im Text Bezug nimmt. Jede Fußnote zeigt genau zu einem Verweiseintrag, es darf jedoch mehrere Fußnoten geben, die auf den gleichen Eintrag verweisen. In der Eingabedatei sind sowohl Fußnoten als auch die Verweiseinträge am Textende ungeordnet, beide beginnen nicht notwendigerweise mit 1, die Reihenfolge darf Lücken aufweisen. Die Lösung ist ein Programm, das die Fußnoten aufsteigend nummeriert.

Format

Die Eingabedatei besteht aus Text, kodiert im Format ISO-8859-15, und enthält Fußnoten der Form »[13]«. Die Fußnoten dürfen überall im Text stehen, allerdings steht der Verweis immer ungetrennt auf einer Zeile.

Die eigentlichen Einträge folgen am Ende des Textes nach der Markierung »@footnote:«. Alle Nummern in eckigen Klammern nach dem Marker sind folglich Verweisziele, keine Verweise.

Beispiel:

A great brown fox [13] jumped of a pile 
of lorem ipsum [4], [7]. He met with a 
silver penguin, browsing the Linux Kernel 
Mailinglist [3]. They debated other the 
question whether to start a C-program with 
"main (int argc, char **argv)" or with 
"main (int argc, char *argv[])". Square 
brackets annoyed them [9999].
@footnote:
[13] Al Fabetus: "On characters and animals", 1888, self published.
[4] Lorem Ipsum, <a href="http://en.wikipedia.org/wiki/Lorem_ipsum">UWeb Link</a>
[9999] Annoying Link.
[7] B. Fox: "More on Blind Text".
[3] Linux Kernel Maintainers: LKML

Die Aufgabenstellung bearbeitet eine einzelne Textdatei, deren Namen ihr der Anwender als Aufrufparameter nennt. Das Ergebnis dazu erhält er direkt auf der Standardausgabe. Die Texte können von sehr unterschiedlicher Länge sein, angefangen von einigen wenigen KBytes bis hin zu mehreren Hundert MBytes.

Die Nummerierung der Implementierung soll einer der beiden folgenden Varianten folgen oder beide ermöglichen:

  • Die Einträge im unteren Abschnitt sind aufsteigend ab 1
    nummeriert. Die Fußnoten tragen entsprechende Nummern, die
    diese Reihenfolge reflektieren.
  • Die Fußnoten im eigentlichen Text sind aufsteigend
    numeriert. Wenn mehrere Fußnoten auf den gleichen Eintrag
    zeigen, wiederholt sich im Text die Nummer des ersten Auftretens.
    Die Einträge im zweiten Textteil sortiert das Programm
    entsprechend um, sodass diese ebenfalls sortiert sind.

Fünf Kandidaten auf dem Prüfstand

Ins Feld zogen schließlich PHP, Perl, Java, Python und Java FX. Gern hätte die Redaktion auch Ruby und andere antreten lassen, allein es erklärten sich keine VIPs dafür bereit. Alle Lösungen, die dieser Artikel in der Reihenfolge ihres Eingangs in der Redaktion präsentiert, konnten die geforderte Aufgabe lösen, auch wenn einzelne Entwickler kleine Modifikationen vorgenommen haben. Der Test bewertet dabei aber nicht nur die programmiertechnische Korrektheit, sondern auch den Ressourcenverbrauch des Programms.

Ein Thinkpad X60s im 32-Bit-Modus unter einem Intel Core Duo L2400 mit 1,6 GHz diente als Testsystem. Den vorhandenen üppigen Speicherausbau von 3 GByte schöpfte allerdings keines der Programme aus. Für die Messung zogen die Tester eine 55 MByte große Datei heran, in die sie eine Million zufällige Fußnoten eingetragen hatten.

PHP

PHP ist eine für Webanwendungen optimierte Skriptsprache mit einer C-ähnlichen Syntax, die als vergleichsweise leicht zu erlernen gilt [1]. Die Sprache ist schwach typisiert, seit Version 4 (ab Mitte 2000) enthält PHP erste Sprachkonstrukte für objektorientierte Programmierung, die Version 5 (ab Mitte 2004) vervollständigt.

Viele verbreitete Webanwendungen wie Typo3 [2], Wordpress [3] oder Joomla [4] sind in PHP geschrieben. Der Repository-Crawler Ohloh.net [5] bescheinigt der Sprache mit 107 Kernentwicklern eines der größten Teams in der Open-Source-Welt. Als Mängel gelten Inkonsistenzen der Syntax wie unterschiedliche Parameterreihenfolgen bei Funktionen mit ähnlicher Aufgabe, das fehlen eines Bytecode-Cache, fehlende Thread-Sicherheit, was den Einsatz des Apache-MPM Worker ausschließt, sowie die erst für Ende 2008 in Version 6 erwartete durchgängige Unicode-Untersützung [6].

Der Einsender der PHP-Lösung, Zeev Suraski (siehe Abbildung 1), entwickelte 1998 zusammen mit Andi Gutmans PHP 3, das auf der Konzeption von Rasmus Lerdorf basierte.


Abbildung 1: Zeev Suraski gründete zuammen mit Andi Gutmanns die Firma Zend, die nach wie vor treibende Kraft hinter PHP ist.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Babylon zu fünft Populäre Programmiersprachen treten gegeneinander an
Frisch aufgebrüht Netbeans 6.0 und Eclipse 3.3 im Vergleich
Eurovision Bot Contest Über 120 Teilnehmer stürmen beim Programmierwettbewerb die Würfelbecher
Reiches Angebot Webentwicklung mit Java
Vom Thron gestürzt Die besten Lesereinsendungen des Programmierwettbewerbs
Tooltime Die besten zehn Eclipse-Plugins
Whitepaper
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)