PHP und Programmierstil

Peter Bönnen

Erfahrenes Mitglied
Hallo zusammen.

Da ich heute in der richtigen Stimmung bin, muss ich hier einfach mal was loswerden. Kann sein, dass ich im folgenden Text kleinlich wirke, aber mir geht das echt langsam arg gegen den Strich.

PHP ist schön und gut. Ich habe auch nichts gegen die Einsteigerfreundlichkeit der Sprache. Allerdings fällt mir immer mehr und mehr auf, wie gerade Umsteiger, die mit HTML und PHP begonnen haben zu "programmieren" und sich nun einer anderen Sprache zur Programmierung widmen wollen, fast mehr Schwierigkeiten zu haben scheinen, als komplette Neulinge. Sicherlich nicht in der Hinsicht, was ein Grundverständnis für Programmiersyntax angeht, aber auf die Erwartungshaltung und auch das Programmierverständnis bezogen.

Zum einen bekommt man ziemlich viele Funktionen fertig serviert. Das ist zwar auch in "richtigen" Programmiersprachen so, aber diese lernt man eben auch nicht einfach so nebenbei, um irgendeine tolle Webseite zu machen, sondern eher aus dem Interesse an der Sprache und der Funktionsweise selber. Gut aussehende Ergebnisse sind bei wenig PHP in viel HTML nunmal schneller zu bewundern, als bei anderen Sprachen. Da interessiert es dann nicht mehr, wie etwas funktioniert, sondern nur noch, dass das erzeugte Ergebnis gut aussieht (was zwar eher auf das HTML zurückzzuführen ist, aber das Erfolgserlebnis für die gelungene Dynamik ist natürlich elementar mit der Optik der Seite gepaart). Anstatt sich selber mit einem Problem auseinanderzusetzen, wird dann direkt nach einer passenden Funktion gefragt, um einfach nur möglichst schnell eine Seite durch etwas Dynamik aufzuwerten.

Zum anderen vermittelt PHP keinerlei Bild von Datentypen. Da wird's schon zum Problem wenn jemand den Datentyp in einer Datenbank festlegen muss. Wenn man dann für eine andere Programmiersprache erklärt, dass Variablen deklariert werden müsssen, oder man nicht einfach zwei Strings, die Ziffern enthalten, mathematisch addieren kann, kommt schon einmal des öfteren ein ziemlich blödes "Aber das muss doch gehen, in PHP geht das auch so..." oder "Das ist aber umständlich.".

Dazu gehört auch, dass oft Stringfunktionen auf Zahlen angewandt werden, wo es auch mit simpler Mathematik ginge. In PHP funktioniert das noch wunderbar; versucht man das gleiche dann aber in einer anderen Sprache, so muss man erst konvertieren, Stringfunktion anwenden und eventuell wieder zurückkonvertieren. Sinnvoller ist es da natürlich, wenn man gleich in PHP Datentypen beachten und über geeignetere und simplere Möglichkeiten nachdenken würde, als gleich auf irgendwelche Funktionen zurückzugreifen.

Das ist aber vor allem auch ein Appell an die Leute, die Lösungen vorstellen und damit etwas lehren wollen.

