PHP? Bitte nicht!

Hallo Christian,

nur mal als Frage nebenbei. Warum wird die neue Version von tutorials mit phyton (django) realisiert und nicht mit Java? Mein Bild von Skriptsprachen ist immer, dass sie sehr elegant und schnell für gewisse Dinge einsetzbar sind. Sobald das Projekt aber größer wird, wirds mit Skriptsprachen dann unübersichtlich.
 
Hallo!

Sobald das Projekt aber größer wird, wirds mit Skriptsprachen dann unübersichtlich.
Diese Ansicht Teile ich mittlerweile nach einiger Erfahrung in einem grossen Projekt auf Python, Zope, Plone Basis auch... grosse Schwachpunkte waren fuer mich dabei:

Durch dynamische Typisierung kommt es nun in groesseren Systemen eher zu Typfehlern die erst zur Laufzeit festgestellt werden (wegen der dynamischen Typisierung ist kein Compiletime Checking moeglich). Das erhoeht den Aufwand fuers testen erheblich. Wenn man dann man ein paar Zeilen Code hat für die keine Testabdeckung besteht dann kanns schon mal passieren, das einem das System im Betrieb wegen Typefehlern um die Ohren fliegt... okay kann natürlich in anderen Sprachen auch passieren, auch in Java wenn man viel mit Reflection arbeitet... Hierbei sind Tools zur Ermittlung der Codecoverage / Testabdeckung unverzichtbar.

Schwieriges Debugging. Entwickungsugebungen wie das Eclipse basierte Pydev machen einem die Arbeit zwar leichter, jedoch ist das Debugging noch nicht so wirklich ausgereift. Zum einen ist es quaelend langsam und zum anderen wird auch manches mal ein Breakpoint ignoriert... aber pydev wird immer besser und auch diese Kinderkrankheiten werden bald der Vergangenheit angehoeren. Doch bis dahin wird wohl print >> sys.stderr, "BLA" oder raise ABC... der pragmatischte Weg zum Debuggen bleiben :(

Aufgrund der dynamischen Eigenschaften unterstuetzt Python keine Methoden Ueberladungen, was nicht gerade schick ist und ueber Hilfskonstrukte wie optionale benannte Parameter umgangen werden kann. (... das gabs auch schon bei Visual Basic... )

Die neue Version von tutorials.de wird auch nicht komplett in django geschrieben werden. Eher werden "kleinere" Komponenten in RAD manier damit umgesetzt.

Gruss Tom
 
Na, dann wünsche ich dir noch viel Spass Thomas, vielleicht wird die Foren-Software später auch für mich interessant.
 
AKST hat gesagt.:
Hallo Christian,

nur mal als Frage nebenbei. Warum wird die neue Version von tutorials mit phyton (django) realisiert und nicht mit Java? Mein Bild von Skriptsprachen ist immer, dass sie sehr elegant und schnell für gewisse Dinge einsetzbar sind. Sobald das Projekt aber größer wird, wirds mit Skriptsprachen dann unübersichtlich.

Nun gerade tutorials.de ist im grossen und ganzen eine CRUD Anwendung :) (sprich Create - Update - Delete )
Wir müssen nicht mit irgendwelcher Middleware zusammenarbeiten und so hyperkomplex ist tuts.de auch nicht.
Was bleibt ist eine pure Webanwendung und hier sind so Scriptsprachen mit solchen Frameworks wie Django sehr stark.
Gerade, wie Tom angesprochen hat, RAD.
Aber es gibt auch ganz subjective Gründe für Django/Python: Ich hab Lust darauf :)
Da tutorials.de ein privates Projekt ist darf mann auch den "Lust und Laune" Faktor beachten :)
 
Tut mir Leid das ich diesen Thread aus den untiefen des Forums wieder ausgrabe, aber ich muss jetzt einfach was los werden. :rolleyes:

Wenn man sich mal mit einem größeren und komplexeren Projekt beschäftigt (siehe Signatur ;-) ) merkt man wie ungeeignet PHP für sowas eigentlich ist.

Wenn ich die Möglichkeit hätte, dass ganze in Ruby oder einer anderen Sprache zu machen, würde ich das sofort tun. Leider stehen mir nicht die erforderlichen Mittel zur Verfügung (Server mit Ruby), weshalb ich "leider" mit PHP arbeiten muss.

Ich verstehe nicht wie die Leute es mit PHP an so großen CMS-Projekten (o.a.) aushalten. :suspekt:

Das musste ich jetzt einfach mal sagen.
Danke für eure Aufmerksamkeit.

greetz
daddz
 
Ich habe mir nun die ellenlangen Kommentare hier durchgelesen. PHP wird verglichen mit stark typisierten Sprachen wie Java etc. Man sollte euch - glaube ich - aufmerksam machen das PHP nunmal nicht Java, C# oder was weis der Teufel auch ist. Jede Sprache hat Ihre stärken. Jede Sprache entwickelt sich unterschiedlich. Mit PHP kann jeder halbwegs denkfähige Mensch "programmieren". Ist doch auch gut so. Oder? Habt Ihre Angst um eure Jobs, wenn jemand in PHP das programmieren kann was Ihr mit den anderen höheren Sprachen mühselig in einen Editor koppt?

