Menü
Developer

Analyse: Facebook macht sich um PHP verdient

Seit Entstehung der Sprache kam PHP ohne Spezifikation aus (auch wenn etwa IBM bereits an diesem Umstand zu knabbern hatte). Jetzt hat Facebook der Community einen ersten Entwurf übergeben. Die Zeit wird zeigen, was sich daraus entwickelt.

vorlesen Drucken Kommentare lesen 77 Beiträge

Als PHP-Schöpfer Rasmus Lerdorf sich vor über 19 Jahren daran machte, das "Web-Problem" zu lösen, wusste er nicht, wie man eine Programmiersprache "richtig" entwirft und implementiert oder gar spezifiziert. Ebenso wie bei Python oder Ruby stellte bei PHP seit jeher die Standardimplementierung der Programmiersprache die Spezifikation derselben dar. Im Gegensatz dazu stehen Sprachen wie C, C++ oder C#, deren formale Spezifikationen Gremien und Institutionen wie ECMA oder ISO standardisieren. Der Erfolg von PHP – heute werden über 80 Prozent aller Webseiten in dieser Programmiersprache implementiert – zeigt, dass die pragmatische Herangehensweise Lerdorfs kein Hindernis war.

Eine Analyse von Sebastian Bergmann

Sebastian Bergmann ist Diplom-Informatiker und Mitgründer von thePHP.cc (The PHP Consulting Company). Er hat langjährige Erfahrung in Consulting, Coaching und Training für PHP-Entwickler.

mehr anzeigen

Das Fehlen einer formalen Spezifikation von Syntax und Semantik macht es allerdings für die Entwickler einer neuen Laufzeitumgebung für PHP sehr schwierig zu überprüfen, ob die eigene Implementierung kompatibel mit dem "Standard-PHP" ist. Über zwei Dutzend solcher alternativen Laufzeitumgebungen für PHP sind im letzten Jahrzehnt entstanden – und meist schnell wieder von der Bildfläche verschwunden. Aus den Alternativen stechen zwei besonders hervor: das von IBM um 2008 vorgestellte "Project Zero" (ein Compiler für PHP, der Java-Bytecode erzeugte) und die von Facebook unter dem Codenamen "HipHop for PHP" seit 2008 entwickelten alternativen Laufzeitumgebungen, deren aktuelle Inkarnation HHVM (HipHop Virtual Machine) ist.

Das Problem der fehlenden Sprachspezifikation ging IBM an, indem das Unternehmen die eigenen Entwickler Tausende von Tests für den PHP-Interpreter schreiben ließ. Sie wurden dem PHP-Projekt zur Verfügung gestellt und kamen dadurch beiden Projekten – der Entwicklung der Referenzimplementierung von PHP sowie der alternativen Implementierung von IBM – zugute. Für HHVM konnte Facebook natürlich ebenfalls auf diese Testsuite zurückgreifen. Unter dem Stichwort "Framework Parity" nutzen die Entwickler darüber hinaus die Testsuites populärer Anwendungen, Bibliotheken und Frameworks, die in PHP geschrieben sind. So stellen sie sicher, dass sich häufig genutzte PHP-Komponenten auf der HHVM genauso verhalten wie auf dem Standard-Interpreter.

Allerdings scheinen sich die Entwickler von Facebook nicht mehr mit Tests zufrieden geben zu wollen, um ihre Implementierung von PHP mit der Standardimplementierung zu vergleichen. Jedenfalls haben sie nun eine formale Spezifikation von Syntax und Semantik der Programmiersprache PHP vorgestellt. Ihren ersten Entwurf schrieb (finanziert und unterstützt durch Facebook) Rex Jaeschke, ein Industrie-Veteran in Sachen Standardisierung, der beispielsweise für Microsoft den ECMA-Standard für C# editiert. Eine präzise und vollständige Spezifikation von Syntax und Semantik der Programmiersprache PHP ist damit in greifbare Nähe gerückt. Die ersten Pull-Requests für die Spezifikation wurden bereits übernommen. Aber natürlich wird es noch einiger Arbeit bedürfen, bis die formale Spezifikation wirklich PHP widerspiegelt. Facebook hat versprochen, die Arbeit daran auch in Zukunft zu unterstützen.

Dokumentierte Prozesse oder formale Spezifikationen sind Aspekte der Softwareentwicklung, wie sie das PHP-Projekt lange Zeit nicht kannte. Während es beispielsweise für Java bereits sechs Jahre und für Python neun Jahre nach Vorstellung der Sprache einen akzeptierten und dokumentieren Prozess (JSR beziehungsweise PEP) für Änderungen und Erweiterungen gab, dauerte es bei PHP 13 Jahre. Erst seit 2008 gibt es einen RFC-Prozess ("Requests for Comments"). Die in PHP 5.4 eingeführten Traits waren damals das erste Sprachmerkmal, das ihn durchlaufen hat.

Seither werden Vorschläge für die Evolution von PHP idealerweise als RFC-Dokument veröffentlicht, zu dem neben einem Patch für die C-Quellen des PHP-Interpreters auch Dokumentation und Tests gehören. Direkt nach der Ankündigung der formalen Spezifikation von PHP durch Facebook begann auf der Entwickler-Mailingliste die Diskussion, wie sich die Existenz der Spezifikation in Zukunft auf den Entwicklungsprozess auswirken. Es ist zu wünschen – und abzusehen –, dass eine Änderung der Sprache in Zukunft nicht nur aus einem Patch für die C-Quellen besteht, sondern auch die Spezifikation entsprechend angepasst wird. Nur so lässt sich sicherstellen, dass sich Spezifikation und Implementierung gegenseitig widerspiegeln.

Facebooks Spezifikation von Syntax und Semantik von PHP ist für die PHP Community als sehr positiv zu bewerten. Sie wird es unter anderem ermöglichen, fehlende Testfälle für die Referenzimplementierung zu identifizieren und existierende zu verbessern. Darüber hinaus wird die Spezifikation Diskussionen über Syntax und Semantik von PHP vereinfachen und die Entwicklung neuer Sprachmerkmale beschleunigen sowie weniger anfällig für Fehler machen. Sie wird die Arbeit der Entwickler anderer PHP-Compiler ebenso vereinfachen, wie die der Hersteller von Werkzeugen für die statische Codeanalyse. Und letztlich kommt eine Spezifikation auch den Nutzern zugute, können sie die Mächtigkeit unterschiedlicher PHP-Implementierungen damit doch besser vergleichen.

Es ist lobenswert, dass Facebook seine Ressourcen für das Anstoßen der Entwicklung einer Spezifikation von PHP genutzt hat und die erste Fassung unter der Creative Commons Zero (CC0) Lizenz als "Public Domain Dedication" veröffentlicht – und damit sämtliche Rechte an ihr aufgibt. Als jemand, der seit über fünfzehn Jahren PHP einsetzt, im PHP-Projekt mitarbeitet und unter anderem Werkzeuge für die statische Analyse von PHP-Code entwickelt, freue ich mich sehr darüber. Auch wenn ich noch nicht weiß, warum Facebook das wirklich getan hat. Ich hoffe, dass die Arbeit an dieser Spezifikation ein Hinweis darauf ist, dass Facebook ein nachhaltiges Interesse an der Weiterentwicklung von PHP im Allgemeinen und der Unterstützung von PHP auf HHVM im Besonderen hat. Nur die Zeit wird jedoch zeigen können, ob Facebook es mit der Unterstützung von Hack und PHP auf der HipHop Virtual Machine ernst meint.

(Sebastian Bergmann) / (jul)