Das gleiche gilt für höhere Sprachelemente wie z.B. variable Variablen. Auch die haben in der höheren Programmierung ihre Daseinsberechtigung, aber doch nicht, wenn jemand danach fragt, wie sich durchgezählte Variablennamen realisieren lassen. Da gehören bei gleichem Datentyp der durchzunummerierenden Variablen Arrays hin. Das sollte im Anfängerbereich sogar das absolute Paradebeispiel für Arrays sein. (Da gibt's zwar auch einen aktuellen Thread im PHP Forum, aber das Beispiel erwähne ich eher, weil mir das schon ziemlich oft über den Weg gelaufen ist).

Zum Thema Programmierstil gehört aber natürlich auch die Strukturierung von Code. Wenn ich mich darüber aber auch noch auslassen würde, dann wär's wohl endgültig zu viel. Man muss zugeben, dass PHP doch sehr dazu verleitet, mal eben ein paar befehle in einer Zeile mitten in den HTML Quelltext zu quetschen.

Das alles ist natürlich für den Hobby-Homepage-Bastler nicht von Belang. Das dumme ist nur, dass man "Erfahrungen in PHP" schon sehr bald nicht mehr als positive Eigenschaft verkaufen kann, sondern eher schräg von der Seite angeguckt werden wird, mit der Frage im Blick: "Aha, und welche brauchbaren und ausbaufähigen Kenntnisse bringen Sie mit?".

Letztlich kann mir das auch egal sein. Es ist nur schade für diejenigen, die sich als Einsteiger wirklich mit den Grundlagen der Programmierung auseinandersetzen und dazu eben PHP als Mittel wählen.

So, das musste raus. Übertrieben? Eure Meinung dazu würde mich interessieren.

Peter
 
Bevor ich angefangen habe PHP etwas zu mach überhaupt keinen Schimmer gehabt wie sowas ablaufen kann. Mitlerweile versteh ich das etwas.
Und ich hab mich voher an sachen wie C++ Versucht, und nie ein Wort verstanden von Schleifen und anderen gedöns, weil mich immer der Code abgelenkt hat. Und Schleifen zu verstehen ist besser als Behfehle in Visual Basic abzuschreiben und das Desgin drum herum zu machen, durch Drag and Drop und alles dann als selbst gemacht zu verkaufen.
 
Jip, Fluke, da kann ich Dir in absolut jedem Punkt nur zustimmen. Danke, daß Du den Beitrag geschrieben hast -- hätte ich das in die Hand genommen, wäre das möglicherweise in eine Beleidigungsorgie abgeglitten.

Die Problematik ist, daß ein schlechter Programmierer schlechten Code in jeder Sprache schreiben wird. Leider ist ein ganzer Haufen neuerer Entwicklungen eine Brutstätte für schlechte Programmierer. Darunter zähle ich unter anderem: php, Python, [Visual] Basic, Java (jawohl, JAVA!), ActionScript, etc. Bisher habe ich noch keinen Programmierer kennengelernt, der mit einer dieser Sprachen angefangen hat und heute guten Code schreiben kann. Solange ich kein lebendes Gegenbeispiel erlebt habe behält das folgende Zitat seine Gültigkeit:
Edsger Dijkstra:
It is practically impossible [sic] to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

.f
 
Also ich programmiere mittlerweile schon seit knapp 5 Jahren. Angefangen hat bei mir alles als ich meine Liebe zur Programmierung in C entdeckt habe. Dann habe ich C wirklich "durchgehend" gelernt und bin anschlißend zu C++ übergegangen. Mittlerweile hab eich mich in allen unterschiedlichen Programmiersprachen durchgearbeitet und behersche mittlerweile C / C++ / JAVA / VB / ASP / .NET. Aber an alle Jungprogrammierer und Neulinge:

Es kommt nicht darauf an mit welcher Sprache ihr beginnt. Das Wichtigste ist meiner Meinung nach, dass ihr euch folgendes aneignet:

*) ordentliche Syntax
*) Ordnung und eiserne Disziplin beim Codeschreiben
*) Geduld und Ausdauer

Davon hängt ab ob ihr irgendwann die hohe Kunst der Programmierung "beherrscht". Abschließend muss ich aber sagen, dass ich das Erlernen der Programmierung mit C als Anfangssprache nicht für schlecht halte. ;)
 
