Ich denke, die grundsätzliche Prämisse, von der in diesem Thread ausgegangen wird, nämlich dass PHP unheimlich viele Unterschiede zu anderen Sprachen aufweise, ist nicht korrekt. Ich spreche die Hochsprachen C/C++, Java, PHP, Delphi und BASIC (abgesehen von Grundkenntnissen in anderen Sprachen) und nutze PHP auf professioneller Basis (Softwareentwicklung für einen deutschen Großkonzern). Ich denke, ich kann PHP und seine "Konkurrenten" beurteilen.
Folgendes ist wichtig: Es geht niemals um die *Sprache*, sondern immer nur um den *Inhalt*. Beispiel: Wenn sich jemand daran macht, einen Roman zu schreiben, und am Ende nur eine einzige Sch*** dabei rauskommt, wird er nicht der deutschen Sprache die Schuld geben dürfen (weil die ja so "kompliziert" oder "inkonsistent" sei), sondern wohl oder übel seinen Fähigkeiten als Autor. Genauso ist es auch in der Softwaretechnik. Die Sprache ist lediglich Werkzeug, die einem die Mittel an die Hand gibt, sein Ziel zu erreichen.
Es ist völlig korrekt, dass PHP viele Fehler verzeiht und durch manche Eigenschaften geradezu dazu verleitet, schlechten Code zu schreiben. Das ist jedoch, streng genommen, keine Schwäche von PHP. Es ist vielmehr eine Schwäche des Entwicklers, wenn er sich von PHP verleiten *lässt*.
Als ich den Auftrag erhielt, eine Groupware auf PHP-Basis zu entwickeln, dachte ich keine Sekunde daran, diese Aufgabe mittels einer prozeduralen Programmstruktur zu lösen. Ich baute von Anfang an auf die OOP von PHP 5. Die Kritik, dass PHPs OOP nicht so weit ausgebaut sei wie diejenige von C++ oder Java, ist zwar von den Fakten her korrekt, sachlich jedoch nicht. PHP 5 stellt absolut ausreichende Mittel zur Verfügung, um eine ordentliche Softwarearchitektur auf die Beine zu stellen. (Das tat übrigens bereits PHP 4.) Diejenigen Sprachkonstrukte aus C++ oder Java, die PHP fehlen, können durch saubere Architektur quasi "nachgebildet" werden.
Obwohl z.B. C ausschließlich prozedurale Programmierung unterstützt, ist es auch dort möglich, einen objektorientieren Ansatz zu wählen. Wie in PHP liegt es auch hier einzig und allein an den Fähigkeiten des Entwicklers, ob er sein Projekt "verhunzt" oder elegant und effizient realisiert. PHP jedenfalls legt dem keine Steine in den Weg.
Manche Eigenschaften von C++ werden von Java kritisiert, weswegen sie dort nicht implementiert sind. Ist das jetzt eine Stärke von Java? Oder eine Schwäche? Und ist C++ deswegen schwach? Oder doch eher stark? -- Diese ganze Fragestellung macht keinen Sinn und ist der Problematik auch nicht angemessen. Es gibt für jeden Bedarf eine Sprache. Anstatt beispielsweise BASIC zu kritisieren (was unangebracht wäre), verwende ich es einfach nicht. Andere Leute hingegen haben sehr gute Verwendung dafür.
Mit PHP kann jeder halbwegs denkfähige Mensch "programmieren".
Diese Idee mutet an wie die Aussage, mit der relativ einfachen Sprache Englisch könne jeder Mensch einen Roman schreiben. Einen schlechten vielleicht, ja. -- Was ich also sagen will: Ganz gleich, welche Sprache man benutzt, ob Python, C++ oder PHP: Es kommt nur dann etwas Vernünftiges dabei heraus, wenn man seine Sache ordentlich macht. Auch in Java kann man haarsträubende Software schreiben. *Architektur* ist das A und O, genauso, wie ein Roman ohne ordentliche Dramaturgie nicht funktioniert.
Von einigen "Freunden" PHPs, deren Kompetenz zweifelhaft ist, wird bisweilen eine "Das kann jeder"-Mentalität verbreitet. Das stimmt nicht. Die Entwicklung einer Software, die Industriestandards erfüllt, erfordert verschiedene Eigenschaften auf Seiten des Entwicklers, vor allem jedoch die Fähigkeit, einerseits bis ins kleinste Detail strukturieren zu können und andererseits dabei den Blick fürs Ganze nicht zu verlieren.
Kein Pinsel der Welt, und sei er noch so professionell, wird einem Maler zu einem besseren Bild verhelfen, wenn der Maler sein Metier nicht beherrscht. In der Hand eines Meisters kann jedoch auch ein primitiver Pinsel Wunder wirken. Der Softwarearchitekt ist ein Künstler, dessen Werkzeuge nur richtig angewandt werden wollen.
Welche Sprache für diese Kunst verwendet wird, ist größtenteils nebensächlich.
-Gawayn