Jan 25

Vergleich PHP vs. Python

Tag: AllgemeinPhoscur @ 22:55

Dieser Artikel ist mittlerweile veraltet. Für eine neuere Version, auch hinsichtlich NodeJS bitte diesem Link folgen: http://ugamela-blog.pheelgood.net/2011/05/31/javascript-nodejs-vs-php-vs-python/

 

 

PHP und Python unterscheiden sich stark, daher wird dieser Vergleich vor allem auf die Verwendbarkeit für ein Browsergame abzielen.

Python lässt sich, im Gegensatz zu PHP, welche eine pure Websprache ist, für jegliche Anwendung verwenden. PHP wird sehr gerne für Websiten verwendet, der Code ist schnell geschrieben, besondere Strukturen würden zwar nicht schaden, sind aber nicht von Nöten, weshalb kaum einer sich wirklich Mühe gibt. Dementsprechend ist auch der Ruf sehr schlecht. Es gibt viel zu viel Spaghetticode, allein UGamela war ein Beweis.

Ich persöhnlich habe mich sehr mit OOP und Designpatterns angefreundet und überzeugt ein gut strukturiertes stabiles Spielgerüst zu bauen. Es ist eindeutig ein Anreiz einmal OpenSource-Code mit Qualität aufzubauen, es wird viel zu viel geklagt wenn man sich mal umhört. Auch da geht der Abscheu zu PHP mit einher. Wenn man in höheren Kreisen erzählt man schreibe ein Browsergame in PHP wird man komisch angesehn. Zu Recht, denn PHP scheint denkbar ungeeignet:

Ein Browsergame ist mit nichts im Web wirklich vergleichbar und trotzdem versucht man es in einer Scriptsprache zu schreiben, die denkbar ungeeignet ist, schon allein aufgrund Performance. Um den Überblick im Spiel halten zu können (Wartbarkeit) und auch mal kurz neue Features einzufügen oder zu testen (Erweiterbarkeit & Flexibilität) muss der Code gut strukturiert sein, sonst wird das nach kürzester Zeit chaotisch, wenn er es nicht sowieso schon war.

Noch ein paar weitere Dinge die ich für das Spiel brauche:

  1. Eine einfache Sprache, denn das Spiel soll möglichst von jedem erweitert werden können
  2. Verfügbarkeit auf Webservern, evtl. Webspaces und wenig Installationsaufwand
  3. Wahrscheinlich ein CMS oder Framework, das mir Funktionen zur Userverwaltung abnimmt

1) Bieten PHP und Python beide, mir scheint Python sogar noch einfacher durch das Wegfallen der Klammern und die automatische Einrückung.

2) Hier schlägt PHP eindeutig Python, es ist quasi überall verfügbar, Standard.

3) In PHP sowie auch Python vorhanden, den PHP Frameworks wird aber allen keine besonders gute Performance zugesprochen.


Allgemeines Fazit:

PHP muss nicht so schlecht sein, wie alle sagen. Mit PHP lassen sich auch größere Projekte verwirklichen, aber dafür gedacht ist es weniger. Für kleine Sites ohne größeren serverseitigen Rechenaufwand ist es gut geeignet und auch überschaubar. Mit PHPs OOP lässt sich etwas anfangen, aber die Vorzüge echter objekt orientierter Sprachen bietet es nicht. Am Ruf darf man sich dann nicht stören.

Python sollte verwendet werden wenn OOP von belang ist, damit hebt es sich am stärksten von PHP ab. Wenn auf eurem Webspace Python verfügbar ist, dann kann ich nur dazu animieren das einmal auszuprobieren!

Mein Fazit:

Python ist denkbar besser geeignet, vor allem weil ich mir soviel Struktur wünsche. Ich freue micht jetzt schon auf den sauberen Code, habe die Semikolons und Klammern satt. Ein einfacher (billig) Webspace ist sowieso denkbar ungeeignet für ein Browsergame. PostgreSQL wird hervorragend passen, das unterstützt sogar innerhalb Python Aufrufe (Ersatz für die MySQL Procedures). In wieweit ich ein Framework wie Zope, Django oder Pylons zur Hand nehme steht noch nicht fest.

Ich möchte hiermit alle UGamela Interessierten dazu auffordern einmal in Python hineinzuschnuppern, der Aufwand könnte sich lohnen!

