Python ist besser für Web-Entwicklung als PHP!?

Ich halte Python ganz allgemein für die „bessere“ Programmiersprache als PHP. Hier geht es aber speziell um die Verwendung im Bereich Web-Entwicklung.

Beide Sprachen werden in großen Unternehmen eingesetzt (z.B. Python bei Google, YouTube, Dropbox; PHP bei Facebook) und von Communities aktiv weiterentwickelt.

In den Programmiersprachen-Rankings der letzten Jahre steht Python vor PHP, wobei Python eher in Bereichen, wie Data Science, Maschine-Learning, usw. eingesetzt wird. Übrigens ist Python schon älter als PHP. Und nach Statistiken, wie von Stackoverflow, ist die Python-Community deutlich größer als die PHP-Community!

Der wichtigste Grund für Python ist die hohe Entwicklungsgeschwindigkeit. Die Syntax von Python ist knapp und prägnant. Trotzdem gibt es Objektorientierung, Funktionale Programmierung mit Generatoren und Coroutinen, usw. Die Standard-Bibliothek ist logisch aufgebaut, einheitlich gestaltet und umfangreich. PHP dagegen ist berühmt-berüchtigt für sein schlechtes Design: inkonsistete Syntax, uneinheitliche APIs, unerwartete Seiteneffekte. Deshalb ist PHP eher schlecht geeignet für größere Projekte.

In Python kann man mit weniger Code-Zeilen, in kürzerer Zeit mehr Funktionen umsetzen. Ein Prototyp lässt sich sehr schnell erstellen und weiter entwickeln, ganz im Sinne der Agilen Softwareentwicklung. Jede Stunde Entwicklungszeit kostet Geld und deshalb ist eine effiziente Programmiersprache normalerweise wichtiger als z.B. die Ausführungsgeschwindigkeit. Es ist leichter und günstiger, „einfach“ mehr Hardware hinzustellen. Weiterer Pluspunkt ist die bessere Wartbarkeit durch leichter zu lesenden Code.

Bei der Menge der verfügbaren Dokumentation gibt es keine großen Unterschiede. Allerdings ist (meiner subjektiven Meinung nach) die Qualität der Dokumentation, Anleitungen, Tutorials, usw. bei Python besser. Python bietet ein zentrales Repository, um Pakete zu installieren und Abhängigkeiten zu verwalten. Zum Vergleich: Im PyPI-Projekt gibt es im Moment 204894 Pakete. Für PHP existieren auf Packagist aktuell 245760 Pakete. (Stand: 16.11.2019)

Ein wichtiges Argument im Web-Bereich ist noch das Deployment. Traditionell werden PHP-Dateien einfach im Web-Root abgelegt. Bei Python-Frameworks, wie Django können die Skripte irgendwo auf dem Server liegen. Der Webserver leitet Anfragen weiter und das Skript filtert/routet die Anfrage zur passenden Funktion. Das erlaubt eine einfachere Entwicklung, ist sicherer und macht das Deployment einfacher. Die meisten Python-Frameworks bringen direkt einen Webserver mit, der später durch Apache oder Nginx ersetzt wird.

Zur Geschwindigkeit: Tatsächlich ist PHP seit Version 7 (!) in den meisten Anwendungsfällen schneller als Python. Viele bekannte Python-Module sind aus Performancegründen vollständig bzw. teilweise in C implementiert, was den Unterschied wieder verkleinert. Die meisten Web-Anwendungen sind allerdings gar nicht CPU bound, statt auf die reine Ausführungsgeschwindigkeit kommt es viel eher auf die I/O-Performance an (z.B. bei Datei- oder Datenbank-Zugriffen).

Die Beispiele der vielen großen Webseiten mit teilweise zehntausenden Aufrufen pro Sekunde, wie YouTube, Spotify, Disqus, Instagram, Pinterest, die Python nutzen, zeigen das die Geschwindigkeit kein grundsätzliches Problem ist. Viele dieser Seiten nutzen das Web-Framework Django, oder andere Frameworks, wie Pyramid bei Reddit. Die Zahl von 76% der Seiten, die PHP nutzen, scheint übrigens mehr oder weniger zu stimmen. Wenn man aber die vielen Seiten herausrechnen würde, die CMS-Systeme, wie WordPress, Drupal oder Joomla nutzen, sähen die Zahlen wahrscheinlich anders aus?!

Veröffentlicht am