Mailinglisten-Archive |
Daniel Lorch wrote: > hi, > >> Was hat die Sprache Java wirklich neues gebracht. Da ist etwas >> cross-platform, aber sonst: wer hat's erfunde? > > > Meine Erfahrungen als Programmierer sind noch zu gering, um hierzu > eine Expertenmeinung abzugeben. Ich kann nur wiedergeben, was ich > beobachtet habe und freue mich natuerlich, wenn das in Frage ge- > stellt wird. > > Die "Write Once, Run Anywhere"-Philosophie, die Du ansprichst, ist > schon lange nicht mehr primaerer Grund um auf die Java-Plattform > zu setzen. Was mich als Programmierer interessiert ist die Lang- > lebigkeit meines Codes: Wenn ich etwas schreibe, dann will ich, > dass Das wiederum interessiert mich überhaupt nicht (in einer Skriptsprache). Schau mal auf die jüngsten Umfragen unter PHP-Anwendern: das Gros der PHP-Anwendungen ist sehr klein (< 20kloc) und wird in kleinen Teams (< 3 Developer) entwickelt. Bei so kleinen Anwendungen kann man recht schnell alles neu schreiben. PHP steht für RAD, Prototyping und BASIC solange sich nicht in den Köpfen bei Zend etwas ändert. Etwas, das Leuten wie mir und vielen die ich gerade auf der Konferenz (wieder-)gesehen habe, endlich erlauben guten Gewissens auch etwas größere Anwendungen zu schreiben. PHP hat sich gegen Standards entschieden. Es gibt nichts, was Du einmal lernen kann und dann dein Leben lang benutzen kannst. PHP ist im Fluß, keine Chance sich auf die faule Haut zu legen. Du mußt schon etwas kreativ sein und Dir jedes mal ein paar neue Komponenten zusammenschnitzen. Dabei wirst Du schnell einen i.W. identischen Grundstock aufbauen. Ob beim einem Arbeitgeber nun PEAR oder beim anderen PHPLib und beim nächsten XYZ zu Einsatz kommt ist unwichtig für mich. Mehr als eine Woche wird es nicht dauern, die wichtigsten neuen APIs kennenzulernen. > 1) der Code selbst in ein paar Jahren noch Gueltigkeit hat > und nicht umgeschrieben werden muss, bloss weil sich die > API wieder geaendert hat. Ich plage mich seit 1997 mit PHP. Mir ist von Version 2 bis Version alles über den Weg gelaufen. Ich habe einen PHP 2 Shop auf PHP 4 gehoben und wette, daß praktisch der gesamte Code, den ich geschrieben habe auch unter PHP 5 läuft. > 2) mein dabei erworbenes Wissen erhalten bleibt. Die Zeit > und Kraft, die ich aufwende um mein Wissens-Portfolio > aufzubauen soll erhalten bleiben: Ich muss meinen Markt- > wert aufbauen koennen, ich moechte mich vom Fleck be- > wegen und Neues lernen und nicht Zeit damit verschwenden > Altes zu revidieren, nur weil sich mal wieder die API ge- > aendert hat. Alles was ich bislang machen mußte, um einen Versionssprung zu überleben, waren drei Changes Files zu lesen: PHP 2 => 3, PHP 3 => 4, PHP 4 => 5. > Abstraktionen sind nichts Neues, aber in der Java-Plattform wird > sehr viel Wert darauf gelegt diese zu definieren und einzuhalten. > Beispiele: > * JDBC: Abstraktion fuer RDBMS Ich nutze seit 1998 PHPLib-DB und es tut in allen Anwendungen die ich seitdem geschrieben habe. > Die Wohldefiniertheit dieser Abstraktionen ist nicht spezifisch zu > Java, aber dort wird sie (mehr oder minder) konsequent eingehalten. Hmm, Java und GUI-Zeugs... > Die Langlebigkeit des Wissens hat auch positive Einfluss auf die > Wirtschaft: Schreibe ich ein Buch ueber JDBC, kann das ueber mehrere > Jahre hinweg verkauft werden. Das ist nicht nur fuer den Verleger, > sondern auch fuer den Autoren attraktiv. Schulungen koennen angebo- > ten werden, ohne dass man befuerchten muss, dass in 2 Monaten die > API anders ist. Also eigentlich ist in der MySQL-Extension von 3 auf 4 nichts passiert. In 5 lebt das Ding immer noch nur Power-User können auf eine andere Extension wechseln. Wenn Du die Kursteilnehmer mit PHP 3 / MySQL langweilen willst, geht das immer noch mit dem altem Material. > PEAR ist auf dem richtigen Weg, bloss braucht es seine Zeit, bis > sich diese APIs durchgesetzt haben. Schreib doch mal ein Buch ue- > ber Abstraktionen fuer RDBMSe unter PHP. Womit wuerdest Du anfangen? > "Es gibt viele Moeglichkeiten, u.a. .." und "in der Version 1.23 war > es so, aber in der Version 2.34 ist es total anders. Bis dieses Buch > gedruckt wird, koennte es sich nochmals geandert haben". Wozu brauche ich eine Datenbankabstraktion? Datenbankabstraktionen sind Blödsinn. Entweder ich gehe gleich auf DAO's oder ich laufe doch wieder in die Abhängigkeit von einer (spezifischen) Datenbank. Spätestens beim schreiben des SQL's... Egal. Ich arbeite sei 1998 mit der PHPLib DB-Klasse und bin recht glücklich mit dieser Low-Level-Abstraktion. > Abstraktionen sind wichtig. Siehe STL fuer C++. Nur PHP hat das Abstraktionen sind für Webanwendungen überflüssig. Siehe das Fehlen von Standards in PHP, Ruby, Perl, Phyton. > Problem ,dass es interpretiert wird, so dass der Zusaetzliche Co- > de die Laufzeit der Applikation verlangsamen koennen. "PEAR_DB > ist bloated" - und schon gibt's Leute, die dann mit "low-level > mysql_connect()" arbeiten und den ganzen Vorteil zunichte machen. > Wohl deshalb (als Randbemerkung) ist es wichtig eine gute und > freie Virtual Machine zu haben, die performant Bytecode ausfuehren > kann [1]. > > [1] http://www.edwardbear.org/pap.pdf Hier geht es um etwas anderes. Es gibt die gute und freie Zend Engine. Die Zend Engine arbeitet jedoch grundlegend anders als Thies & Sterling es propagandieren. Die Zend Jungs basteln Bytecode während des Parsings. Das macht die Kompilierung schnell. Es gibt jedoch keinen AST und damit keine nennenswerte Möglichkeit zur Optimierung. Außerdem ist da noch der .NET Gedanke, der CLR: CPAN lockt. > Ein Problem, das ich noch sehe, aber bei dem ich nicht ganz sicher > bin: PHP's fehlende Typensicherheit muesste Polymorphie verunmoegli- > chen, oder irre ich mich? Es gibt diverse Formen von Polymorphismus. So beherrscht PHP beispielsweise den Subklassen-Polymorphismus (Inklusions-Polymorphismus) während Methodenoverloading nicht durch die Syntax der Sprache unterstützt wird. Du kannst mit gettype() eine Variable jederzeit fragen, welchen Datentyp sie gerade glaubt darzustellen. Prinzipiell wäre es möglich Overloading in die Engine zu stecken, es würde nur langsam werden... Ulf
php::bar PHP Wiki - Listenarchive