Keine Angst ich bin kein Wahnsinniger PHP Freak. Ich habe auch schon Sachen in Java und C++ programmiert. Aber ich finde PHP einfach interessanter. Ist halt meine Meinung.

Ob PHP zum schlechten Programmieren verleitet sei dahingestellt. Fakt ist: Der Programmierer hat ja selbst die wahl wie sein Code aussehen soll. Ich bevorzuge das trennen von Programmier-, Layout- und Darstellungslogik. Das hat sich eben aus den grössen meiner Arbeiten als sehr vorteilhaft herrausgestellt. Aber man muss es nicht machen! Bei kleineren Projekten ist sowas:
PHP:
foreach ( $arrBenutzer as $strName ) {
      ....
      echo '<tr><td>' . $strName['userFullName'] . '</td></tr>';

}
genauso ok wie eben die angesprochene Trennung von Code und Layout.

Ich liebe es zu experimentieren. Ich mag PEAR und PECL die mir die gleiche Funktionsvielfalt bietet wie zumBeispiel die Java Swing Libaries (hier halt GUI´s).

Durch PHP-GTK wird man auch in der Lage sein Desktop Applikationen zu schreiben, die sich (hoffentlich) genauso verhalten wie ein Programm in C. Aber das ist ja alles noch in entwicklung und noch nicht wirklich in Produktivumgebungen einsetzbar. Aber es wird!

Das PHP nicht die Merkmale von Lisp oder gar PERL hat ist doch klar. Aber überlegt doch mal wie einfach es ist mit PHP die gesamte Palette der Protokolle rauf und runter abzuarbeiten. Wie ist das in Java? Ich finde sehr umständlich!

Aber wie schon mal gesagt! Das ist eben meine Meinung. Andere haben andere Meinungen und die sind genauso ok. Jeder tut sich mit einer anderen Sprache leichter. Aber darum haben wir ja die vielen Sprachen. Ansonsten sollten wir den ganzen Schei* über Bord werfen und alle nur noch Assembler programmieren. Zugegeben. Ich kann kein Assembler aber ich stells mir witzig vor wenn man den Code den man schreibt nicht wirklich versteht ohne einen IQ von mindestens 130.
 
Wir wollen aus der Softwarekriese herraus und nicht wieder hinein.
Christian Kusmanow hat gesagt.:
Ich gehe mal von deiner Frage aus, dass Du mit PHP angefangen hast?
Wenn Du vor hast jetzt auf einmal eine richtige Programmiersprache zu lernen,
kann ich Dir versprechen, dass Du wieder fast von vorne anfangen kannst.
PHP ist meiner meinung nach keine Sprache für Anfänger,
sie verzeiht zu viele Fehler und lässt somit das ausprägen von schlechten Programmierstielen zu.
Cliententwicklung bedeutet Verantwortung in Bezug auf das System
für welches man das Program entwickelt. Speicherverwaltung währe da ein Punkt,
mit dem man immer in Berührung kommen wird. Weiterhin ist man hier richtig von der OOP abhängig,
wenn man eine wart- und erweiterbare Anwendung entwickeln will, von der sich zudem auch noch
mehr als die Hälfte wiederverwenden lässt.
http://www.tutorials.de/forum/coders-talk/259762-alternative-programmiersprache-zu-php.html

Mit einer nicht-typsicheren Sprache und ohne OOP als grundlegendes Element der Sprache Dektopanwendungen entwickeln? Was soll das werden? Sollen die User erstmal 2GB Arbeitsspeicher nachrüsten weil der Coder keinen bock hatte für jeden Wert einen Typ festzulegen?
Wie sollen dann von komplexen Anwendungen ohne OOP bereits fertige Funktionalitäten weiterverwendet werden wenn sich niemand um modularität kümmert? Wie sollen diese Funktionalitäten zudem so auch weiterentwickelt werden können?

Kannst Du dir nicht ausmalen das die Qualität der Programme generell darunter leiden würde?
kastnermario hat gesagt.:
Mit PHP kann jeder halbwegs denkfähige Mensch "programmieren". Ist doch auch gut so. Oder? Habt Ihre Angst um eure Jobs, wenn jemand in PHP das programmieren kann was Ihr mit den anderen höheren Sprachen mühselig in einen Editor koppt?
Wahnsinn. Eine Webanwendung kann man doch weiss Gott nicht mit einer Clientanwendung vergleichen.
Die Anforderungen die eine Clientanwendung stellt, bestimmen die Funktionalitäten einer Sprache.
Nur leider sehe ich nirgends das PHP für den Clientbetrieb entwickelt wurde, ergo auch keine der erforderlichen Funktionalitäten...
 
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
 
[...]
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*.

[...]

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.
Ich bin echt beeindruckt von deinem Statement und schließe mich deiner Meinung an. :)
Jemand der sich engagiert seinem Beruf widmet und auch alle Grundlagen der Anwendungsentwicklung lernt,
sprich sich nach den heutigen Idiomen des Gewerks richtet, nur der kann von sich behaupten,
dass er in der lage währe in die Desktop-ApplikationsEntwicklung einzusteigen.
 
Endlich schreibt einer, was ich mir seit Bestehen dieses Threads denke, bisher aber einfach keine Muse verspürte, es aufzuschreiben. Und so treffend hätte ich's gar nicht formulieren können.

Bravo Gawayn!
 
Zurück