Ich bleibe mal sachlich und sage: du hast, zu einem gewissen prozentsatz, recht.
Man sollte NICHT mit PHP Programmieren anfangen, da kann nicht viel gutes Rauskommen!
Ich lerne seit 3 Jahren C++, hatte vor 9 Jahren mit PASCAL angefangen und schon vor 11 Jahren Batchdateien gemacht soweit man das Programmieren nennen kann.
PHP macht einem vieles sehr einfach - ich sehe keinen grund weshalb man PHP jetzt ändern sollte.
Wenn ich in C++ oder ASP (ja ich lerne seit 3 monaten auch ASP) Programmiere sehe ich einen starken unterschied zwischen den Sprachen.
ASP als Basicdialekt und PHP als C Dialekt unterscheiden sich wie Himmel und Hölle , PHP und C sind sich sehr ähnlich, bis auf den Aufbau des Programms/Scriptes.
PHP hat immer nur Eingabe/Verarbeitung/Ausgabe (klassisches EVA prinzip) und C++ muss auf Rückmeldung gefasst sein bzw. diese verwenden um zu "funktionieren".
Wenn ich C++ Programmiere kann es vorkommen das ich zwischendrin vergesse eine Variable zu definieren da ich mehr PHP programmiere - aber da komme ich spätestens nach dem nächsten "F9" hämmern drauf.
Umgekehrt passiert es mir nie dass ich in der Bunten Dreamweaver Codeansicht (die übrigens IMHO besser ist als die von CPP Builder) eine variable definiere.
Es ist ein klarer Fall für mich, sobald ich C++ programmiere oder ASP das ich die Strings umwandeln muss.
Natürlich finde ich es umständlicher, aber nicht nur deswegen sondern auch aus vielen anderen gründen ist mir PHP sympatischer.

Was ist gegen dynamische variablen einzuwenden? Ich verwende Arrays und dynamische Variablen Hand in Hand - haben beide sehr Praktische seiten.

Ich darf mich jetzt nicht darüber aufregen das der Beitrag eigentlich gegen PHP war - er war es nähmlich nicht und ich muss dir inzwischen in den meisten punkten punkten zustimmen.
Trotz allem ist für fortgeschrittenere vor allem für Ex-C++ Programmierer PHP mehr als ASP zu empfehlen, allein wegen der Codestruktur.

mfg,
NuKe

-------------------------------------
Ja ich kann PHP:
http://specialists.de.ms
http://aquata.de.ms
 
Original geschrieben von fld
Jip, Fluke, da kann ich Dir in absolut jedem Punkt nur zustimmen. Danke, daß Du den Beitrag geschrieben hast -- hätte ich das in die Hand genommen, wäre das möglicherweise in eine Beleidigungsorgie abgeglitten.

Die Problematik ist, daß ein schlechter Programmierer schlechten Code in jeder Sprache schreiben wird. Leider ist ein ganzer Haufen neuerer Entwicklungen eine Brutstätte für schlechte Programmierer. Darunter zähle ich unter anderem: php, Python, [Visual] Basic, Java (jawohl, JAVA!), ActionScript, etc. Bisher habe ich noch keinen Programmierer kennengelernt, der mit einer dieser Sprachen angefangen hat und heute guten Code schreiben kann. Solange ich kein lebendes Gegenbeispiel erlebt habe behält das folgende Zitat seine Gültigkeit:
.f

Ich habe vor 13 Jahren mit Basic angefangen, und dann Pascal programmiert, dann C++ ne weile nichts und dann mit PHP wieder weitergemacht , über C++ .net und hauptsächlich Java.
Java als brutstätte schlechter Entwickler zu nennen ist schon dreist und zeugt von Unkenntnis. In keiner Sprache wird derart auf korrekten Umgang mit Object Orientierter Technik gedrillt wie in Java. Das fängt mit dem Muss an Exceptions zu behandeln und geht weiter über den MVC Design des SDK.

Ich bin eindeutig ein lebendes Gegenbeispiel, denn ich weiss das mein Code sauber und gut ist. Währe er es nicht dann würde meine Auftragslage massig zurückgehen, und ich hätte nichts mehr zu beissen.

Und ja auch ich programmiere C++ und ja ich halte von der Sprache weniger als von Java.
Sie ist alt und unproduktiv.
Zeigerarithmetik hat den netten sicherheitstechnischen negativen Nebeneffekt möglicher Bufferoverflows, diese haben in Business Anwendungen nichts zu suchen weshalb, viele Grossprojekte im Bankwesen allzugern mit J2EE durchgezogen werden.

