![]() |
hi,
@sportfreund: ich hab mir fürs php programmieren damals den vorgägner von diesem gekauft: http://www.amazon.de/exec/obidos/ASI...310003-5548018 (php kochbuch) und fand es sehr gut. es ist sicher nicht für den einstieg in die (php-)programmierung geeignet, aber du suchst ja auch kein einsteigerbuch. ad php = rückschritt zu c#: ich finde, php ist eher mit c++ zu vergleichen. c++ ist gut, aber einfach eine "ältere" sprache - die technik hat sich weiterentwickelt. alles was man in c# programmieren kann, kann man auch mit c++, ABER mit - im besten fall - dem doppelten aufwand. (ausnahme: hardwarenahe programmierung) mit c# meine ich z.B. auch asp.net - genauer asp.net programmierung mit c# - damit kann man php wohl am ehesten vergleichen. von solchen dingen, wie dass ich mit c# z.B. professionelle win-forms anwendungen, windows services, directX + multimedia und vor allem auch sehr performant programmieren kann will ich garnicht reden - dafür ist php nicht gedacht, das wäre ein unfairer vergleich. jede .net sprache wird in intermediate langauge und dann in maschinencode übersetzt - php ist soweit mir bekannt ein interpreter, oder? ;) gibts in php z.B. reflection oder garbage collection? soweit ich weiß, bei php 4.x nicht, oder? (da hat sich aber einiges getan bei php 5, glaub ich) unter asp.net hab ich eine saubere trennung zwischen design und code - das versucht php zwar durch "zusätzliche tools" auch - kann man aber wohl nicht ganz vergleichen. asp.net implementiert ein ereigenisgesteuertes programmiermodell - sowas gibts in php nicht in der form, oder? ich hab unmengen vorgefertigter controlls, die erkennen, auf welchem endgerät sie sich renden müssen und selbst anpassen, wie sie gerendert werden. ich kann unter asp.net einstellen, dass meine html seiten nach xhtml 1.0 strict gerendert werden sollen. wo geht das in php einzustellen? (nicht zu programmieren !) es gibt gute chaching mechanismen, die z.B. daten einer webseite nur akutallisieren, wenn ein sql-dependency "ausgelöst" wird - also sich werte in einer DB ändern. wo gibts sowas in php, ohne dass man was dafür programmieren muss? neuere controls verwenden ajax, oder "atlas", wie es von MS genannt wird, sodass content vom webserver nachgeladen werden kann, ohne einen postback der seite auszuführen -> das alles geht einstellungen - man muss nichts dafür programmieren. viele dinge geheh wohl in php auch - meiner meinung nach hat asp.net - egal ob mans jetzt in c# oder in vb.net programmiert (soweit ich weiß, gibt es nur 1 php und man kann sich die sprache nicht aussuchen) die höhere produktivität. für c# gibts professionelle entwicklungsumgebungen. debugging unter php war ein horror - ich glaubt, das ist inzwischen aber schon viel besser (hoffentlich) fg -hannes |
Na endlich brennt's! ;)
Den Seitenhieb mit den Windows nahen Sachen übergeh' ich mal, der OP hat ja auch "Website" erwähnt... @ Interpreter & Übersetzen Na dann viel Spaß beim Übersetzen... :) Mit PHP *kann* ich APC oder einen ähnlichen Cache benutzen, der geänderte Scripts automatisch in Bytecode umwandelt und zwischenhält. Es gibt zwar Projekte die Kompilieren von PHP Code zum Ziel haben (sogar für .NET), aber da kann ich gleich in C programmieren. @ Reflection Also wir wollen schon den aktuellen Stand vergleichen, oder? PHP4 hatte rudimentäre Reflectionfähigkeiten, aktuell ist http://php.net/manual/en/language.oop5.reflection.php @ GC Ich kann in der Referenz keinen Hinweis auf malloc() oder free() finden ;) @ Trennung von Design & Code *lol* Nur weil du PHP Code in HTML einbetten *kannst*, heißt das noch lange nicht, dass du das tun *musst*. Nein ich kann bei PHP nicht einstellen, dass valides XHTML ausgegeben wird, es gibt ja auch nicht proprietären Mist per default aus. :D Ich *kann* aber Tidy zwischenschalten wenn ich selbst zu faul bin validen Markup zu schreiben. Verdammt, das *kann* man aber auch eigentlich "einstellen". Deine tollen Controls und "Einstellungen" hat ja auch jemand programmiert. ;) Und ich will auch hoffen, dass sie "dabei waren" - bei dem Preis :) Du vergleichst hier aber schon Äpfel mit Birnen, nämlich ein Framework mit einer Programmiersprache. Aber wenn wir schon dabei sind... Wenn man wollte könnte man auch Java Objekte, COM, .NET Assemblies, Perl, Python, WSH Objekte in seinem PHP Script (an)sprechen, Funktionen aus DLLs/DSOs aufrufen... Anscheinend hast du dir keine Entwicklungsumgebung für PHP gekauft... Verständlich, ist ja auch nur eine "kostenlose" Opensource Scriptsprache... PHP Debugging ein Horror? Ein Scherzerl zum Abshluß, oder wie? :lol: Ich hoffe dir sind die vielen "kann", "könnte" und "wollte" aufgefallen ;) ~ ...wo is' bloß der Flame Smily? |
hi,
der flame smily als nachtrag: :mad2: (das ist eh der, oder ?) ;) @interpreter + übersetzen: ...und was passiert dann mit diesem bytecode? -> er wird von einer virtuellen maschine ausgeführt! (also sicher nicht schnell) gänderte scripts: asp.net merkt automatisch, wenn sich etwas ändert (script, konfig) übersetzt das ganze neu in IL und dann in maschinencode, startet die session neu usw. @reflection: o.k., da hast du recht, das war ein unfairer vergleich mit php 4.x – anscheinend wird aus php ja doch noch eine programmiersprache. ;) @GC: Wenn man in google danach sucht, findet man als erstes: "In PHP emalloc() function implements the error safe wrapper around malloc(). Unfortunately this function suffers from an integer overflow and considering the fact that emalloc() is used in many places around PHP source code, it may lead to many serious security issues." @Trennung von Design & Code: ich kenns so, dass du in der "design"-seite platzhalter hast lassen müssen, wo dann der php code als solcher eingefügt wird. ist das nicht mehr so? in asp.net hab ich events, wo ich den auszuführenden code reinprogrammieren kann. ad "Du vergleichst hier aber schon Äpfel mit Birnen, nämlich ein Framework mit einer Programmiersprache." Ja und? Mir geht’s darum, mit wenig aufwand performante webanwendungen zu schreiben. asp.net bietet dazu ein reichhaltiges framework – natürlich hat die tollen controls jemand programmiert, damit ich es nicht mehr selbst machen muss – was aber nicht heißt, dass ich es nicht machen kann, wenn ich will. Eins stimmt: asp.net erkennt andere browser als den IE als „veraltet“ und erzeugt „uralt“ html, obwohl inzwischen jeder neue browser z.B. css versteht. Das kann man aber wiederum einstellen, sodass auf jedem browser „zeitgemäßes“ html gerendert wird. Für php gibt’s ja auch viele libraries – ich glaub, pear ist eins der bekannteren – man muss sich halt alles zusammensuchen, damit man auf die funktionalität kommt, die man in asp.net von haus aus hat. Hast recht – ich hab mir keine entwicklungsumgebung für php gekauft – zend studio hab ich mal in einer trial version ausprobiert – aber imho. kein vergleich zu visual studio – kenn da aber die neueren versionen nicht. Für c# gibt’s auch sehr gute freie entwicklungsumgebungen – z.B. #develop. Wäre wirklich mal interessant, anforderungen für eine webapplikation festzulegen und dafür eine referenzimplementierung in php und asp.net zu machen. so wie das MS mit der portierung vom petshop sample gemacht hat. Eine einfache webapplikation mit Authentication, datenbankanbindung mit der einfachen funktionalität wie z.B. werte in einer DB-tabelle zu bearbeiten ist in asp.net in 5 minuten programmiert. Wie lange braucht man dafür in php? Fg -hannes |
@ GC
Ja, aber im PHP Sourcecode (C)! Zeig mir doch bitte mal ein Stück MS.NET Source wo du überprüfen kannst wie's gemacht wird? ;) @ Trennung von Design & Code In PHP kanns ich's auf so viele verschiedene Arten machen, dass ich gar nicht genug wegstehende Teile an meinem Körper habe um sie alle abzuzählen... :D Kannst du dir in ASP.NET auch aussuchen auf welche Art und Weise du das angehen möchtest? @IE *prust* Selten so gelacht :) IE ist ja mittlerweile der schlechteste CSS Browser... @ Zeitfaktor Aha, und wie lange brauchst du für's Deployment? ;) ...wie wärs mit ein paar einfacheren Beispielen? - MD5 Prüfsumme einer Datei $checksum = md5_file($file); - Einen Datensatz aus einer DB auslesen $db = new PDO(DSN, USER, PASS); $rs = $db->query("SELECT * FROM table LIMIT 1")->fetch(); - Einfacher SOAP Request $soap = new SoapClient($ebay_wsdl); $rslt = $soap->GetSearchResults(array('Query' => 'ipod')); :p ~ PS: Ich kann nicht sagen Rot ist schlecht, wenn ich davon nur einen Schimmer gesehen habe... |
hi,
@GC: z.B. .net reflector kann man verwenden, um sich sourcen anzushen - der erzeugt aus dem IL-Code wieder sourcecode. so dass alles frei zugänglich ist wie bei php ist es aber nicht. um nachzuschauen, wie was gemacht wird, muss ich ja aber nicht gleich ins framework schauen. imho. ist es sogar falsch, wenn ich wissen muss, wie intern was gemacht wird, um es zu verstehen/verwenden -> das widerspricht den prinzipien der objektorientierten programmierung. @ Trennung von Design & Code: grundsätzlich kann ichs natürlich auch so machen, dass es gemischt, oder "irgendwie" getrennt wird. ich brauch mich aber einfach nicht darum kümmern - es passiert automatisch und zwar in einer weise, die gut ist. warum aus 10 möglichkeiten auswählen - auswählen zu können ist nicht immer ein vorteil - ich find es besser, wenn es 1 methode gibt, die gut funktioniert. (hier gab es jedoch änderungen von asp.net 1.1 zu 2.0 => in 1.1 war es tatsächlich nicht ganz optimal, weil variablen u.U. mehrfach deklariert werden mussten - .net 2.0 löst das nun mit partiellen klassen) @IE: hab ja nie behauptet, dass der IE für CSS gut ist - hab nur gesagt, dass man einstellen kann, wie was auf welchem brwoser gerendert wird. geht das in php auch einzustellen? @zeitfaktor: was soll an deployment lange dauern? virtual directory im IIS anlegen und alles via xcopy rüberkopieren. die option für click-once deployment ist eine option - wenn mans einstellt, wird ein setup generiert, sodass man das programm von einer webadresse installieren kann - gegen welche auch auf updates geprüft wird...das wurde wohl von java geklaut ;) Beispiele: FileStream fStream = new FileStream("byteArray.dat", FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fStream); byte [] filedata = br.ReadBytes((int)numBytes); MD5 md5 = new MD5CryptoServiceProvider(); byte [] enc = md5.ComputeHash(filedate); (ja, es sind mehr zeilen code, so macht man das aber in einer objektorientierten programmiersprache -> hat den vorteil, dass der stream von irgendwoher kommen kann, nicht nur von einer datei) Lesen aus DB (eine von vielen Möglichkeiten): ADODataReader dr; ADOCommand cmd = new ADOCommand( "SELECT * FROM Person", conn ); cmd.Execute( out dr); while( dr.Read() ) { System.Console.WriteLine( dr["FirstName"] ); } soap request: das ist nicht so gedacht, dass mans im code absetzt - ist zwar möglich, jedoch aufwändiger. viel einfacher geht, indem man sich aus der soap-schemadefinition eine wrapperklasse erzeugen lässt. Diese kann man dann genauso wie jede andere Klasse instanziiieren und deren methoden. (tool dazu heißt xsd.exe) der generierte proxy hat den vorteil, dass man über methoden, eigenschaften der klasse auf das webservice zugreift - man kann sich also nicht "vertippen". genauso ists beim datenzugriff - man kann ein typisiertes dataset erzeugen - alle felder der datenbank sind dann eigenschaften der erzeugten wrapperklasse - wenn man einen feldnamen schreibt, bekommt man einen fehler beim kompilieren, nicht erst zur laufzeit. bei konfigurationsparametern gehts genauso. wie geht das mit php? wieviele zeilen code brauch ich, um einstellungen auszulesen, die pro user gültig sind? nachdem du dir so interessante sachen ausgedacht hast, muss ich mir auch noch paar schöne beispiele für dich zum implementieren ausdenken - ev. hab ich morgen zeit dazu. für heute - guten abend. ;) fg -hannes ps: ich sag ja nicht, dass php schlecht ist. ich geb zu - php 5 hab ich mir noch nicht angeschaut - ich hab php 4.x programmiert und dann zu asp.net gewechselt. und das war ganz einfach das "wow"-erlebnis. ich hätte mir nicht vorstellen können, die applikation, die wir in asp.net programmiert haben in php zu realisieren. ich finde eine fachliche diskussion immer sehr interessant - hab dabei schon wieder paar sachen über php 5 gelernt - ich will dich in keiner weise persönlich angreifen. |
Naja, is' sowieso ein lahmer Flame... eher ein Kinderfrühstück :D
Ein paar Sachen noch... "Wie was gemacht wird" So meinte ich das eigentlich nicht, sondern ob du überprüfen kannst wie die Speicherverwaltung funktioniert. Die beispielhafte Methode des SoapClients existiert natürlich auch nicht wirklich, sondern ist in der WSDL definiert, funktioniert also eigentlich (glaube ich) so wie von dir für .NET beschrieben, nur dass ich keine Klasse erzeugen muss. > wieviele zeilen code brauch ich, um einstellungen auszulesen, die pro user gültig sind? Hä? Je nachdem wo du sie ablegst... Session, SHM, DB... Ah, und ORM Implementierungen gibt's für PHP auch genug... :tux: ~ |
hi,
neinnein, so leicht kommst du mir nicht davon. :hammer: ad überprüfen, wie die speicherverwaltung funktioniert: dazu müsste man mit reflector wohl "sehr tief" ins framework reinschauen. ich weiß theoretisch, wie sie funktioniert - prüft, ob referenzen auf objekte existieren, erkennt zirkuläre referenzen, priorisiert freigabe für objekte und ruft den garbage collector auf, wenn "gerade zeit ist" - näher hab ich mich noch nicht damit beschäftigt. Zitat:
ad auslesen der einstellungen: wieviele zeilen code, wenn die einstellungen in einer text-konfigurationsdatei liegen. ABER: so wichtig ist das garnicht - .net hat ein provider modell. D.h. ich implementieren die Methoden der "Konfig auslesen" Klasse und kann meine Einstellungen auch aus der DB auslesen. genaugenommen: die hat schon MS implementiert. genauso bei session state: kann ich im speicher, einem separaten prozess, irgendeiner DB ablegen - durch konfiguration, nicht durch programmieren. ORM gibts füt .net keine fix dabei. der orm von microsoft wurde wieder zurückgenommen (object spaces hieß der glaub ich - war bei beta 1 dabei) - es gibt jedoch eine frei verfügbare implementierung von hybernate (von java) - heißt auf der .net seite nHybernate. (es gibt auch noch viele andere) so - jetzt zu meinen aufgaben: 1. Auf einer Webseite hab ich 10 Controls (textbox, listbox, combobox) -> Ich will, dass die Felder zwischen postbacks die selektierten werte behalten, ohne dafür was programmieren zu müssen. wie mache ich das in php? (aps.net: enableViewState=true in properties des controls einstellen) 2. nach dem postback der seite will ich wieder dorthin scrollen, wo ich zuvor auf der seite war und der focus vom eingabefiled soll wieder auf dem zuletzt ausgewählten feld sein - natürlich ohne was zu programmieren. (asp.net: smartNavigation der Seite aktivieren) 3. Ich will Einträge der Tabelle "Employees" auf meiner Webseite bearbeiten (edit, update, new record, sortieren, paging wenn viele datensätze), mit minimalem aufwand. asp.net: ich brauche dazu überhaupt nichts programmieren. einfach eine neue verbindung zur DB im "server explorer" einrichten - die Tabelle auf die Webseite ziehen - auswählen, was das dabei automatisch erzeugte Datagrid können soll => fertig! Das ganze dauert 30sec. (incl. Einrichten der DB-Verbindung) (wenn ich will kann ich jedoch an allen stellen eingreifen, concurrency abfragen, transaktionsmodelle festlegen usw.) wie machst du das in php? ich könnte noch viel mehr aufgaben schreiben -controls, die autmatisch die eingabe validieren, ohne etwas programmieren zu müssen - userauthentication ohne etwas zu programmieren - sehr gute unterstützung bei lokalisierung - .... bin aber mal auf die antworten zu oben gespannt. ich behaupte nicht, dass man all diese dinge nicht auch mit php machen kann - wenn du dabei mit php allerdings erst mittendrin bist, bin ich mit asp.net damit schon fertig. Das ist imho. das entscheidende argument: rapid application development! fg -hannes |
schau mal: https://sourceforge.net/projects/ironphp/
...dürfte aber nicht so der renner sein. ;) nachdem version 0.0.1 fg -hannes |
Zitat:
Zitat:
Zitat:
Zitat:
Und wieviel hast du gelöhnt, um deine SQL Tabelle ins VS zu ziehen? € 2.000,- oder mehr? Eigentlich ja nichts dagegen einzuwenden, aber du wirfts mit faulen Eiern :zzz: ~ |
hi,
nachdem ich heute endlich meine funk-internetzanbindung bekommen hab, muss ich diese natürlich ausgiebig testen - durch posten im wcm forum. :cool: ad 1) schön. wie ist das wohl entstanden? da haben sich sicher paar php-programmierer gedacht: das wollen wir auch können. ;) durch die pear library erfährt php eine ungemeine aufwertung - das muss man anerkennen. wenn man noch paar packages dazuprogrammiert wird ja noch eine richtige programmiersprache draus! ad 2) es sind etwas mehr als 5 zeilen - damit du was zu lachen hast: asp.net erzeugt hier java script code, der fehlerhaft ist. ;) -> kann man aber manuell ausbessern. ad 3) wie du schreibst - erforder wohl code - wobei ich die angesprochenen libraries(?) nicht kenne, das muss ich zugeben. die asp.net controls kenne ich aber auch nicht. brauch ich auch nicht - ich kann sie einfach verwenden. erst wenn ich details dazu wissen will bzw. verhalten ändern will, muss ich micht näher damit beschäftigen. ich halte mich schon für einen programmierer. :D allerdings für einen, der sich lieber mit interessanten dingen beschäftigt und nicht damit, die datenanbindung zum 5. mal zu programmieren und das caching zum 10.mal (beispielhaft betrachtet, beliebig austauschbar) visual studio 2005 express edition - die alles genannte kann - ist gratis verfügbar. #develop, wie bereits gesagt ebenfalls. bei #develop ist z.B. ein converter zwischen c# und vb.net dabei für diejenigen, die asp.net seiten lieber in VB.net erstellen - also z.B. die VB Umsteiger. Damit kann ich alles, was ich auch mit C# kann - auch c# klassen einbinden, von denen erben usw. wie geht die sprachinteroperabiität schnell in php?? außerdem: selbst wenn ich dafür 5000€ zahle - das ist NICHTS, wenn ich dafür mit meinem SW Projekt, an dem 5 leute arbeiten um 1 Monat früher fertig bin, das weißt du sicher selbst! fg -hannes |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 12:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag