Seite 1 von 1

Google und Python

Verfasst: Donnerstag 9. Februar 2006, 16:22
von mx
Hallo Leute,

obwohl ich recht wennig mit python zu tun habe ( leider!), hab ich scho paarmal gehört, dass es für google benutzt wird. andererseits hab ich auch gehört, dass python (relativ) langsam ist! Nur verstehe ich nicht wie das zusammenhängt... eine langsame programmiersprache für eine möglichst schnelle suchmaschine? könnte mich jemand mal kurz aufklären? für nen guten Link gibts sogar extrapunkte :wink:

sers

Verfasst: Donnerstag 9. Februar 2006, 16:56
von modelnine
Erstens: eine Programmiersprache ist weder langsam noch schnell. Der kompilierte Maschinen-Code den Du ausführst ist langsam oder schnell auf der Maschine auf der es ausgeführt wird, und da Python eine hochdynamische Sprache ist kann der Interpreter der Virtuellen Maschine von Python leider nicht allzuviel optimieren, was eben bedeutet dass es für die selbe Aufgabe länger braucht als zum Beispiel wenn man es in C baut, wo der Interpreter der Virtuellen Maschine die Maschine selbst ist.

Zweitens: Google setzt Python für Prototyping ein, nicht für das was nachher auf google.com und Verwandten läuft (das ist meißtens in C++, wenn man Alex Martelli glauben darf).

Sonst: es ist meißtens einfacher eine Maschine zu kaufen die mächtiger ist als ein Programm in einer "lowlevel"-Programmiersprache wie C oder C++ zu entwickeln. Deswegen ist für die allermeißten belange die Geschwindigkeit der Python-VM mehr als ausreichend. Wenn's irgendwo was zeitkritisches gibt, kann man schließlich auch per Erweiterungsmodul auf C ausweichen. Die sind superangenehm und einfach zu programmieren.

Verfasst: Donnerstag 9. Februar 2006, 19:03
von mx
also nur prototyping... OK, klingt interessant! (oder ich habs falsch verstanden)
muss man nachdem man den prototyp in python programmiert hat wieder total von vorne mit C anfangen, oder wie wird das gemacht?

Verfasst: Donnerstag 9. Februar 2006, 20:24
von modelnine
Beim Prototyping geht's darum die Algorithmen die man nachher implementiert abzustecken. Python ist (unter anderem) für sogenanntes "rapid prototyping" gedacht, da man eben viele "very-high-level"-Datentypen und Sprachkonstrukte wie Listen, Dicts, Iteratoren, Speichermanagement, etc. nicht selbst implementieren muß, sich also im Endeffekt auf die Implementierung des Algorithmus konzentrieren kann.

Wenn man dann einen Überblick darüber hat wie ein Programm aussehen soll (also im Prinzip ein fertiges Programm vor sich hat), geht die Implementierung in C++ o.Ä. natürlich sehr viel schneller und leichter, da man schon weiß was man implementieren muß, und auch den Rahmen abgesteckt hat, und mögliche algorithmische Fehler im Vorfeld ausräumen kann.

Sonst: Python ist natürlich nicht nur zum "rapid prototyping" geeignet. Nur: Google ist darauf angewiesen dass seine Produkte einer riesigen Menge an Anfragen nachkommen können, das ist mit Python und "very-high-level"-Programmierung eben einfach nicht mehr in vertretbarem Hardwarerahmen zu schaffen.

Siehe Wikipedia, die bauen auf PHP auf und haben ich glaube knapp 1000 Server die das Wikimedia-Skript hosten, die auf Rotationsbasis aufgerufen werden. Das ist der Preis den man bezahlt wenn man die Dynamizität auch im ausführbaren Programm behalten will die eine Skriptsprache bietet, die aber eben bei Google im Endeffekt nicht mehr benötigt wird. Denen geht es nur darum möglichst viel Bandbreite möglichst effektiv zu benutzen. Deswegen halt auch die Endimplementierung in einer hardwarenahen Sprache wie C++.

Verfasst: Donnerstag 9. Februar 2006, 20:41
von mx
danke...
langsam versteh ich es! jedenfalls verstehe ich etz wahrscheinlich auch, wieso bei mir wikipedia dauernd so langsam geladen wird... :wink:

Verfasst: Freitag 10. Februar 2006, 00:45
von Mr_Snede
mx hat geschrieben:jedenfalls verstehe ich etz wahrscheinlich auch, wieso bei mir wikipedia dauernd so langsam geladen wird... :wink:
Naja DAS liegt bestimmt nicht an der verwendeten Programmierprache, sondern eher daran dass google über einen gewaltig größeren Finanzrahmen verfügt als Wikipedia. Daher hat google, wenn ich richtig informiert bin das derzeit größte Gridsystem um eben diese Performance zu bieten.

cu Sebastian

Verfasst: Freitag 10. Februar 2006, 00:51
von modelnine
Naja DAS liegt bestimmt nicht an der verwendeten Programmierprache, sondern eher daran dass google über einen gewaltig größeren Finanzrahmen verfügt als Wikipedia.
Das liegt sehr wohl auch an der verwendeten Programmiersprache. PHP ist nun mal eine dynamische Spache, und auch nicht die schnellste dabei. Sprich: wenn man Wikimedia in seiner Form in C++ reimplementieren würde könnte man die Performance ohne weitere Serverkosten steigern.

Dass der Performancewahn natürlich blödsinnig ist, da muß man nichts zu sagen. Nur: für Google lohnt sich es auf jeden Fall. Für Wikimedia eher nicht, da es ja so tut wie es tut.

Verfasst: Freitag 10. Februar 2006, 08:18
von jens
modelnine hat geschrieben:Dass der Performancewahn natürlich blödsinnig ist, da muß man nichts zu sagen. Nur: für Google lohnt sich es auf jeden Fall. Für Wikimedia eher nicht, da es ja so tut wie es tut.
Ist halt ein Rechenexempel... Wenn du 100 Rechner mit C++ brauchst oder 200 Rechner mit PHP/Python, dann macht das bei den Stromkosten schon einiges aus :)

Was ich noch sagen wollte... google bietet einige Schnittstellen die man u.a. mit Python ansprechen kann um Lustige dinge zu machen.

Verfasst: Freitag 10. Februar 2006, 11:02
von CM
Na ja, und wieviel kostet ein Programmierer der C++ in der geforderten Qualität schreiben kann?

SCNR,
Christian