14 Kommentare zu “Vergleich PHP vs. Python”

  1. asfer schrieb:

    Kannst du mal erklären wieso PHP so schlecht als OOP-Sprache sein soll? CMS’s wie Typo3, Joomla und WBB/WCF beweisen mir da eigentlich das Gegenteil. Die „Verfügbarkeit auf Webservern, evtl. Webspaces und wenig Installationsaufwand“ ist für mich ein Totschlagargument, das für PHP spricht. Wie siehts mit der Performance zwischen den beiden aus?
    „Eine einfach Sprache, denn das Spiel soll möglichst von jedem erweitert werden können“
    -> ich denke der Großteil hat PHP im Blut.

    „…besondere Strukturen würden zwar nicht schaden, sind aber nicht von Nöten, weshalb kaum einer sich wirklich Mühe gibt“
    -> ich hoffe du gibst dir Mühe dann gibts auch Strukturen, ja selbst in PHP xD

  2. Phoscur schrieb:

    > Kannst du mal erklären wieso PHP so schlecht als OOP-Sprache sein soll?
    Ich habe nur gesagt, dass PHPs OOP bei weitem nicht an das von Python heran kommt.
    > CMS’s wie Typo3, Joomla und WBB/WCF beweisen mir da eigentlich das Gegenteil.
    Nur weil sie OOP verwenden heißt das noch nicht, dass sie es wirklich gut tun. Von Joomla weiß ich das es nicht das schnellst und leistungssparendste Konstrukt ist.

    >Die “Verfügbarkeit auf Webservern, evtl. Webspaces und wenig Installationsaufwand” ist für mich ein Totschlagargument, das für PHP spricht.
    Jain. Das habe ich ja selbst schon geschrieben. Der Wunsch ist recht unwichtig, anderes steht im Vordergrund, Python erfüllt ihn auch, nur weniger. Forumsdiskussion: http://ugamela-forum.pheelgood.net/viewtopic.php?p=7341#7341

    > Wie siehts mit der Performance zwischen den beiden aus?
    Python >>> PHP http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=python&lang2=php

    “Eine einfach Sprache, denn das Spiel soll möglichst von jedem erweitert werden können”
    -> ich denke der Großteil hat PHP im Blut.
    Dann ändern wir das.

    >ich hoffe du gibst dir Mühe dann gibts auch Strukturen, ja selbst in PHP xD
    Man macht es sich halt mit PHP schwieriger als nötig…

  3. Noscript schrieb:

    der einzige Grund für Phlegma auf Phyton umzusteigen ist wohl sein „Noobschutz“… Kaum jemand kann Phyton, und so gibt es nur wenige, die an seiner Arbeit rumpfuschen können…

  4. Noscript hdf pls schrieb:

    …oder auch die Tatsachen, dass Python schneller ist und eine bessere OOP-Strukturierbarkeit aufweist. -> Wer PHP kann wird auch in 2-3 Tagen Python verstehen -> Wer nichts kann sollte hier nicht schreiben (vgl. Noobschutz xD) 😀

  5. JÜRGEEEEEN schrieb:

    Mit Python ärgere ich mich aktuell ein wenig rum, da die Dokumentation (wenn man nicht genau weiß, was man haben will) da einfach nur mies ist, das einzig wirklich schöne ist aus meiner Sicht die vernünftig geregelte Einbindung von anderen Klassen (import irgendwas), die Einrückung mag manchen gut gefallen, mir gefällt sie nicht wirklich, da sie es deutlich schwieriger macht mit anderen gemeinsam was erarbeiten, wenn eine(r) nun Tabs nutzt und die bei ihm/ihr im Editor nun 4 Leerstellen darstellt, bei wem anderes aber nur 2 und irgendwer anderes arbeitet mit echten Leerstellen, dann ist Chaos vorprogrammiert.

    Bezüglich der Browsergames: Es ist wohl die Menge der Hosts, die PHP unterstützen, die etwas niedrigeren Anforderungen von PHP an den Programmierer und vielleicht auch das Bewusstsein von Sprachen, die das verursachen. Dennoch gibt es auch beispielsweise das sehr erfolgreiche Pennergame, welches von PHP auf Python umgestiegen ist. (Dank dem einen Admin habe ich vor einiger Zeit dann auch mal mit Python angefangen, wirklich weit binb ich aber noch nicht gekommen… liegt wohl einfach an den Befehlen, Django (was die da benutzen) macht es dennoch sehr einfach)
    Die hier bereits angeführten „CMS“e bzw. Frameworks in PHP sind aber wohl recht schlechte Beispiele, da beispielsweise Typo3 mit einer interpretierenden Sprache gesteuert wird, da muss man glaube ich nicht mehr weiter drauf eingehen. Bei Joomla scheinen die Entwickler auch nicht darauf geachtet zu haben, dass man vielleicht nicht das Urobjekt auf ein weiteres vererben muss, welches dann über dann etliche extends in das endgültige Objekt eingebaut wird, dass da die Performance auch den Bach entsprechend der vielen Vererbung runter geht, ist wohl klar. Zu dem WBB fällt mir nur eins ein: Scheiße… Das Framework dahinter ist mit den zig in einander ge-Tar.gz-ten Archiven mit unmengen xml-dateien auch nicht gerade handlich, mal abgesehen, dass es sehr viele hardcodete Inhalte hat (beispielsweise in der Datenbank), von einer übersichtlichen Struktur innerhalb der Dateien wie beispielsweise eine Klasse pro File fehlt eh eine spur

    Ich für meinen Teil bleibe dennoch erstmal bei PHP, da ich in mein aktuelles Projekt in PHP einfach zu viel Zeit reingesteckt hab um das alles neu zu gestalten, und mit dem Zend-Framework, welches zwar ein wenig Ressourcenhungrig mir erschien, aber von der Performance auf jeden Fall zu den besten PHP-Framework gehört und mir außerdem nahezu alle aufbaumäßigen Freiräume bietet, die ich will. Desweiteren sind die recht weit gefächerten Gebiete mit ihren Klassen weitestgehend von einander unabhängig, wodurch der Rattenschwanz von unnötigen Inhalten ungemein im Vergleich zu den bereits genannten PHP-Frameworks minimiert wird. Letztlich muss ich aber auch sagen, dass ich dank dem Zend-Framework auch mit dem Lazy-Loading via __autoload angefangen hab und das hat meinen Entwicklungsprozess noch weiter ungemein beschleunigt als es die Klassen alleine getan hätten.

    Dennoch bleibe ich interessiert bei dem Erlernen von Python, da die Performance doch schon eine sehr schöne Sache ist und sogar mein aktueller Freehoster das neben PHP und Perl problemlos unterstützt 😉

  6. Phoscur schrieb:

    Thema Leerzeichen:
    Deshalb sind Codingstandards wichtig wenn man im Team programmiert, Tabs sollten immer in Leerzeichen umgewandelt werden, das unterstützen auch die meisten Editoren/IDEs.

    Ich bleibe vorerst wie du in PHP, auch weil ich es abschließen nicht verwerfen will. Mit __autoload stehst du noch am Anfang größerer Dinge. Auf ein Framework setze ich nicht, weil ich keines gefunden habe, das meinen Ansprüchen gerecht wird, vor allem weil ich nichts unnötiges rumfahren haben möchte. Viele Frameworks sind einfach nicht für Browsergames gedacht.

    Vielleicht portiere ich am Ende auch auf Python, wahrscheinlich auch weil ich dann auch nochmal einiges anders machen werde. Da kommt mir auch der große JavaScriptanteil zugute, den ich wiederverwenden kann.

    Ich wünsche dir viel Erfolg mit deinem Projekt und deinem Lernprozess, du hast noch einiges vor dir was OOP angeht.

  7. JÜRGEEEEEN schrieb:

    ich schätze mal, dass du dich mit dem letzten Satz auf einen anderen Blogpost bzw. meinen Kommentar beziehst 😉
    Man lernt nie aus, von daher stimm ich dir zu, auch wenn ich mich seit mehr als 1 Jahr nun mit OOP (speziell in PHP und Javascript) beschäftigt habe

    Da Programmieren für mich und wahrscheinlich viele andere Programmierer eine gewisse Faszination für die Unmengen an Möglichkeiten, mit denen man ein und das selbe Problem lösen kann, gerade für PHP gilt dies. Von daher wohl auch für OOP, wobei es ja eigentlich immer performante, speichereffiziente Lösungen gibt (oder halt beides oder keines von beiden)
    Wenn du mit Vererbung lediglich die abstrakte meinst, so muss ich dennoch zu stimmen, dass Interaces praktikabler sind

    Ich schätze mal, dass die Geschwindigkeit und gewisse Probleme hinsichtlich allgemeiner Codingsstandarts in PHP durch die Größe der Community entstanden sind, da man diese nicht so gerne verärgern wollte und deswegen auch alternativen weiterhin auf Kosten der Performance supportet hat, da PHP 5.3 vor einiger Zeit raus gekommen ist und dort ja einige Verbesserungen eingeführt wurden, sodass Performance und Umfang gesteigert wurden, scheint es da auch einen gewissen Schimmer diesbezüglich zu geben :)

    Ich für meinen Teil habe mich trotz meiner Probleme mit gewissen Python-Eigenheiten wie die Zeileneinrückung wieder an mein Pythonprojekt gewagt und hoffe, dass ich das in nächster Zeit fertig habe um an meinen Hauptprojekten in PHP und Javascript wieder fortzuschreiten 😉
    Denn in Javascript gibt es ja wie du selber sagst viele Möglichkeiten performance-kostende Dinge auszulagern 😉 Dennoch sollten natürlich nicht die Sicherheitsrelevanten Dinge dahin ausgelagert werden (also eigentlich jeder Usergenerierte Content sollte vorher serverseitig geprüft sein) und ich frage mich ein wenig, wie du dir das mit dem Template vorstellst? Etwa so, wie das wohl bei dem neuen Ogame zu sein scheint (ich habe für meinen Teil noch nie „richtiges“ Ogame gespielt, nur die 0.4/0.5 von Ugamela und Konsorten auf meinem lokalen Server getestet)

  8. Fanboy schrieb:

    Nimm Scala! Die momentan beste Sprache die ich kenne.

  9. Phoscur schrieb:

    Hab auch grad wieder nen Artikel dazu in der iX gelesen, scheint wirklich cool zu sein. JavaScript ohne die Zicken.. Nun, da Scala aber nicht im Browser läuft (außer vielleicht im JavaApplet, weiß grad nicht), kann ich es höchstens in Verbindung mit Rhino auf Serverseite verwenden, was ich wahrscheinlich dann auch tun werde, wenn es zu den Optimierungen kommt.

  10. RedTuesday schrieb:

    Zu Scala: man muss dazu auch sagen das die aktuellen IDE Plug-Ins noch ziemlich weit von dem entfernt sind was man von IDEs für Java gewohnt ist. Ach ja, aber noch was cooles: scheinbar haben ein paar Leute vor einen Scala -> JavaScript Konverter zu schreiben, der es einem ermöglich mit Scala JavaScrip für den Client zu schreiben.

    http://www.j2js.com/scala-demo/index.html

    Sind zwar nicht die Leute die ich meinte, aber egal. Soll ja den gleichen Zweck erfüllen. ^^

  11. kayoone schrieb:

    was für ein Quatsch soll das hier sein ? PHP OOP nicht vollständig ? Seit PHP5 steht es Java da wohl in kaum etwas nach, Python hat doch nicht mal protected/private/public… Namespaces gibt es mitterweile auch in PHP und die Performance hat sich viel getan. Wenn man ein anständiges PHP Framework wie Symfony oder Zend einsetzt, sehe ich keinen Grund für Webanwendungen zu Python zu wechseln…
    Auch das Statement „für kleine Seiten mag PHP ausreichend sein“ halte ich für Bullshit…Schon mal was von Facebook oder Wikipedia gehört ? Beides PHP Anwendungen…
    Naja, mich hat an deinem Artikel schon genervt das du ständig „denkbar ungeeignet“ oder „denkbar besser geeignet“ geschrieben hast ohne das irgendwie zu begründen.
    PHP ist SUPER geeignet für jegliches Browsergame, soviel dazu.

  12. Phoscur schrieb:

    Quatsch? Das ist ein subjektiver Vergleich zweier Skriptsprachen zum Aufbau eines Browsergames. Der Ton deiner Kritik hier ist vielleicht etwas daneben gegriffen und am Artikel gibt es auch etwas zu bemängeln, aber Quatsch ist das hier nicht.
    Facebook ist grausam buggy, das sehe ich immer wieder. Ich bin mir sicher dass die Code-Qualität bei denen einiges zu wünschen übrig lässt.
    PHP ist als Templatesprache geplant gewesen und enthält dies immer noch tief in seiner Natur. Es war nie dafür gedacht riesige komplexe Konstrukte wie Browsergames damit zu schreiben. Was nicht heißt, dass es nicht möglich ist. Wenn du dir das umbedingt antun willst, dann schreib dein Browsergame in PHP. Aber tu dir selbst einen Gefallen und informier dich vorher nach Alternativen.

  13. ROFL schrieb:

    auch wenn die kritik von kayoone hier, vielleicht nicht ganz deinen vorstellungen der feinen englischen art entspricht, muss ich doch zustimmen. Mal sachlich, er kritisiert die Aussage „PHP mag für kleine Seiten ausreichend sein“. Du antwortest damit facebook sei buggy … Die meisten Bugs die du an facebook sehen kannst, sind doch javascript bugs. ausserdem selbst wenn die von php kommen: facebook ist das 3. grösste land der welt, eine sprache die da mal ein paar bugs produziert ist deswegen nicht gleich denkbar ungeeignet für grosse anwendungen. wer weiss wie das in python wäre. TYPO3 zum beispiel ist auch wirklich mächtig, manchmal vielleicht etwas schwergewichtig aber joomla was die mächtigkeit angeht um LÄNGEN voraus. Dieses CMS wird auch in grossen projekten mit viel traffic eingesetzt. Weder pro python noch pro php, aber pro logik

  14. JavaScript (NodeJS) vs. PHP vs. Python | UGamela Blog schrieb:

    […] Ich habe schonmal einen ähnlichen Artikel geschrieben, der allerdings mittlerweile veraltet ist und die meisten Seitenaufrufe meines Blogs produziert. http://ugamela-blog.pheelgood.net/2009/01/25/vergleich-php-vs-python-browsergame […]

Dein Kommentar

Du musst eingelogt sein, um einen Kommentar zu schreiben.