Document

Werbung
Geschichte
Das World Wide Web steckt voller Dynamik. Dabei interessiert es den Surfer nicht, wie
die Seiten generiert werden. Der Webautor dagegen muss sich entscheiden, ob er mit
einfachem CGI, Perl, PHP, ASP oder Java arbeiten will.
Nachdem das Web seinen Anfang als verteiltes Hypertext-System genommen hat, ist schon
seit langem der Trend offensichtlich, es als Plattform zur Applikationsentwicklung zu nutzen.
Die eigentlichen Hypertext-Aspekte treten (bedauerlicherweise) immer mehr in den
Hintergrund, und einer der wichtigsten Aspekte von Webtechniken ist heute ihre
Integrationsfähigkeit in bestehende IT-Lösungen und -Infrastrukturen. Dieser Artikel stellt die
populärsten Ansätze zur Anbindung von Applikationen an Webserver vor.
Immer mehr verdrängen dynamische Webinhalte die statischen Dokumente. Die beiden
Hauptgründe dafür sind die Reaktion auf sich verändernde Inhalte sowie auf unterschiedliche
Anforderungen seitens der Inhaltskonsumenten, sei es aufgrund von Benutzerprofilen oder
browserspezifischen Anpassungen.
Die einfachste und älteste Möglichkeit, dynamische Webseiten zu generieren, bietet das
Common Gateway Interface (CGI). CGI ist eine standardisierte Schnittstelle dafür, wie
Webserver und externe Programme, die dynamische Inhalte generieren, miteinander
kommunizieren. Der Vorteil dieser Lösung ist die komplette Unabhängigkeit von der
Programmiersprache, denn jede Sprache, die Zugriff auf die Umgebungsvariablen des
Systems bietet und das Lesen von der Standardeingabe sowie das Schreiben auf die
Standardausgabe unterstützt, ist für CGI geeignet. Zudem unterstützen alle Webserver CGI.
Für eine schnelle und komfortable Programmentwicklung setzten Webmaster anfangs vor
allem Script-Sprachen ein, die bereits zur Automatisierung von
Systemadministrationsaufgaben unter Unix verwendet wurden, beispielsweise Shell-Scripts,
Perl oder Tcl. Da Webseiten jedoch typischerweise sowohl aus dynamischen, als auch zu
einem großen Teil aus statischen Inhalten bestehen, hat die Verwendung von CGI-Scripts
zur dynamischen Seitengenerierung einen inhärenten Nachteil: Das Script muss jeweils den
ganzen HTML-Quellcode ausgeben, unabhängig davon, ob dieser dynamisch ist oder nicht.
Eine elegantere Lösung wäre die Integration der Scripts in den HTML-Quellcode, sodass die
dynamischen Elemente in den statischen HTML-Quellcode eingebettet werden und eine
Interpretation auf dem Webserver auslösen, bevor er die Seite an den Browser sendet.
Verschiedene konkurrierende Ansätze basieren auf der direkten Einbettung des
ausführbaren Script-Codes in HTML. Beispiele sind Microsofts Active Server Pages (ASP),
PHP, Embperl oder Java Server Pages (JSP), wobei jeder Ansatz seine spezifischen
Stärken und Schwächen hat.
Geschichte von Perl
Programmiersprachen gibt es schon seit mehreren Jahrzehnten. Perl, das in der Mitte der
50er Jahre herauskam, ist unter den bekanntesten Programmiersprachen wahrscheinlich die
Jüngste.
Der Erfinder von Perl war ein Systemprogrammierer, namens Larry Wall, der eine ganze
Menge an Aufgaben in der Systemverwaltung zu erledigen hatte und dem dafür aber keine
geeignete Programmiersprache zur Verfügung stand. Seine Firma verfügte über zwei
Gruppen von Workstations, jeweils eine an der West-und eine an der Ostküste. Diese
Workstations waren durch eine langsame Modemleitung miteinander verbunden. Der
Netzmanager wollte nun diese beiden Gruppen von einer zentralen Stelle aus verwalten.
Prinzipiell entsprang Perl also einer Notwendigkeit. Larry Wall benötigte eine Sprache, die
ein Paket Textdateien öffnen und lesen konnte, um dann neue Dateien zu erzeugen, die
Berichte über die Originaldateien darstellen. Sicher hätte er auch C benutzen können, die
seinerzeit bekannteste Sprache, aber C tut sich im Umgang mit Texten schwer. So erschuf
Larry Wall also die erste Version von Perl. Der Name kommt von Practical Extraction And
Report Language.
Nach dem Larry Wall die Firma verlassen hatte, stellte er seine neugeschaffene Sprache
kostenfrei ins Internet und bekam positive Rückmeldungen, Verbesserungsvorschläge und
weitere Wünsche. Bald war Perl zu dem geworden, was es heute ist.
Geschichte von PHP
PHP hat in den letzten Jahren einen langen Weg hinter sich, und zu einer der bekanntesten
Sprachen für das Web zu werden, war keine einfache Aufgabe. Wenn Sie daran interessiert
sind kurz zu sehen, wie PHP zu dem gewachsen ist was es heute ist, dann lesen Sie weiter.
Die Geschichte von PHP
PHP/FI
PHP ist der Nachfolger eines älteren Produktes, PHP/FI. PHP/FI wurde 1995 von Rasmus
Lerdorf geschaffen. Ursprünglich war PHP/FI ein Set von Perl Skripten zur Erfassung der
Zugriffe auf seinen Webauftritt. Er nannte dieses Set von Skripten 'Personal Home Page
Tools'. Als dann mehr Funktionalität benötigt wurde, schrieb Rasmus eine viel größere
Umsetzung in C, welche auch mit Datenbanken kommunizieren konnte, und den Benutzern
die Entwicklung einfacher dynamischer Webapplikationen ermöglichte. Rasmus entschloss
sich, den Sourcecode von PHP/FI zu veröffentlichen, sodass ihn jeder benutzen, von Fehlern
bereinigen, und weiterentwicklen konnte.
PHP/FI stand für Personal Home Page / Forms Interpreter, und beinhaltete manches an
Funktionalität des PHP wie wir es heute kennen. Es besaß Variablen wie in Perl, eine
automatische Interpretation von Formularvariablen und eine in HTML eingebettete Syntax.
Die Syntax selbst war der von Perl ähnlich, wenn auch viel eingeschränkter, einfach, und
ziemlich inkonsistent.
1997 war PHP/FI 2.0, die zweite Überarbeitung der C Implementierung, Kult für einige
tausend Benutzer weltweit (geschätzt). Etwa 50.000 Domains berichteten PHP/FI 2.0
installiert zu haben, was mit ca. 1% der Domains im Internet zu Buche schlug. Obwohl
manche Leute diesem Projekt ein Stück Code beisteuerten, war es insgesamt immer noch
ein Ein-Mann-Projekt.
PHP/FI 2.0 wurde im November 1997 offiziell freigegeben, nachdem es die meiste Zeit
seines Lebenszyklus als verschiedene Betaversionen verbracht hatte. Es wurde kurz danach
von den ersten Alphaversionen von PHP 3 abgelöst.
PHP 3
PHP 3.0 war die erste Version, die dem heutigen PHP sehr gleicht. Es wurde 1997 von Andi
Gutmans und Zeev Suraski neu geschrieben, nachdem PHP/FI 2.0 ihrer Meinung nach für
die Entwicklung ihrer eCommerce Applikation viel zu schwach war. Auf die Basis der
bestehenden Benutzer von PHP/FI aufbauend, entschieden sich Andi, Rasmus und Zeev zur
Kooperation, und kündigten PHP 3.0 als den offiziellen Nachfolger von PHP/FI 2.0 an, und
die Entwicklung von PHP/FI 2.0 wurde größtenteils eingestellt.
Eine der größten Stärken von PHP 3.0 waren die starken Erweiterungsmöglichkeiten.
Zusätzlich zu der soliden Infrastruktur für eine Menge an Datenbanken, Protokollen und
APIs, lockten vor allem die Erweiterungsmöglichkeiten von PHP 3 dutzende von Entwicklern
an, welche sich beteiligten, und neue Erweiterungsmodule einbrachten. Möglicherweise war
das der Schlüssel zu dem gewaltigen Erfolg von PHP 3.0. Weitere besondere Merkmale von
PHP 3.0 waren die Unterstützung für objektorientierte Syntax und die viel bessere sowie
konsistentere Sprachsyntax.
Die gesamte neue Sprache wurde unter einem neuen Namen veröffentlicht, welche die im
Namen PHP/FI 2.0 vorhandene Implizierung einer eingeschränkten persönlichen Nutzung
beseitigte. Es wurde einfach 'PHP' genannt, ein rekursives Akronym für PHP: Hypertext
Preprocessor.
Gegen Ende 1998 wuchs PHP auf eine installierte Basis von (geschätzten) zehntausenden
Benutzern und hunderttausenden Websites, auf denen PHP installiert war, heran. An seinem
Höhepunkt war PHP 3.0 auf etwa 10% der Webserver im Internet installiert.
PHP 3.0 wurde im Juni 1998 nach einer neunmonatigen öffentlichen Testphase offiziell
freigegeben.
PHP 4
Im Winter 1998, kurz nach der offiziellen Freigabe von PHP 3.0, begannen Andi Gutmans
und Zeev Suraski den Kern von PHP umzuschreiben. Die Ziele waren eine verbesserte
Leistung von komplexen Applikationen, und eine verbesserte Modularität des Basiscodes.
Solche Applikationen wurden durch die neuen Leistungsmerkmale von PHP 3.0, der
Unterstützung einer großen Auswahl von Datenbanken und APIs von Drittanbietern möglich
gemacht, aber PHP 3.0 war nicht dafür entworfen, solche komplexen Applikationen auch
effizient zu handhaben.
Die neue Engine, tituliert als 'Zend Engine' (aus den Vornamen Zeev und Andi gebildet),
entsprach diesen Zielen im Design erfolgreich, und wurde zum ersten Mal Mitte 1999
eingeführt. PHP 4.0, das auf dieser Engine, verbunden mit einer großen Auswahl an
zusätzlichen Leistungsmerkmalen basiert, wurde im Mai 2000 offiziell freigegeben, fast zwei
Jahre nach seinem Vorgänger PHP 3.0. Zusätzlich zu der stark verbesserten Leistung,
inkludierte PHP 4.0 andere wichtige Leistungsmerkmale, wie Unterstützung für viele weitere
Webserver, HTTP-Sessions, Ausgabepufferung, sicherere Wege im Umgang mit
Benutzereingaben, und verschiedene neue Sprachkonstrukte.
PHP 4 ist die derzeit aktuellste freigegebene Version von PHP. Die Arbeit an der
Modifikation und Verbesserung der Zend Engine zur Integration der neuen für PHP 5.0
entworfenen Leistungsmerkmale hat bereits begonnen.
Heute wird PHP von (schätzungsweise) hunderttausenden Entwicklern verwendet, und es
wird von mehreren Millionen Sites berichtet, auf welchen PHP installiert ist, was mit über
20% der Domains im Internet zu Buche schlägt.
Das Entwicklerteam von PHP umfasst dutzende Entwickler, sowie dutzende andere, welche
an PHP verwandten Projekten wie PEAR oder dem Dokumentationsprojekt arbeiten.
Perl
Wenn von Perl gesprochen wird muss auch das CGI behandelt werden.
CGI-Classic
CGI verdankt seine große Popularität dem einfachen Interface und der praktisch lückenlosen
Unterstützung seitens der Webserver. Der Zugriff auf dynamisch generierte Inhalte erfolgt für
den Benutzer transparent, das heißt, den dynamisch generierten Inhalt referenziert wie
üblich eine URL, die sich nach außen nicht von einem Verweis auf statischen Inhalt
unterscheidet. Der Begriff ‘Inhalt’ sei hier speziell betont, denn obwohl CGI-Scripts meistens
HTML generieren, sind auch beliebige andere Inhalte möglich und werden zum Beispiel im
Falle dynamischer Grafikgenerierung - wie bei Zugriffszählern - auch häufig verwendet. Bei
CGI-Scripts spielen FORM-Elemente in HTML-Seiten oft eine wichtige Rolle. Sie erlauben
es, einen Satz von Eingabedaten an das Script zu übermitteln.
Der Abruf einer mittels CGI-Script generierten Webseite funktioniert wie folgt: Der Webserver
erhält eine für das CGI-Script bestimmte Anfrage und startet darauf das CGI-Script als
separaten Prozess. Den Namen des auszuführenden Scripts entnimmt der Webserver dem
HTTP-Request. Den Request des Browsers, zusätzliche HTTP-Header sowie weitere
serverabhängige Variablen übergibt er dem CGI-Script über dessen Standardeingabe und
Umgebungsvariablen. Via Webserver kommuniziert das Script mit dem Browser, indem es
die für den Browser bestimmten Ausgaben auf die Standardausgabe schreibt. Das
Terminieren des Scripts schließt den Response ab.
Sicherlich liegt der große Vorteil von CGI in der Einfachheit des Mechanismus und in der
Generalität des Ansatzes. Das einfache Interface ist jedoch gleichzeitig die Schwäche von
CGI. Viele Konzepte, die für größere Webapplikationen, etwa im E-Commerce Umfeld, nötig
sind, fehlen - beispielsweise die Unterstützung von Sessions. Zudem ist die Erstellung von
einem eigenen Prozess pro Request zwar eine einfach zu implementierende, jedoch keine
besonders performante Lösung.
CGI-Classic mit Perl
Seit Beginn des Einsatzes von CGI-Scripts werden CGI und Perl oft in einem Atemzug
genannt, obwohl beide keinen direkten Zusammenhang haben. Perl ist eine objektorientierte
Programmiersprache, die auf den ersten Blick an Shell-Scripts oder C-Programme erinnert.
Doch sie ist weit mehr: Entstanden als Practical Extraction and Report Language (PERL),
eine Art integrierte Sprache für die Unix-Tools sed, awk und grep, hat sich Perl zu einer voll
ausgereiften Programmiersprache entwickelt, die auf große Beliebtheit stößt, nicht zuletzt,
weil sie als Open-Source-Projekt jedem kostenlos unter der ‘Artistic License’ zur Verfügung
steht. Zudem gibt es Portierungen für nahezu jede Plattform.
Perl zeichnet sich durch leistungsfähige Funktionen zur Textmanipulation aus, wie Suchen
und Ersetzen oder die Unterstützung von Regular Expressions, was in CGI-Scripts von
großem Nutzen ist. Gilt es, in einer Anwendung - wie dies bei CGI-Scripts üblich ist - andere
Programme aufzurufen, deren Ausgaben zu interpretieren und neu zu formatieren, dann ist
Perl sicher die erste Wahl. Ein weiterer Vorzug liegt in der ausdrucksstarken Syntax und den
leistungsfähigen Befehlen, die es erlauben, kurze Programme mit großem
Funktionsspektrum zu schreiben. Perls Fähigkeiten lassen sich durch in Perl oder C
geschriebene Module erweitern. Über die Jahre ist eine unüberblickbare Vielzahl von PerlModulen entstanden, die ein zentrales Repository, genannt CPAN (Comprehensive Perl
Archive Network), verwaltet.
Für Webapplikationen gibt es auf diverse Anwendungsszenarien zugeschnittene Module,
zum Beispiel Datenbankzugriff, LDAP, Mail, SMTP oder dynamische Grafikgenerierung.
Beim CGI-Einsatz erfreut sich das Modul CGI.pm grosser Beliebtheit. Es erleichtert die
Erstellung von CGI-Scripts erheblich durch den einfachen Zugriff auf HTML-FormularVariablen, HTTP-Header, die automatische Konversion von URL-kodierten Strings und die
Unterstützung von Cookies. Zudem gibt es Perl-Wrapper für diverse HTML-Konstrukte, um
die dynamische HTML-Generierung zu erleichtern.
Zweifelsohne ist Perl eine leistungsfähige und interessante Programmiersprache für
Webanwendungen. Da sie jedoch meist nicht in den Webserver integriert ist, sondern jeweils
als eigener Prozess gestartet wird, bringt dies die bekannten Nachteile von klassischen CGIScripts mit sich, das heißt den Overhead, verursacht durch das Erzeugen eines neuen
Prozesses und die fehlende Trennung zwischen dynamischem und statischem Inhalt.
PHP: Hypertext Preprocessor
PHP ist eine speziell auf Webapplikationen ausgerichtete Script-Sprache. Syntaktisch macht
sie starke Anleihen bei Perl und C, was Umsteigern die Einarbeitung erleichtert. Sie ist Open
Source, liegt in der GPL-Lizenz vor und lässt sich als Modul in Apache integrieren, was
Vorteile hinsichtlich der Performance bringt.
Von Anfang an speziell für das Server Side Scripting für Webapplikationen entworfen, vereint
PHP Elemente von Perl und diversen Bibliotheken für netzbasierte Dienste. Während die
meisten anderen Sprachen auf externe Module oder Libraries zurückgreifen, werden diese in
PHP direkt integriert.
Unter PHP stehen die üblichen Konstrukte aus C zur Verfügung: for(), if(), while() und so
weiter. Einen Teil der Syntax borgt sich PHP von Perl. Zusätzlich zu ein- und
mehrdimensionalen Arrays stehen assoziative Arrays - auch als Hash-Tabellen bekannt sowie Perl-kompatible Regular Expressions zur Verfügung. Zudem finden sich einfache
objektorientierte Ansätze (stark erweitert in PHP4).
Die wahre Stärke dieser Script-Sprache liegt aber in der Integration von spezifischen
Funktionen, wie sie üblicherweise für die dynamische Generierung von Webseiten benutzt
werden. Dazu gehören unter anderem die Generierung von GIF-Grafiken sowie die
dynamische Erstellung von PDF-Dokumenten.
Natürlich stellt PHP auch Methoden zur Behandlung von HTTP-Headern, zur Verwaltung von
Benutzer-Sessions und zum Kodieren beziehungsweise Dekodieren von URL-encoded
Strings bereit.
Durch die komfortable Anbindung an diverse Datenbanken wie Oracle, MySQL, Microsoft
SQL Server, Postgres oder über die ODBC-Schnittstelle (Open Database Connectivity)
eignet sich die Sprache ideal für datenbankgenerierte Webseiten. Ein weiterer Vorzug sind
die Schnittstellen zu verschiedenen, netzwerkbasierten Diensten, wie sie für typische
Webapplikationen häufig verwendet werden, zum Beispiel POP, IMAP, SMTP oder LDAP.
Die Integration eines XML-Parsers ermöglicht die Erstellung von XML-fähigen Applikationen,
die zur Zeit zunehmend an Bedeutung gewinnen.
Gegenüber Perl zeichnet sich PHP vor allem darin aus, dass die wesentlichen für typische
Webapplikationen benötigten Funktionen direkt integriert sind und nicht als externe Module
dazugeladen werden müssen. Obwohl die Sprache stark an Perl angelehnt ist, stellt sie nur
eine Untermenge von deren Möglichkeiten zur Verfügung. Trotzdem eignet sie sich auch für
größere Applikationen, was man an ihrer weiten Verbreitung erkennt - auch in komplexeren
Anwendungen. Hier sei nochmals explizit auf die neue Release PHP4 verwiesen, die viele
der bekannten Schwachstellen der Version 3 beseitigt. Beispielsweise gibt es jetzt eine
integrierte Session-Unterstützung.
ASP: Microsoft Active Server Pages
Microsofts Lösung zum Server Side Scripting heißt ASP. Die Unterstützung für Active Server
Pages ist direkt im Microsoft Internet Information Server (IIS ab Version 3) und in den
Personal-Webservern von Windows 95 beziehungsweise NT integriert und deshalb einfach
benutzbar.
Als Programmiersprache für ASP dienen wahlweise JScript (Microsofts Implementierung von
ECMAScript), VBScript (Visual Basic Script) oder eine beliebige andere Script-Sprache. Die
Verwendung von JScript vereinfacht dem Entwickler die Einarbeitung, da dieselbe Sprache
bereits zum Client Side Scripting in HTML zum Einsatz kommt. Der Funktionsumfang von
JScript ist jedoch relativ gering gehalten, die Sprache eignet sich nur beschränkt für größere
Webanwendungen. ASP-Scripts lassen sich über die Markierung mit den Tags <% ...script....
%> an beliebiger Stelle direkt in HTML einbetten. Im Gegensatz zu gewöhnlichen JScriptScripts im HTML-Source, die der Browser interpretiert, führt der Webserver den Code von
ASP-Scripts direkt aus.
ASP basiert auf einem ‘Objektmodell’, das heißt, die eigentliche Stärke von ASP liegt nicht in
den Fähigkeiten der verwendeten Script-Sprache, sondern im Einsatz von
Softwarekomponenten (COM-Komponenten), mit denen der Webprogrammierer komplexere
Funktionen im Baukastenprinzip zusammensetzen kann. Prinzipiell hat er auch die
Möglichkeit, eigene Scripting-fähige COM-Komponenten zu schreiben und in seinen ASPScripts zu nutzen. Typischerweise wird er aber eher auf ein Repertoire vorgefertigter
Komponenten von Microsoft oder anderen Anbietern zurückgreifen. Einige Objekte sind
bereits fest eingebaut. Diese erlauben klassische CGI-Funktionen, zum Beispiel
Verarbeitung von HTML-Formularen, Verwaltung von Cookies und Generieren von
Antwortseiten. Zudem stehen weiter gehende Funktionen zur Session-Verwaltung zur
Verfügung.
In einer Microsoft-Umgebung bietet sich die Verwendung von ASP an, da sich viele MSProdukte durch mitgelieferte Komponenten gut integrieren lassen und der Webserver
beispielsweise auf diese Weise Excel-Tabellen einfach darstellen kann. Zur Anbindung von
Datenbanken dient eine ODBC-Komponente.
Abschließende Betrachtungen
Welche der Lösungen die geeignetste für die Erstellung von Webapplikationen ist, hängt
stark von der Ausgangssituation und der Art der Zielanwendung ab. Obwohl die hier
vorgestellten Sprachen hinsichtlich der einfacheren Funktionen große Gemeinsamkeiten
aufweisen, unterscheiden sie sich grundlegend in ihrer Eignung für anspruchsvolle
Webapplikationen. Für weniger komplexe Programme ist zumeist ein einfacher Zugriff auf
die über HTML-Formulare übertragenen Parameter interessant. Da dynamische Inhalte
meist durch Abfrage einer externen Datenquelle (oft eine Datenbank) generiert werden, sind
einfache Anbindungen der Script-Sprache an diese Datenquellen wünschenswert.
Besonders häufig wird der Wunsch nach eine Anbindung an Datenbanken, LDAPAdressverzeichnisse oder E-Mail laut. Diese Funktionen können entweder in der Sprache
selbst integriert sein (wie bei PHP), oder Zusatzmodule bieten sie (Perl, ASP, Servlets).
Größere Applikationen, vornehmlich im E-Commerce-Bereich, führen den Benutzer über
mehrere Webseiten, auf denen er zum Beispiel verschiedene Artikel aussuchen sowie in
seinen Warenkorb legen und schließlich eine Bestellung abschicken kann. Dazu ist dem
Benutzer eine so genannte Session zugeordnet, das heißt, der Webserver speichert alle
Aktionen des Benutzers zwischen. Üblicherweise geschieht die Identifikation eines
Benutzers zur Verfolgung einer Session über Cookies oder über URL-Rewriting. Die zur
Session gehörigen Daten speichert der Webserver dazu temporär in einer Datenbank. Bei
komplexeren Applikationen ist es wünschenswert, den Programmierer von der Aufgabe des
expliziten Sicherns und Wiederherstellen der Session-Daten zu entbinden und ihm die
Illusion von persistenten Daten innerhalb einer Session zu geben. Im Weiteren sind
Funktionen erwünscht, welche die Existenz mehrerer paralleler Sessions verbergen, sodass
der Programmierer die Applikation so erstellen kann, als wäre nur jeweils ein einziger Client
aktiv. Hier unterscheiden sich die einzelnen Server-Side-Techniken deutlich. Während bei
CGI mit Perl oder PHP3 diese Funktionen nur mit größerem Aufwand erreichbar sind,
bringen PHP4, ASP und Servlets diese Fähigkeiten von Haus aus mit. Vor allem PHP4 und
Servlets bieten in dieser Hinsicht leistungsfähige Funktionen.
Fazit
Die vorgestellten Server-Side-Techniken stellen weder eine komplette Liste an verfügbaren
Lösungen dar, noch kann der Artikel eine abschließende Bewertung leisten, die sie in einer
eindeutigen Reihenfolge anordnet. Anliegen ist es vielmehr, einen Überblick über die derzeit
verbreitetsten Ansätze zu geben und damit bei der Frage als Entscheidungshilfe zu dienen,
welche Technik für eine spezifische Aufgabenstellung am geeignetsten ist. Um eine dem
Einzelfall angepasste Untersuchung kommt man jedoch nicht herum, und wie in vielen
anderen Bereichen des Webs bietet sich das Vorgehen an, nicht bei Null anzufangen,
sondern gründlich zu schauen, wo das gegebene Problem so oder in ähnlicher Form schon
aufgetaucht ist, und was man aus den dort gewählten Lösungen lernen kann.
Herunterladen