Um zum eigentlichen Threadthema zurückzukommen:
@ Fluke: Das hat zum Grössenteil damit zu tun aus welchen Gründen die Leute PHP programmieren. Es liegt in unserer Zeit das viele Onlinespiele spielen und ebenso ist es mode das diese dafür tolle Internet Seiten bauen.
Sprich PHP zu lernen ist für viele einfach nur ein Werkzeug um eben auf die schnelle mit sowas glaenzen zu können.
Andere Motivation == andere Vorstellungen.
Wenn mir jemand erzählt das stark typisierende Sprachen nicht von nöten sind, dann weiss ich das einfach besser.
Ich weiss aus meiner täglichen Arbeit wie dankbar ich über jeden Fehler bin der mir zur Kompilierzeit gemeldet wird, anstatt Laufzeitfehler zu produzieren.
Mann muss erst in einem aufwändigerem Projekt stecken und einen nicht nachvollziehbaren Laufzeitfehler mitgemacht haben der einen 3-4 Nächte durcharbeiten lässt um den Wert einer stark typisierenden Sprache kennen zu lernen.
Das muss aber nicht die Aufgabe der Hobby Programmierer sein, und somit lass sie einfach in dem Glauben. Die Diskussion bringt rein gar nichts.

Wer meint mit dem Wissen von einer oder zwei Sprachen solche Dinge bewerten zu können, der ist nicht offen genug um diese Dinge zu verstehen.
Wer wirklich etwas lernen will, der bewertet das nicht ohne zu wissen, sondern versucht zu verstehen, weshalb in anderen Sprachen dies so oder so ist.

Das alles ist natürlich für den Hobby-Homepage-Bastler nicht von Belang. Das dumme ist nur, dass man "Erfahrungen in PHP" schon sehr bald nicht mehr als positive Eigenschaft verkaufen kann, sondern eher schräg von der Seite angeguckt werden wird, mit der Frage im Blick: "Aha, und welche brauchbaren und ausbaufähigen Kenntnisse bringen Sie mit?".

Eine Programmiersprache darf nicht reichen als Kenntnisse. Ich habe beruflich allein innerhalb des letzten Jahres Projekte in J2EE / .NET / ASP VBScript / PHP und Ruby durchziehen müssen. Zudem gab es ein Projekt für das ich mir eben ActionScript Kentnnisse anlernen musste, zumindestens genug um den Zusammenhang nachvollziehen zu können. 3 Verschiedene Datenbank Systeme usw.
Mir hilft es das ich mir Zeit genommen habe viele verschiedene Programmiersprachen zu lernen, und als Programmierer sollte mann sein Kenntnisse weit genug streuen um flexibel einsetzbar zu sein.
 
Ohne jetzt irgendwie die ganzen Weisheiten kommentieren zu wollen. Was den Stil mit PHP betrifft hat der Ersteller recht. Daher empfehle ich immer mit
error_reporting = E_ALL & ~E_NOTICE zu programmieren (sollte eigentlich sowieso gemacht werden). Und auch wenn es nicht nötig ist auch in PHP eine Variablenkonvention wie z.B. die hungarian notation zu verwenden. Nur damit man weiß, dass man jetzt einen String und einen Integer addiert.
 
Ich werde auch nicht die einzelnen Antworten kommentieren, aber eines möchte ich schon los werden. Es ist schon seit Jahren ein Diskussionsthema an Hochschulen und Universitäten und pro Dekade kommt wieder etwas neues und man stellt fest, dass die Arbeitsweise zu vor vielleicht doch etwas umständlich, unhandlich, unflexibel, etc. war.

Eines steht für mich jedoch fest - bevor ich mir ständig um den Programmierstil sorgen mache verdiene ich doch lieber Geld mit dem was mir zur Verfügung steht. Ein Handwerker wird sicher dass eine oder ander mal über sein Werkzeug herziehen, aber er wird nicht drum herum kommen es einzusetzen, wenn er seinen Lebensunterhalt bestreiten will.

