Hi!
Es hat einen Hintergrund, dass ich auf OOP allergisch reagiere. Oft bilden die Klassen nur Wrapper für vorhandene Funktionen
Dass du irgendwann mal auf unqualitativen Code gestoszen bist soll ein Hintergrund darstellen?
Darum geht es doch, dass ich immer wieder "OOP" auf den Tisch bekommen habe, wo ich gedacht habe: wenn sie es gelassen hätten, wäe es besser.
Nur weil du immer wieder auf kaputtes Zeug stößt, heißt das noch lange nicht, dass das ganze System kaputt ist. Hier im Forum bekommen wir auch immer wieder Dinge vorgesetzt, die Mist sind. Wer ist Schuld? Der Autor, nicht PHP/HTML/wasauchimmer. Und jetzt kommt mir nicht mit PHP macht es leicht, Mist zu produzieren. Ja, und? Welche Sprache ist denn ungeeignet, Mist zu produzieren?
Schade, ich konnte nichts dazulernen, sondern hatte nur Arbeit mit der kaputten Seite [...]
Schade, auch aus kaputten Systemen kann man mehr entnehmen als nur ein negatives Vorurteil aufs Gesamte.
Die Anwendung von OOP erfordert ein großes Maß an Hintergrundwissen, einerseits über die Techniken von OOP (die kenne ich immer noch nicht alle auswendig) und andererseits über das System, in dem man sie anwenden will. Und da sind nichtkompilierende Scriptsprachen eben nicht gerade der dankbarste Baugrund. Sie haben schon ein großes Maß en eigenen "Klassen und Methoden" eingebaut, die man beachten und benutzen muss, auch wenn diese nicht immer gleich als solche erkennbar sind. Alleine die Fehlererkennung und -verfolgung eines Scriptinterpreters ist schon mächtig genug.
Das hast du schonmal so ähnlich gesagt, aber nicht begründet. Weder warum OOP für Scripts ungeeignet sein soll, noch was der Unterschied in den Fehlerbehandlungen sein soll.
Ohne vernünftige Vorplanung einer Klassenhierarchie lohnt sich OOP nicht wirklich.
Ohne (technische) Spezifikationen "lohnt" sich Entwickeln allgemein nicht. Das hat nichts mit OOP zu tun.
Doch, das hat bei PHP mit OOP zu tun. Man kann sich ein System aus Scripten nach und nach aufbauen, diese austauschen, ergänzen und verbessern. Da muss man mit PHP nicht viel planen."Es funzt doch". Das können wir doch fast jeden Tag hier im Forum verfolgen.
Da kannst du jedes System nehmen. Das "funzt doch"-Prinzip ist nicht PHP-spezifisch.
Außerdem erinnere ich mich da auch noch gut an meine eigenen Anfänge. Und ich konnte bereits programmieren. Über 10 Jahre Assembler, Pascal, C und einfache Datenbanken (z.B. BTrieve) hatte ich schon auf der Uhr, als mir PHP über den Weg lief. Aber der Einstieg in die "Internetprogrammierung", also HTTP und das Client-Server-Schema haben doch noch ein paar Extrastunden benötigt, obwohl ja Btrieve auch eine Client-Server-Lösung war...
Spätestens mit PHP-OOP geht das "Hineinfinden" nicht mehr so einfach. Man muss vorher _genau_ wissen, was man will und wie man es erreicht, sonst kommen eben solche Probleme dabei heraus, wie sie der OP beschreibt.
Auch das ist wieder nichts, was man PHP allein anlasten kann. Das sind Merkmale vieler Anfänger, nicht der Systeme.
Da sollte man dann OOP lieber weglassen. Ein Shop kann mit PHP und MySQL ohne OOP extrem schlank ausfallen und trotzdem sehr gut funktionieren.
Und wo ist der Punkt, dass das mit OOP generell nicht gehen soll? Der Sinn der Verwendung einer bestimmten Strategie ist nicht nur, dass das Ergebnis schlank wird, sondern dass auch die Wartung einfach ist. Schon der Einsatz einer herkömmlichen Funktion baut Umwege in einen Programmablauf ein, macht ihn weniger einfach als Geradeaus-Code. Wenn man sie falsch einsetzt, ist sie bestenfalls nur ein Umweg. Richtig angewendet hilft sie Weiterentwicklungszeit zu sparen, weil nur noch eine Stelle statt vieler Copy'n'Paste-Stellen zu ändern ist.
Wenn ich einen wiederverwendbaren Shop in C schreiben müsste, würde ich auch lieber C++ benutzen, oder heutzutage vielleicht sogar C# und .NET oder Mono. Aber da müsste ich auch erst wieder viel üben...
Alleine für die Darstellung am Userfrontend gibt es da schon viele fertige Sachen. Die sind aber für eine Browser-Lösung gar nicht relevant.
Wenn du genug geübt hast, wirst du hoffentlich feststellen, dass es ASP.NET gibt, das unter anderem ein Userfrontend für Browser-Lösungen ist. Allerdings verwende ich diesen komponentenbasierenden Ansatz ungern, weil er gelinde gesagt nicht besonders erbaulichen HTML-Code erzeugt. Da ist mir der ASP.NET-MVC-Ansatz lieber. Bei dem bin ich vielleicht nicht so schnell, wie beim Drag&Drop von Komponenten, hab dafür aber die volle Kontrolle über das entstehende HTML, was mir beim Verwenden von CSS wieder deutlich mehr entgegenkommt.
PHP ist eine leistungsfähige Scriptsprache. Scriptsprachen haben von vornherin schon andere Möglichkeiten, als es Compilersprachen haben.
Interessant. Dann nenne mir mal drei "Moeglichkeiten", welche entgegen OO wirken.
Ich spreche nicht von "entgegenwirken", sondern von "kann das System auch ohne OOP".
Niemand bestreitet, dass man ohne OOP auskommen kann. Aber ist das ein ernsthafter Grund, dass man stets ohne auskommen sollte oder es abzulehnen?
Da ist in erster Linie die Fehlererkennung und -behandlung.
Werd doch mal bitte konkret, was du an der Fehlererkennung und -behandlung auszusetzen hast, beziehungsweise was die großen Vorteile der Scriptsprachen gegenüber der kompilierenden Sprachen sein sollen. Kleine Erinnerung: Python ist auch eine Scriptsprache. Deren Fehlermeldungskonzept baut auf die bei OOP zu findenden Exceptions auf. (Falls es Exceptions sind, auf die du anspielen willst.) Und wie bei PHP ist die OOP unter Python optional (allerdings besser in das Gesamtkonzept eingebunden).
Bei PHP kommen die mächtigen "Arrays" dazu und ihre durchaus brauchbare Anzahl von mächtigen Funktionen.
Und? Konstrukte, die ähnliche Aufgaben erfüllen, gibt es anderswo auch. Wer allerdings versucht, sich Collections etc. mit PHP nachzubauen, und an PHPs Array-Konzept vorbeiprogrammiert, ist selbst schuld. Der Programmierer! Nicht PHP, $anderesSystem oder die OOP im Allgemeinen.
Sie verfügen i.d.R. über ein stabiles Runtimesystem, dass auf Fehler in Scripten intgelligent reagieren kann.
Noch interessanter. Erklaere mir mal bitte was an der JRE - im Vergleich zu PHP's Runtime - nicht stabil sein soll.
Wieso soll _ich_ das erklären? Du hast doch "JRE" ins Gespräch gebracht. Also müsstest Du erstmal erklären, warum. Ich sprach von PHP.
Du hast es verglichen, aber mit nichts konkret anderem. Insofern war deine Aussage unverwendbar, wenn du nicht erläuterst, worauf du damit hinauswolltest. Dass dann jemand aufgrund deiner unkonkreten Aussage, sich irgendwas dazu reimt, ist nicht allein seine Schuld.
Meiner Meinung nach kann man auf die Basis einer 3rd Generation-Language entweder intelligente Scriptsprachen oder aber aber OOP-Systeme aufsetzen, nicht aber beides. Das sind zwei getrennte Wege, die sich nur schwer sauber vereinen lassen.
Ich denke, es kommt auf den Anwender an, dass er zwischen beiden Paradigmen unterscheiden kann. Und ich sehe nicht, was es generell für Nachteile bringen soll, beides zu mischen, wenn dabei die Übersichtlichkeit gewahrt bleibt. (Fundamental-Evangelisten mögen das anders sehen - ihr Problem.)
Wenn man sich für ein Projekt zur OOP entschlossen hat, muss man nicht zwangsläufig eine Klasse schreiben, wenn eine alleinstehende Funktion eine ganz spezifische Aufgabe auch so erledigen kann. Vorausgesetzt, das System bietet sowas an. Unter PHP braucht man sowieso auch noch den herkömmlichen Aufruf von Funktionen, kann also gar nicht reines OOP programmieren. Unter C# beispielsweise geht es nicht ohne eine Klasse.
Generell halte ich OOP für einen legitimen Lösungsweg, ohne den viele der heutigen Programme nicht existieren würden. Aber viele kämen vermutlich auch mit sehr viel weniger Speicher aus, wären viermal so schnell, usw.
Ja. Das beste Ergebnis erziehlt man meiner Meinung nach, wenn man projektbezogen eine vernünftige Entscheidung trifft und nicht nur das Bauchgefühl oder nur schlechte Erfahrungen zurate zieht.
Lo!