.| Autor | Beitrag |
|---|---|
|
000 19.07.2002, 14:14 RockingRolli |
Moinsen. |
|
Profil || Suche |
|
001 19.07.2002, 14:53 TheTinySteini |
Das hab ich mich auch schonmal gefragt. Aber weißt du was? Mach dir darüber einfach keine Gedanken. TheTinySteini |
|
Profil || Suche |
|
002 19.07.2002, 15:08 RockingRolli |
Alles will ich ja auch nicht in Klassen haben, nur das, was für mich sinnvoll erscheint, deswegen werde ich auch nicht aus einer Funktion eine Klasse machen, das wäre sinnlos, aber wenn es mehrere Funktionen sind, die alle miteinander was zu tun haben, dann sind Klassen besser. |
|
Profil || Suche |
|
003 19.07.2002, 15:55 [RMen]OneStone |
Und was wär mit counter_visitstotal($counter)? =) --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
004 19.07.2002, 16:37 Kriz |
Der klare C-Stil ist aber im Gegensatz zum klaren C++-Stil um Lichtjahre unterlegen. Anscheinend habe die meisten von euch noch immer nicht kapiert, wieso der imperative-strukturierte Stil keine Zukunft mehr hat... Der Mensch denkt in Objekten, egal wie, wo und wann! Ein Computer "denkt" dagegen in Daten und Funktionen, die diese Daten in irgendeiner Weise ver- oder bearbeiten. Diese maschinelle Denkweise ist für den Menschen unnatürlichen Ursprungs und zwingt ihn zu einer ihm normalerweise vollkommen unbekannten und unproduktiven Denkweise. Existiert dagegen eine Möglichkeit, das menschlich-objektorientierte Denkverhalten auf Maschinen zu übertragen, so erleichtert das die konzeptionelle Arbeit erheblich! Die Maschine sorgt dann selbst dafür, daß die menschliche Objektabstraktion in eine für die Maschine verständliche Daten-Funktionen Abstraktion konvertiert wird. C ist imperativ-strukturiert, orientiert sich banal an der maschinellen Denkweise. C++ ist (semi)-objektorientiert und orientiert sich an der menschlich-abstraktiven Denkweise. Da der Mensch letztendlich das Programm entwirft und implementiert, ist er nach allgemeiner Auffassung mit objektorientierten Sprachen besser bedient als mit imperativ-strukturierten Sprachen. Und das ist kein Joke, daß ist Tatsache! Neben der damals fehlenden Codewiederverwendbarkeit war auch das oben beschriebene Problem eines der Hauptauslöser für die Softwarekrise. Die Verwendung von Klassen als Datenstruktur für Objekte in PHP ist meiner Meinung nach für die Bündelung und Isolierung voneinander unabhängiger Programmelemente der erste Schritt zu effektiver PHP-Programmierung. Da die PHP-Klassen aber im Prinzip nichts anderes Darstellen als ein verkrüppelter Abklatsch der C++ Klassen (die haben mehr mit Strukturen gemeinsam als mit Klassen), ist das PHP-Klassenkonzept erstmals nur eine Bereinigung von wildem Code. --K:R-I)Z++ |
|
Profil || Suche |
|
005 19.07.2002, 19:47 Prefect |
Der Witz ist nur, daß die ach so vehementen Prediger von C++ keinen klaren C++-Stil verwenden :P
Einspruch! Ich bin wahrscheinlich eine extreme Rarität in der Hinsicht, aber wenn man programmiert seit man denken kann, dann kann man dem Computer "nachfühlen" und kann eben doch in Funktionen und Daten denken...
Was für eine Softwarekrise? Meinst du die, die dadurch ausgelöst wurde, daß sämtliche Aktien auf dem Neuen Markt überbewertet waren? Das hatte wohl eher nichts mit den verwendeten Programmiersprachen oder dem Unwissen der Programmierer zu tun, sondern mit dem Unwissen und der Naivität der Anleger, Händler & co... cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
006 19.07.2002, 22:25 RockingRolli |
Es heißt ja nicht, dass wenn man objektorientiert Programmiert, dass man das nicht versteht (siehe Java ;) ). Aber warum sollte man sich daran gewöhnen, wie der Computer das macht? Letztendlich ist es jedem selbst überlassen, wie man am besten programmiert. Ich hab auch verschiedenes probiert und mir gefällt die OOP am besten. -- |
|
Profil || Suche |
|
007 20.07.2002, 00:22 Kriz |
Prefect, mit dieser Einstellung solltest du folgendes niemals studieren: Informatik und all seine Ableger... Ich programmiere auch schon allerlei seit ich 9 bin, vom allerersten Einzeiler in BASIC bis hin zu kompletten C++ DBV-Systemen (wobei mein erster Versuch 1996 in C++ auf mich heute wirkt wie ein zu Code gewordener Witz =). Ich habe auch die imperative wie auch die objektorientierte Variante erlernt, also weiß ich definitiv, wovon ich rede! Und die Industrie steht nicht mehr auf so auf C wie noch vor 15-20 Jahren. Zum Thema Softwarekrise: Damit ist nicht der Aktieneinbruch am NEMAX gemeint, sondern der kolossale Einbruch in den 70er Jahren bei der SW-Entwicklung. Die geforderten Resultate waren mit den typisch imperativ-struktuierten Sprachmodellen nicht mehr so zu realisieren, wie ein Projektplan das am Anfang mal vorgesehen hatte. Zu komplex, zu umständlich, zu teuer und zu zeitfressend waren die SW-Projekte mit C, ADA, Fortran, Cobol und wie sie alle heißen geworden. Es gab nicht minder wenige Projekte, die wegen Erschöpfung und Sprengung des Budgets eingestampft werden mußten, nur weil der Zeitrahmen zur Realisierung durch eine imperative Struktur (trotz Libraries usw.) zu kostenintensiv geworden war. Oder meinst du, objektorientierte Sprachen sind nur entstanden, weil jemand gerade mal etwas Zeit hatte, "mal was anderes" auszuprobieren? Laß dir mal von einem alten Informatiker sagen, daß C heutzutage in der Industrie nur noch aus historisch-kompatibilitären Gründen verwendet wird. Neuentwicklungen laufen zu 95% nur noch in C++, Java, Delphi oder anderen OOLs ab. --K:R-I)Z++ |
|
Profil || Suche |
|
008 20.07.2002, 10:36 Prefect |
RockingRolli: Klar. Ich habe ja auch nur von mir geredet. Das der (Haupt-)Anreiz für andere Leute woanders liegt ist mir schon klar. Kriz: Fällt dir eigentlich auf, daß du mir Meinungen in den Mund legst, die ich nicht vertrete? cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
009 20.07.2002, 12:58 apfelkorn |
also zurück zur ursprünglichen Frage: Wenn ja, dann lohnt es sich zum Beispiel aus dem (Text-)Counter ein Objekt zu machen, weil man mehrere einfach nur ein weiteres Objekt der Klasse Counter erstellen muss, was alle funktionen selber mitbringt und nur initialisiert werden muss. Bei Grafikcountern wäre das natürlich wieder anders, weil, du ja wohl sehr selten in ein Bild zwei Counter unterbringst. Fazit: Verrichten mehrere "Objekte" auf einer Seite die gleiche Arbeit, lohnt es sich in PHP Klassen zu verwenden. -- |
|
Profil || Suche |
|
010 20.07.2002, 13:58 Kriz |
@Prefect: Ich will dir keine Meinung aufbinden, ich will du nur mal zeigen, was Realität ist draußen in der Welt. Auch ich kann (wenn ich will) in Funktionen und Daten denken , schließlich haben wir beide (!) damals so angefangen Programmieren zu lernen. Aber es ist viel leichter, umkomplizierter (in einer gewissen Weise) und schneller in Objekten zu denken als in Daten und Funktionen. Das fast 75% aller Welt-Programmiersprachen imperativ-strukturiert arbeiten, erfordert beinahe fast schon die Fähigkeit, auch wie eine Maschine zu denken. Aber laß nochmal 10 Jahre ins Land gehen, evtl. auch 15 und keine Sau wird sich mehr ernsthaft mit imperativ-strukturierten Sprachen anfreunden, wenn er nicht gerade wissenschaftlich mit C unter *nix/Linux/Solaris arbeiten muß. Aber ich denke, auch dort wird irgendwann in nicht allzuferner Zukunft das GNU-Doktrin zur bevorzugten Benutzung von C bei Anwendungen gebrochen werden. Auch ein Richard M. Stallman kann nicht Tendenzen unbegrenzt beeinflussen. @Apfelkorn (hicks): Wie ich schon sagte, Klassen in PHP lohnen vorerst nur zur Entrümpelung von gleichartigen Prozessen innerhalb eines Skripts. Natürlich kann man mit PHP Klassen bereits nützliche Objekte schaffen. Ich verweise da mal auf meine GermanDate-Klasse, die je nach $PHP_OS ("Linux" oder "Win32") die durch setlocale() beeinflussten Lokaleinstellungen des Systems korrekt auf eine deutsche Datumsausgabe projeziert. Ich hatte anfänglich das Problem, daß setlocale() von Linux und Win32 anders interpretiert wird, sprich es eine Inkompatibilität zwischen zwei versionsgleichen PHP-Interpretern gibt. Meine GermanDate Klasse behob dieses nervige Problem elegant und sparte redundantes Coden. @Rest der Welt: Nein, Prefect und ich unterhalten uns ganz "normal" wie immer (hehehe) =) --K:R-I)Z++ Dieser Beitrag wurde am 20.07.2002 um 14:00 von Kriz bearbeitet. |
|
Profil || Suche |
|
011 20.07.2002, 15:24 TheTinySteini |
Kriz & Prefect: ist ja alles schön und gut. Nur was dem einen schmeckt, muss nicht das Leibgericht des anderen sein. Anders sieht's natürlich aus, wenn man mal in ein Programmier-Team eingebunden wird. Dann ist natürlich absolute Vorraussetzung, dass mit Klassen und genau definierten Schnittstellen gearbeitet wird, damit das Zusammenspiel klappt. Im Informatikstudium mag man zwar die möglichst weitestgehende Abstraktion und Aufteilung eines Problems in Funktionen und Klassen lernen. Aber ehrlich gesagt - zu viel Abstraktion tötet die Lust am Programmieren. Da sollen wohl alle Programmierer auf eine Schiene gebracht werden. Tut mir leid, aber nicht mit mir (ich studier sowieso kein Informatik =) ). Der Codestil ist und bleibt so etwas wie eine Handschrift. Wenn man versucht, einen gewissen Codestil aufzudrängen, dann wird das nix... siehe Microsoft -> buggy Programme =) --TheTinySteini Dieser Beitrag wurde am 20.07.2002 um 15:32 von TheTinySteini bearbeitet. |
|
Profil || Suche |
|
012 20.07.2002, 16:09 Kriz |
Das hast du recht! Die Informatik bereitet dich auf die Industrie vor und da kann man mit seiner "Handschrift" nur böse Blicke des Chefs ernten. Privat ist es natürlich dahingestellt, wie man seinen Code gestaltet. Aber stilistisch sauber aufgesetzter Code liest sich nunmal leichter als wirres Durcheinander, weshalb man bereits im Studium sowas eingetrichtert bekommt. Und ich habe das niemals als Nachteil empfinden müssen, eher als Vorteil. --K:R-I)Z++ Dieser Beitrag wurde am 20.07.2002 um 16:11 von Kriz bearbeitet. |
|
Profil || Suche |
|
013 20.07.2002, 22:20 Prefect |
C++ ist prinzipiell erst einmal nicht langsamer als C. Wenn man konzeptionell gleichen Code einmal unter C und einmal unter C++ schreibt ändert sich an der Geschwindigkeit erst einmal nichts - auch wenn man unter C++ Klassen verwendet.
und
Beide Codeschnipsel sind im Prinzip gleich schnell, da sie den gleichen Code darstellen, nur anders formuliert. Allerdings läßt sich ein C++-Compiler eher dazu ermuntern, den this-Pointer in einem Register statt auf dem Stack zu übergeben. Von daher könnte die C++-Version etwas schneller sein. virtual-Funktionen sind natürlich langsamer als normale Funktionsaufrufe, aber sie entsprechen ja konzeptionell Funktionspointern, und die sind wiederum gleich schnell. In manchen Fällen (z.B. Templates) kann C++-Code auch dadurch schneller werden, daß der Compiler inline-freudiger wird. Konzeptionell gleicher Code ist unter C++ wohl fast immer schneller oder zumindest gleich schnell. Allerdings ermuntert C++ viele dazu, ineffizienten Code zu schreiben, und das ist nicht zu unterschätzen... cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
014 22.07.2002, 14:42 dp Administrator |
hm ich find klassen in php nicht wirklich toll. (mehr sag ich jetzt dazu bewusst nicht =) @apfel: str_replaces bei templates sind _wesentlich_ langsamer als eval(). das sicherheitsproblem kann man auch anderweitig, an der wurzel in den griff kriegen (register_globals). -- |
|
Profil || Suche |
|
015 22.07.2002, 16:57 TheTinySteini |
@dp: allerdings wird es wohl ne ganze Zeit dauern, bis sich register_globals = off durchsetzt - es gibt einfach zu viele Scripts, die darauf aufbauen. Und wenn man sich dann so einen Pfusch wie bei phpmyadmin anguckt, wo einfach alle Variablen manuell übernommen werden (aber ohne Check, ob sie wirklich benötigt werden)... naja. --TheTinySteini |
|
Profil || Suche |
|
016 22.07.2002, 17:06 dp Administrator |
naja, ich finds auch ziemlich asslig jetzt einfach mal so tiefe änderungen vorzunehmen, aber wenn dann bitte richtig. dann soll es ab der nächsten php version eben garnicht mehr anders gehen. die jetztige situation ist äußerst beschissen, du musst so coden dass register_globals on und off sein kann, < php 4.1 muss auch noch gehen (von wegen $_REQUEST) und nebenbei muss das ganze auch noch sicher sein. klar, strato & co werden nicht von heute auf morgen umstellen, aber das ist nur eine frage der zeit. wenn man nicht gerade selbst nen server rumstehen hat, muss man eben auf das zurückgreifen was funktioniert. die phpmyadmin lösung ist genauso pfusch wie beim thwboard, man kann halt nicht einfach mal an einem tag das ganze so umschreiben dass es mit register_globals off funktioniert. deswegen schätze ich auch, dass es bei phpmyadmin auch nur ne zwischenlösung ist. ne funktion wie register_var() (builtin natürlich)wäre wünschenswert, aber das bringt auch nichts mehr, denn dann muss man 3 unterschiedliche konfigurationen beachten. imho alles ziemlicher screw was die da verzapft haben :\ -- |
|
Profil || Suche |
|
017 23.07.2002, 12:05 TheTinySteini |
Naja, die extract-Funktion ist ja ganz nützlich, nur ist leider das wirklich wichtige Flag erst vor kurzem hinzugekommen: EXTR_IF_EXISTS. Dann werden die Variablen nur übernommen, wenn sie bereits definiert wurden. Das macht Sinn... TheTinySteini |
|
Profil || Suche |
|
018 23.07.2002, 15:53 dp Administrator |
$_GET ist "superglobal", d.h. du musst es nicht in funktionen global machen. ansonsten ist es das gleiche wie $HTTP_GET_VARS, nur mit dem unterschied dass $_GET php4.1+ ist. wirklich nützlich ist sowieso nur $_REQUEST, da es _GET _PUT _POST etc kombiniert. sowas gab's in php < 4.1 nicht. -- |
|
Profil || Suche |
|
019 23.07.2002, 21:29 TheTinySteini |
... aber da viele Webhoster noch auf 4.04 und so rumhocken (und grade mal wieder ein heftiges Sicherheitsloch in PHP 4.2.(x < 2) gefunden wurde), taugt das wohl noch nix. --TheTinySteini |
|
Profil || Suche |
|
020 27.07.2002, 20:33 static_caster |
@prefect: was isn eigentlich klarer c++-stil? (damit ich deine meinung verstehen kann) -- |
|
Profil || Suche |
|
021 30.07.2002, 14:49 Prefect |
Hmm. Klarer C++-Stil ist was sehr subjektives. Wenn ich ein Programm in klarem C++-Stil sehen würde könnte ich es dir sagen. Qt kommt dem Ziel wahrscheinlich bis jetzt am nächsten. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
022 30.07.2002, 17:00 Kriz |
Hm, eine kleine Anekdote aus der Firma: Ich schreibe Methoden, Funktionen oder generell alle Bezeichner sehr ausführlich aus: Ein simples strcpy wird bei mir tatsächlich zu einem StringCopy oder aus einem static const long unsvid; wird bei mir ein static const long m_sclUniqueSerialVersionID; usw. Außerdem klatsche ich gerne mal etwas mehr Kommentare in den Code als andere. Darüber habe ich mir anfangs viel Gelächter anhören müssen, von wegen "Was machst du denn da? Romane schreiben? Wir entwickeln Software und keine Betriebsanleitungen!" und ähnliches mehr. Zur Info: Kommentare werden bei uns noch nicht sooo streng in die Ergebnisbewertung einbezogen als woanders. Tja, bis dann eines Tages eines von zwei Teilmodulen zurückkam mit der Bitte um Revision und Nacharbeit. Das besagte Modul hatten meine Kollegen entwickelt und erwies sich als stlistisch absolut unlesbar, unverständlich und schwer verdaulich für Drittleser. Auf die Anfrage, wo denn das zweite Modul bliebe (an dem habe ich u.a. mitgewirkt),kam die lapidare Antwort des Kunden: "Wieso? Das zweite Modul ist im Gegensatz zum ersten ein Augenschmaus an Stil und Lesbarkeit. Alles ist sofort auf Anhieb verständlich und man weiß sofort, mit was man es zu tun hat. An dem zweiten Modul gibt es nichts auszusetzen..." Seitdem ist es still aus dem Lästerlager geworden... --K:R-I)Z++ |
|
Profil || Suche |
|
023 30.07.2002, 19:31 TheTinySteini |
It was hard to code, it should be difficult to understand... --TheTinySteini |
|
Profil || Suche |
|
024 30.07.2002, 20:53 Kriz |
* no comment * --K:R-I)Z++ |
|
Profil || Suche |