Die einzelnen Programmiersprachen, über die hergezogen wird sind nun mal Standard und dies nicht seit heute. Wer nicht zufriden ist kann sich ja ranmachen eine eigene Sprache zu entwickeln oder an den akt. Programmiersprachen mit zu wirken - und dies meine ich nicht sarkastisch. Nur beschweren und keine konstruktiven Vorschläge zu bringen ist etwas dürftig.

Was der Wink bzg. der Einsteiger, Fortg, bis Lehrende bet. - PHP ist sicher nicht ein parade Beispiel für Programmiersprachen, aber schlechter als andere Programmiersprachen ist es in keinem Fall - PHP ist anders, wäre die Sprache aufgebaut, wie C++ könnten wir sie C+++ nennen. ;)

Was die strikte Typisierung und andere Konventionen bet. dürfte PHP genauso, wie sämtliche ECMAScript v3 basierten Sprachen noch einiges dazu lernen - aber hierfür gibt es ja den ECMAScript v4 - wie man sieht hat hier ebenfalls eine Weiterentwicklung stattgefunden. Auch die Urväter der Programmiersprachen hatten die Weisheit nicht mit Löffeln gefressen!

Fazit: Wir bleiben immer lehrlinge des Lebens und lernen nie aus - das gilt auch für Entwickler von Programmiersprachen, Betriebsystemen, etc. Nur es macht einen unterschied ob man lediglich darüber philosophiert, wie schön es mit der ultimativen Programmiersprache oder Betriebsystem sein könnte - oder ob man mit dem vorhanden möglichst gute Ergebnisse erzielt und vielleicht sogar den Schritt wagt und eigene Ideen in Programmiersprachen bzw. Systeme einzubringen.

Liebe Grüsse
Matze

P.S.: Und ohne PHP würde im übrigen das Forum nicht laufen - da wäre dann wohl Perl oder ASP dran. ;)
 
Mein Kommentar zu Python:
Ganz im Gengenteil, ich finde das Python zu guten Stil erzieht. Ich hab mich wirklich nicht lange mit Python beschäftigt, aber ist es nicht so, dass man in Python gezwungen ist ordentlich einzurücken, damit zusammengehörige Codeblöcke (z. B. Schleifen) auch als zusammengehörig anerkannt werden?

mfg Grimreaper
 
Nun PHP und schlechter Programmierstyle hängen nicht unmittelbar zusammen :)

Man kann in jeder Sprache einen schlechten Code abliefern.
Nun eins ist sicherlich richtig, die meisten Programmierneulingen steigen mit PHP ein.
Dass da verbesserungswürdige Quellcode rauskommt kann man aber nicht der Sprache PHP
anlasten.
In früheren Tagen ist man halt in Basic eingestiegen, heute ist es PHP.
Der Vorteil für PHP ist doch das die Sprache überschaubar kompakt ist.

Die beste Lernspache zum Programmierlernen ist nach meiner Meinung immer noch Pascal.

Man kann auch über andere Sprache lästern :)
JAVA: Eine Sprache die schon für einfache Stringmanipulation eine eigene Classe braucht und bei
Dynamische Datenstruktuen von hinten durch die Brust ins Auge arbeitet. Und der Anspruch
Systemunabhängig zu sein ist immer noch mehr Wunsch wie Wirklichkeit.

C/C++: Der Klassiker für schlechten Progammierstyle. Unübersichtlich bis zum geht nicht mehr.

Und ob eine Sprache OOP ist oder nicht ist nach meiner Meinug zweitrangig.
Meist wird das OOP Prinzip von den Sprachen (z.b Java eher eingeschränkt) und es verleitet
die Programmierer dazu eine miserable Documentation für ihre Classen abzuliefern
wobei ich wider bei PHP bin:
PHP ist immer noch die bestdocumetierte Sprache die es gibt.
 

Neue Beiträge

Zurück