PHP.de Wissenssammlung

"Ich will das selbst schaffen"-Attitüde

Das Web ist groß und wird immer größer und auch die Ideen und Innovationen wachsen und wachsen und kein Ende ist in Sicht. In einigen Jahren, so prophezeihen renommierte Kristallkugelleser und Heise-Forenkommentatoren, wird sich der gesamte Wissensstand der Menschheit vervielfacht haben und die technischen Möglichkeiten werden die heutige Vorstellungskraft weit übersteigen. Seit der Erfindung des Rades konnte dem technischen Fortschritt der Menschheit kein Einhalt geboten, auch durch staatliche und kirchliche Repressionen nicht. Einzig eine Konstante existiert im Universum neben der Stetigkeit des Wandels, wie Leonardo di ser Piero aus Vinci schon sagte, und das ist der geistige Entwicklungsstand des Menschen selbst. Die folgende völlig quellen-, fakten- wie zweckfreie Studie der selbsternannten PHP.de-Soziologen soll diese unglaubliche Tatsache ein wenig näher beleuchten.

Die Innovation der Innovation

Seit Jahrhunderten, ach, seit Jahrtausenden, ist der Mensch um die Innovation der Innovation bemüht und erfindet stets das Neue erneut neu. Kaum wurde das Rad weltweit auf dem Markt eingeführt, so entstanden gleich Alternativformen über Alternativformen. Die darwinistische natürliche Selektion zog natürlich auch hier ihre Spuren und diverse sich als unpraktisch erweisende Formen, wie recht- oder dreieckige sowie nabenlos verschweißte Abkömmlinge, verschwanden recht schnell vom Markt, doch fand eine stetige Weiterentwicklung des Rades statt. Von der natürlichen Lehmfarbe entwickelte sich ein weites Spektrum an Rädern, wie blaue Räder, rote Räder, gelbe Räder, rostfarbene Räder und sogar fliederfarben Räder sind bereits auf einigen Nischenmärkten entdeckt worden (welche aber wegen eines US-Patents auf lilafarbene Fahrwerke nie groß weiter entwickelt wurden).

Nun ist das Rad (welches übrigens immer noch eine rege Weiterentwicklung als Community-Projekt mit alljährlichem Refactoring durchlebt) nicht die einzige Erfindung. Der technische Fortschritt, welcher dem menschlichen Erfindergeist geschuldet ist, geht auch ganz andere Wege und eine der großen Erfindungen der letzten Jahre ist der Digitalcomputer. Fachkundige Tüftler entwickelten vor nicht allzu langer Zeit (in kosmischen Maßstäben gerechnet, also gerade eben erst) das System der Bits und Bytes, welches wenigstens die Welt der westlichen Fortschrittsfundamentalisten vollkommen revolutionieren sollte. Einige kosmische Femtosekunden später waren auch die ersten Betriebssysteme geboren und bereits jetzt kann man zwischen Windows, Mac, BSD, ReactOS und Myriaden an Linux-Distributionen wählen. Ja, der Fortschritt ist nicht zu übersehen. Brauchte man vor wenigen Jahren noch einige Hundert Exabyte, um alle vorhandenen Linuxdistributionen auf einmal zu installieren, ist heute bereits die Yottabyte-Grenze weit überschritten (die grafische Oberfläche mal nicht eingerechnet). Ein ähnlich überwältigend vom Fortschritt kündendes Bild bietet sich bei den Programmiersprachen. Die derzeit noch überschaubare Anzahl lässt sich noch knapp an den Händen der Bürger der Vereinigten Staaten von Amerika abzählen, doch sollte die Entwicklung weiter so rasant voran in die Zukunft gehen, könnte die Auswahl in Zukunft noch deutlich ansteigen. Eine solche Vielfalt an Alternativen kann nur die Zukunft sein. An Monopolstellungen ist hier gar nicht zu denken. Jeder kann wählen, was ihm am besten gefällt und wenn das Gewünschte nicht dabei ist, dann stellt man sich einfach seine eigene Linuxdistribution zusammen, die Tools dafür existieren ja bereits. Und wem alle bisher entwickelten Programmiersprache nicht gefallen, der entwickelt sich seine eigene. Brainfuck ist hier ein gutes Referenzbeispiel.

Individuallösungen stellen die Zukunft dar

Nicht bloß in der Ausführung, auch in der Implementierung unterscheiden sich die Neuentwicklungen der Neuentwicklungen stets und bieten so eine große Bandbreite an Alternativlösungen. Man nehme bloß einmal folgendes Beispiel zur Ausgabe der Siebenerreihe:

$reihe = 7;
$wiederholungen = 10;
for ($i = 1; $i <= $wiederholungen; ++$i) {
    print $i . 'x' . $reihe . ' = ' . $i * $reihe . '<br>';
}

Dieser Code ist natürlich nicht der Stein der Weisen und lässt sich durch stetige Neuentwicklung und Reimplementierung immer weiter verbessern und optimieren. Im Folgenden bloß zwei weitere mögliche Implementierungen zur Referenz:

