C/C++ zur Webentwicklung
-
Ich habe mir darüber keine Gedanken gemacht denn ich habe Linux verwendet. CGI.
Ich damals auch für das Framework etwas für Sessions und MySQL geschrieben. Fand sogar Einzug ins Framework.
Damals war auch der Apache noch so das er keine Threads verwendet hat sondern einen Prozess aufgerufen werden musste.
Da war es egal ob PHP oder eben dann das kompilierte Programm.
PHP musste auch noch dann die PHP-Datei nachladen was bei C++ nicht mehr der Fall war.
Kann sein das es deshalb schneller war.
Gefühlt schneller.Nun verwendet ich sowieso nur mehr den IIS und da ist c# und ASPNET auch sehr schnell wenn man vom kompilieren bei ersten Aufruf mal absieht.
-
gastantwort schrieb:
Magoon schrieb:
IMHO sind viele große Dienste wie eBay, Amazon, Google, Yahoo usw. in C++ geschrieben.
"IMHO"? Das hat eigentlich nichts mit deiner "Meinung" zu tun: ebay, Amazon sind Java; Googles web frontends sind in der regel Python (wie der Crawler funktioniert weiß niemand, angeblich baut er wie Chrome auf Webkit auf also C++), Yahoo keine Ahnung, wusste nicht dass das noch immer jemand benutzt :xmas2:
Dass man mit PHP keine 500 Mio. Nutzer bedienen kann ist eigentlich klar, skaliert halt einfach nicht. Für die meisten mittelgroßen Dienste reicht PHP oder Ruby allerdings völlig aus.
Zu dem Zeitpunkt als das gepostet wurde, waren einige wie z.B. Ebay in C++ geschrieben.
[quote="öklöklö]Wie hast du den Overhead beim Starten der Anwendung beseitigt? Bin sehr interessiert, wie du das aufgesetzt hast oder ob das bei einer solch "großen" Anwendung nicht mehr ins Gewicht fällt. [/quote] Google mal nach Lamp ohne amp und "befühle" mal das Ergebnis.
Gerade beim IIS erreichen ISAPI.dll´s oder bei anderen fastcgi deutlich mehr Performance als ein Script wo der Interpreter über die gleichen Schnittstellen aufgerufen wird.
Wenn der Webserver weggelassen wird, wirds noch mal ein wenig performanter.
-
Ich hol das hier mal aus dem Grab.
- C++ hat extrem lange Entwicklungszeiten, die andere Sprachen wie PHP, Python, Ruby, C# nicht haben
- C++ ist recht kompliziert, d.h. es kostet viel Nerven und Schweiß bis etwas läuft
- C lass ich hier mal komplett weg, weil das die vorteile von C++ nicht hat, ein paar Prozent schneller ist es und dafür wesentlich häßlicher
- aufgrund des Entwicklungsaufwandes lohnt sich C++ in der Regel nicht für normale Aufträge
+ C++ ist eigentlich immer schneller als Anwendungen anderer Sprachen, da kann auch XCache/eAcc nix dran ändern. Ausnahmen, wo Java und Konsorten zufälligerweise mal schneller sein sollten bestätigen die Regel. Im Übrigen kann man bei geeignet schlechten Programmierern auch PHP schneller messen.
- das relativiert sich, wenn man effizient einen Cache-(Proxy) (Squid) benutzen kann, weil der dann wieder in C/C++ geschrieben ist bzw. je weniger man in PHP macht (beim Ausliefern gecachter Seiten wenig) desto größer ist der Anteil der Systemfunktionen, die wieder in C geschrieben sind.... (cache-hit-rate)
+ C++ lässt sich teilweise sogar einfacher als PHP debuggen, weil das nicht so höllisch inkonsistent/verbuggt ist.
+ C++ ist cool
+ es gibt mittelerweile erstaunlich ausgewachsene Frameworks auch für C++ (Wt, cppCMS möchte ich hier näher nennen)
- diese bieten leider bis heute nicht den Featureumfang von halbwegs anständigen PHP-Frameworks
MfG
-
dispy schrieb:
das relativiert sich, wenn
Bei Webanwendungen relativiert sich das sowieso gegen Null, weil der Flaschenhals die Netzwerkverbindung und die Datenbank ist.
+ C++ lässt sich teilweise sogar einfacher als PHP debuggen, weil das nicht so höllisch inkonsistent/verbuggt ist.
Also nichts für PHP, aber ich glaube du hast noch nie einen vernünftigen PHP debugger benutzt? Schon prinzipiell lassen sich interpretierte Sprachen besser debuggen als nativ kompilierte.
+ es gibt mittelerweile erstaunlich ausgewachsene Frameworks auch für C++ (Wt, cppCMS möchte ich hier näher nennen)
- diese bieten leider bis heute nicht den Featureumfang von halbwegs anständigen PHP-Frameworks
Jo, sorry, die Frameworks sind ein Witz: Genausowenig wie für Java entsprechende Infrastruktur für Computerspiele (ich denke hier halt an AAA-Engines usw.) existiert, existiert für C++ absolut keine Infrastruktur für "AAA-Webanwendungen", aber solange es kein Äquivalent in der C++ Welt für z.B. Hadoop, Lucene, Hibernate, Terracotta oder JBoss etc. gibt - und das wird wohl auch so bleiben, da offensichtlich niemand daran arbeitet - wirst du nie eine große Seite mit C++ auf Serverseite finden.
Bleibt als Einsatzzweck nur noch kleine private Expermiente, bei der es nicht auf Entwicklungszeit und Hardwareverfügbarkeit ankommt.
-
Bei Webanwendungen relativiert sich das sowieso gegen Null, weil der Flaschenhals die Netzwerkverbindung und die Datenbank ist.
Netwerkverbindungen halte ich jetzt für ein Gerücht. Hast du es tatsächlich schonmal geschafft, eine 100Mbit-Leitung von einem Rootserver voll auszulasten ohne dass der Server vorher eingeknickt ist? Respekt
Also nichts für PHP, aber ich glaube du hast noch nie einen vernünftigen PHP debugger benutzt? Schon prinzipiell lassen sich interpretierte Sprachen besser debuggen als nativ kompilierte.
Für Python und wahrscheinlich auch Java, Perl, Ruby gebe ich dir Recht. Nicht jedoch für PHP. Ich erinnere mich noch genau dran, als ich reproduzierbar weiße Seiten bei frisch aufgesetzten Servern (Debian) bekommen habe. Damals "Tipp" von den PHP-Experten: Ich solle mir doch mal einen Debugger ziehen und sehen, wo es im PHP-Core kracht. Nein danke ^^
Bei Frameworks bin ich im Übrigen sehr gespannt. Mit cppCMS habe ich erstmals ein Framework gefunden, was wirklich eine richtige View-Architektur hat. Die soll sogar in der nächstne Version cakePHP-ähnliche Helper bekommen. Der Controller mit dem Mapping an sich ist auch nicht schlecht.
Einzig mit dem Model scheint es schlecht bestellt zu sein, das ist momentan ein Mix zwischen View und Controller.MfG
-
dispy schrieb:
Netwerkverbindungen halte ich jetzt für ein Gerücht. Hast du es tatsächlich schonmal geschafft, eine 100Mbit-Leitung von einem Rootserver voll auszulasten ohne dass der Server vorher eingeknickt ist? Respekt
Je nachdem was du für Seiten hast. Traffic spielt schon eine Rolle wenn du viele Downloads anbietest oder Video Streaming. Dann brauchst du n ordentliches CDN.
Für Python und wahrscheinlich auch Java, Perl, Ruby gebe ich dir Recht. Nicht jedoch für PHP. Ich erinnere mich noch genau dran, als ich reproduzierbar weiße Seiten bei frisch aufgesetzten Servern (Debian) bekommen habe. Damals "Tipp" von den PHP-Experten: Ich solle mir doch mal einen Debugger ziehen und sehen, wo es im PHP-Core kracht. Nein danke ^^
Dann waren das Idioten.
Bugs in PHP gibt es wie in anderen Sprachen auch. Aber die einzigen die ich kenne treten in extrem Situationen mit bestimmten Modulen auf. Der PHP Core ist stabil.Weisse Seite heisst übrigens, dass du in dem php error log nachschauen solltest Weil display error auf Off steht.
Ein ordentliches Framework fängt sowas aber ab. Und wenn PHP hops geht, gibts nen 500er.
-
Je nachdem was du für Seiten hast. Traffic spielt schon eine Rolle wenn du viele Downloads anbietest oder Video Streaming. Dann brauchst du n ordentliches CDN.
Wenn man dermaßen viele Downloads hat, ist es auch kein Problem, den Traffic zu priorisieren, d.h. den Durchsatz der Downloads (temporär) zu beschränken.
Und wie du schon selbst sagst - für exzessives Video-Streaming gibts ohnehin CDNs.Bugs in PHP gibt es wie in anderen Sprachen auch. Aber die einzigen die ich kenne treten in extrem Situationen mit bestimmten Modulen auf. Der PHP Core ist stabil.
Was bringt dir ein stabiler PHP-Core, wenn du an deine Datenbank nicht sicher rankommst, weil der MySQL-Driver spackt? (und ja der wird vom PHP-Team weiterentwickelt).
Außerdem:
"It's not a bug, it's a feature".
Es gibt in PHP Semantiken (einfach mal Google fragen), die kein normaler Programmierer erwarten würde. Natürlich sind das keine offiziellen Bugs, trotzdem sind sie schwer zu finden.
Weisse Seite heisst übrigens, dass du in dem php error log nachschauen solltest Weil display error auf Off steht.
Ich weiß schon gar nicht mehr, worum es genau ging ^^ Anderes Beispiel: In welcher Scriptsprache hast du es schonmal geschafft, einen Segmentation Fault zu erzeugen? ^^
MfG
-
dispy schrieb:
In welcher Scriptsprache hast du es schonmal geschafft, einen Segmentation Fault zu erzeugen? ^^
In PHP jedenfalls in knapp 10 Jahren und hunderttausenden an geschriebenen Codezeilen noch nicht. Was sagt uns das jetzt?
Wie gesagt, PHP ist eine Krankheit. Aber noch schlechter als es eh schon ist, muss man es dann auch nicht machen.
-
dispy schrieb:
Wenn man dermaßen viele Downloads hat, ist es auch kein Problem, den Traffic zu priorisieren, d.h. den Durchsatz der Downloads (temporär) zu beschränken.
Und wie du schon selbst sagst - für exzessives Video-Streaming gibts ohnehin CDNs.Der Punkt war, dass du massig Traffic explizit handeln musst.
Was bringt dir ein stabiler PHP-Core, wenn du an deine Datenbank nicht sicher rankommst, weil der MySQL-Driver spackt? (und ja der wird vom PHP-Team weiterentwickelt).
Ich bin noch auf keinen Fehler im MySQL Driver gestoßen und ich verwende nur MySQL als Backend.
Es gibt in PHP Semantiken (einfach mal Google fragen), die kein normaler Programmierer erwarten würde. Natürlich sind das keine offiziellen Bugs, trotzdem sind sie schwer zu finden.
Hier wird niemand behaupten dass PHP das geilste ist dass es gibt. PHP hat viele Probleme. Aber instabilität gehört nicht dazu.
Ich weiß schon gar nicht mehr, worum es genau ging ^^ Anderes Beispiel: In welcher Scriptsprache hast du es schonmal geschafft, einen Segmentation Fault zu erzeugen? ^^
In noch keiner. Natürlich ist das aber auch immer eine Frage welche Module man verwendet. Wenn die experimentell sind, sind Segfaults kein Wunder. Aber im produktivbereich sollte man lieber stable software einsetzen und die ist, wie der Name schon sagt, stable.
-
Youtube hat übrigens 12000 Views pro Sekunde und ist in Python geschrieben.
Twitter war ursprünglich ne Rails Anwendung und läuft jetzt auf der JVM (Scala).
Google hat neben haufenweise Python und Java sogar tatsächlich auch C++ mit an Board.
-
imho wird die meiste zeit bei dynamischen seiten in der libz oder wie das teil auch immer heißen mag verbraucht, zweite bremse ist die db... so ists zumindest bei mir
@edit: php, python, java und sonstiges gelumpe kann sich wenn man gut ist iwo dazwischen einfinden
@edit: ähm, ja c/c++ zur webentwicklung ist eine gute idee, man sollte sich dann aber nicht blind auf die performance der sprache verlassen, sonst geht man auch mit c/c++ baden...