Nach 12 Jahren PHP Erfahrung bevorzuge ich Python für neue Projekte. Hier erfährst du warum.

Mann hält einen Zettel mit der Aufschrift Python

Wenn man in Foren oder bei erfahrenen Entwicklern nachfragt, welche Programmiersprache man verwenden sollte, hört man zwei Aussagen.

  1. Verwende die Programmiersprache, die für deinen Anwendungsfall geeignet ist.
  2. Verwende die Programmiersprache, in der du die meiste Erfahrung hast.

In meinem Fall habe ich bereits 12 Jahre in der Webentwicklung gearbeitet. Nachdem ich entschieden hatte, welches Projekt ich als nächstes in Angriff nehmen würde, war mir klar, dass ich in der Webentwicklung bleiben würde. Nach den Empfehlungen erfahrener Entwickler sollte ich auch in diesem Fall bei PHP bleiben. Warum sollte ich auf eine andere Sprache umsteigen, wenn ich weiß, dass dies viel mehr Zeit in Anspruch nehmen wird?

Was macht PHP gut?

Ich denke immer noch, dass PHP eine gute Wahl ist, um Webanwendungen auf der Backend-Seite zu programmieren. Als PHP ins Leben gerufen wurde, war es ziemlich umständlich, HTML-Seiten dynamisch auszuliefern. Diese Aufgabe hat PHP gut gelöst. Es ist leicht zu erlernen und macht es einfach, einfache Webanwendungen zu entwickeln. 

Aber die Zeit hat sich weitergedreht. Während es früher darum ging, Webinhalte in Form von HTML und ein wenig CSS + JavaScript auszuliefern, haben sich die Anwendungsfälle stark verändert.

Heutige Anwendungen sind eher ein Netzwerk aus verschiedenen Softwarepaketen, Diensten und Frameworks. Das Ausliefern von dynamischem HTML wird von bereits existierenden Softwarepaketen wie Shopsystemen, CMS, ERP oder was auch immer geliefert. Außerdem sind Webseiten heute viel interaktiver geworden, so dass JavaScript einen großen Teil der HTML-Generierung übernimmt.

Die Hauptaufgaben, die im Backend (d.h. auf der Serverseite) noch zu erledigen sind, sind im Wesentlichen folgende:

  • Routen auflösen
  • Benutzer authentifizieren und Rechte prüfen
  • Request-Daten und Formulare validieren
  • Datenbank schreiben und lesen
  • Hier und da API Aufrufe absetzen
  • HTML oder JSON Resultate zurückliefern.

Diese Aufgaben sind heute so elementar geworden, dass sie in jeder nennenswerten Programmiersprache mehrfach durch Frameworks und fertige Softwarepakete teilweise ohne Programmieraufwand umgesetzt werden. Das bedeutet, dass das, wofür PHP ursprünglich eingesetzt wurde, durch unzählige gleichwertige oder bessere Lösungen realisiert werden kann.

Was PHP nicht kann?

Durch das Alter und die Verbreitung von PHP kann man wirklich sehr viele Dinge in PHP umsetzen. Außerdem ist es unbestritten, dass die PHP Community seit Version 7 große Schritte macht, um die Sprache aufzuräumen und zu verbessern. PHP ist nicht sehr innovativ, aber sie sind gut darin, Konzepte aus anderen Sprachen zu adaptieren. Tatsächlich sehen die meisten PHP-Webentwickler keine Notwendigkeit, eine andere Programmiersprache zu verwenden. (Abgesehen von JavaScript für das Frontend natürlich).

Der Knackpunkt ist nur, dass dies auch auf viele andere Sprachen zutrifft. Jeder, der sich heutzutage für eine Programmiersprache entscheiden muss, wird kaum Vorteile von PHP gegenüber anderen Programmiersprachen sehen.

Wenn man hauptsächlich Webapplikationen entwickeln will, würde ich eher JavaScript/TypeScript empfehlen. Denn ohne JavaScript kommt kein Webservice aus. Das heißt, du wirst JavaScript so oder so anfassen müssen. Da macht es fast keinen Sinn noch eine zusätzliche Serversprache zu lernen, obwohl alle Aufgaben auch serverseitig mit JavaScript und Nodejs umgesetzt werden können.

Das einzige Argument, das ich für PHP gelten lasse, ist die Tatsache, dass viele Firmen PHP einsetzen. Das bedeutet, dass die Nachfrage nach PHP-Entwicklern immer hoch ist und man nicht lange nach einem Job suchen muss, wenn es das ist, was man will.

Warum also Python und nicht JavaScript?

Aus den vorhergehenden Überlegungen heraus habe auch ich angefangen, mich ganz auf JavaScript zu konzentrieren. Aber wir sollten uns einmal vor Augen führen, welche Anwendungen heutzutage noch entwickelt werden. Denn wie ich schon erwähnt habe, gibt es für alle möglichen Anwendungsfälle bereits komplett fertige und oft kostenlose Software, die man integrieren kann. Wenn man heute entwickelt, dann entwickelt man eine Art Klebstoff zwischen den einzelnen Komponenten und eine Benutzeroberfläche für den Benutzer. JavaScript ist dafür eine sehr gute Wahl.

Der andere Fall ist die Entwicklung von Anwendungen, für die es noch keine oder nur wenige oder schlechte Alternativen gibt. In diesem Fall wird man oft mit Nischenlösungen arbeiten müssen. Um zu zeigen, welche Anwendungsfälle ich meine, versuche die folgenden Anwendungsfälle in PHP oder JavaScript umzusetzen:

  • Eine PowerPoint-Präsentation als Vorlage öffnen und einzelne Inhalte austauschen.
  • HTML in barrierefreies PDF umwandeln
  • Daten auswerten
  • Diagramme für Berichte serverseitig rendern
  • Maschinelle Lernmodelle anwenden

Dies sind nur einige Beispiele, die mir in letzter Zeit begegnet sind, und bei all diesen Anwendungsfällen muss man oft sehr lange suchen. Meist sind die Lösungen nicht mehr in PHP implementiert, sondern laufen als eigenständige Software. Dann behilft man sich mit einem zusätzlichen Server, der über eine zusätzliche API angesprochen werden muss. Oder man ruft aus PHP heraus eine Shell auf. Beides ist immer ein Ärgernis. Denn es bläht die gesamte Anwendung mit zusätzlich notwendigen, nebenher laufenden Programmen auf.

An diesem Punkt ist man aber auch mit JavaScript am Ende. Denn JavaScript ist erst viel später populär geworden, dementsprechend werden exotische Themen teilweise gar nicht behandelt. Genau das hat mir gezeigt, dass ich mit JavaScript alleine meine Anwendungen nicht umsetzen kann.

Wenn ich meine Use Cases und die bisherige Herangehensweise betrachte, bleiben für mich nur Python und Java übrig.

Erstes Projekt mit Python

Python ist für mich kein absolutes Neuland, daher wusste ich, worauf ich mich einlasse. Jedoch hatte ich noch nie eine Webanwendung in Python umgesetzt. Nach meinem ersten kleinen Projekt mit Dojo bin ich auch hier total begeistert.

Python ist für mich unangefochten die Nummer 1, wenn es darum geht, schnell zu einem Ergebnis zu kommen. Während vor allem Java eine unglaublich mächtige Sprache mit allen möglichen Anwendungsfällen ist, muss man vergleichsweise Unmengen an Code schreiben, um die gleichen Dinge umzusetzen, die in Python mit ein paar Zeilen Code erledigt werden.

Natürlich gibt es alle möglichen Frameworks, die einem die Arbeit erleichtern sollen. In PHP sind Laravel und Symfony sehr beliebte und weit verbreitete Frameworks für Webanwendungen. Aber mit keinem der beiden Frameworks kommt man mit so wenig Aufwand zu einem Ergebnis wie mit Dojo.

Abgesehen von der Effizienz in der Entwicklungszeit freue ich mich vor allem über die folgenden kleinen Eigenschaften von Python.

  • Der Code ist relativ klein.
  • Der Debugger funktioniert out of the box (im Gegensatz zu Xdebug in PHP).
  • Performance Profiling funktioniert out of the box.
  • Syntax ist minimalistisch (keine $ und -> und {} Zeichen)
  • Das meiste funktioniert einfach. Keine Konfigurationshölle wie bei Node.js
  • Es gibt fertige Implementierungen für alle möglichen Anwendungsfälle (auch die exotischen).
  • In Python ist man nicht auf Serveranwendungen beschränkt. (Auch Desktop Anwendungen sind ohne großen Mehraufwand möglich)

Wie ist es bei dir? Würdest du heute einem angehenden Programmierer PHP als Einstieg empfehlen? Wenn ja, warum? Wenn nein, welche Sprache würdest du empfehlen.

Veröffentlicht am
Kategorisiert in Allgemein