// Englische Implementierung
$series = 7;
$repeats = 10;
for ($j = 1; $j <= $repeats; ++$j) {
    print $j . 'x' . $series . ' = ' . $j * $series . '<br>';
}
// Italienische Implementierung
$serie = 7;
$replice = 10;
for ($k = 1; $k <= $replice; ++$k) {
    print $k . 'x' . $serie . ' = ' . $k * $serie . '<br>';
}

Die Innovation und der Fortschritt in der Verfeinerung der Technik ist nicht zu übersehen. Der große Vorteil an beiden Reimplementierungen ist außerdem, dass sie vollkommen transparent und für den Endbenutzer unsichtbar und somit vollkommen kompatibel zur Ausgangsimplementierung sind. Das nennt sich wahrer Fortschritt.

Frameworks und der technische Rückschritt

Dem allgemeinen Trend der Fortentwicklung der Technik steht wie in jeder Sache auch eine fundamental veranlagte Gegenfront entgegen, die sich auf den Fortschritt durch Konsistenz sowie Konservierung und Wiederverwertung althergebrachter Techniken beruft. Was sich anfangs anhört, wie das digitale schwarze Lager, entlarvt sich schnell als ebensolches. Die Fadscheinigkeit der Argumente ist nicht zu übersehen und die sogenannten „Frameworks“ entpuppen sich als Monster veralteter Technologien. Es ist wohl offensichtlich, dass der Fortschritt nicht gewährleistet werden kann, wenn die alten Technologien nicht stets neu erfunden werden. In einer modernen Welt sind Techniken von Gestern niemandem eine Hilfe und blockieren den allgemeinen Fortschrittstrend massiv durch das Mitschleppen alter nicht tagesaktueller Programmpakete und an dieser Stelle sollte sich jeder mal ernsthaft fragen, ob er nicht schon tausendfach eine bessere Version des alten Singleton-Patterns entwickelt hat.

Es ist offensichtlich, dass der Einsatz von Frameworks und Bibliotheken nicht empfohlen wird und hier sollte man sich nicht durch anders lautende Meinung dilettantischer Herkunft einnebeln lassen. Zu groß sind die Sicherheitslücken, die bereits millionenfach durch die Verwendung veralteter Software entstanden sind, zu groß der Einarbeitungsaufwand in fremden und ganz offensichtlich veralteten und schlecht geschriebenen Code (hier sollte sich jeder Programmierer stets auf die eigenen Kenntnisse verlassen, denn jeder Entwickler kann nur für sich selbst den optimalen Code schreiben, somit muss ein Code von einem relativen und subjektiven Standpunkt betrachtet werden). Darüberhinaus ist der Lerneffekt ungleich größer bei einer Neuimplementierung, denn wie eingangs schon erwähnt wurde, ist lediglich der menschliche Entwicklungsstand nach wie vor primitiv und muss so durch Bildung gefördert werden. Die Vorteile der Eigenimplementierung sind also nicht zu übersehen und es sollte auch immer bedacht werden: Monopole entstanden stets durch den Mangel an Alternativen, folglich soll jeder Entwickler dazu angehalten sein, eigene Implementierungen einer Lösung zu forcieren und anderen vorzuziehen. Aber natürlich gilt dies nicht nur für Frameworks, auch die Funktionen einer Programmiersprache bilden stets eine Abstraktion alter Lösungen, von denen man nicht immer weiß, ob sie zuverlässig und vor allem nach aktuellen Technikstandards arbeiten. Folglich sollte man mit den grundlegenden Kommandos diese stets neuimplementieren, die Wartbarkeit des Codes bis zum nächsten Rewrite wird dadurch enorm gesteigert, da sich Fehler leichter finden lassen. Ein Fehler in einer nativen Funktion ist hingegen stets schwer lokalisierbar. Der hierbei entstandene Mehraufwand lässt sich übrigens später abrechnen und wird vom Kunden gern als professionelle Leistung entsprechend vergütet. Dies sei dem geneigten Entwickler aber nur nebenbei als gut gemeinter Ratschlag mit an die Hand gegeben.

Resumé

Nach der Lektüre dieser Studie sollte nun jedem Entwickler klar sein, dass eine Eigenimplementierung bereits bestehender Lösungen in jedem Falle vorzuziehen ist, um Konflikte zu vermeiden und die Entwicklung durch Innovationsinnovation voranzutreiben. Es ist sicherlich nur eine Frage der Zeit, bis auch die letzten Frameworks endgültig vom Markt verschwunden sein werden. Es kann nicht Sinn und Zweck sein, auf alten Werten zu beharren, wenn das Neue ruft und lockt, denn merke: es geht immer besser, aktueller, schneller, schöner und eigener!

Dieser Beitrag ist fertiggestellt und wurde zuletzt von _cyrix_ bearbeitet.

An diesem Beitrag waren bisher beteiligt: Manko10, nikosch, _cyrix_