Google rät von Python ab

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich liebe reißerische Überschriften :)

Aber was haltet ihr von http://groups.google.com/group/unladen- ... 06f544643e ?

Ich denke es stimmt, dass Python in Performance, Speicherverbrauch und Skalierbarkeit anderen Alternativen unterlegen ist. Für Google, die die User in Millionen zählen ist dies ein wichtiger Aspekt. Das CMS für den Bäcker um die Ecke betrifft es allerdings weniger. Selbst das CMS für die lokale Tageszeitung würde es IMHO nicht betreffen.

Google hat aber mit V8 eine interessante Alternative zu Python, die man zu einer adäquaten serverseitigen Lösung ausbauen könnte. Ein interessantes Projekt (außerhalb von Google) ist z.B. node.js, ein evented I/O-Server (asynchroner Webserver wie z.B. Tornado) für JavaScript.

Stefan
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Vllt. hängt das auch mit hiermit zusammen: http://golang.org/

Soll ja angeblich so einfach zu benutzen sein wie Python und so schnell wie C oder C++...
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

So gesehen ist die neue Strategie, erst einmal nichts mehr am Syntax von Python 3 zu verändern, schon eine sinnvolle Entscheidung. Dann bleibt nämlich endlich mal Zeit, den Interpreter und die stdlib auf den neuesten Stand zu bringen --> WSGI2, Bytecode Optimization, GIL
Bottle: Micro Web Framework + Development Blog
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Google hat aber mit V8 eine interessante Alternative zu Python, die man zu einer adäquaten serverseitigen Lösung ausbauen könnte. Ein interessantes Projekt (außerhalb von Google) ist z.B. node.js, ein evented I/O-Server (asynchroner Webserver wie z.B. Tornado) für JavaScript.
Irgendwie hat es dir V8 aber angetan. Ich finde Javascript irgendwie immer so unübersichtlich und theoretisch sollte es auch für Python möglich sein eine schnellere VM zu bauen, die Leute von PyPy benutzen ja teilweise auch dieselbe Tricks wie bei V8.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

SchneiderWeisse hat geschrieben:Vllt. hängt das auch mit hiermit zusammen: http://golang.org/

Soll ja angeblich so einfach zu benutzen sein wie Python und so schnell wie C oder C++...
Der Code sieht schon mal nicht so einfach wie Python Syntax aus... Wenn ich sowas for i = 0; i < 10; i++ {} sehe, dann hört es bei mir schon auf ;)

Komisch das es so wenige/keine andere Sprache gibt, die so einfach von der Syntax ist. Warum mögen so viele Geschweifte Klammern und das Semikolon?

EDIT: Weiter über "GO" kann man aber besser im anderen Thread reden: http://www.python-forum.de/topic-20955.html

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

jens hat geschrieben:
SchneiderWeisse hat geschrieben:Vllt. hängt das auch mit hiermit zusammen: http://golang.org/

Soll ja angeblich so einfach zu benutzen sein wie Python und so schnell wie C oder C++...
Der Code sieht schon mal nicht so einfach wie Python Syntax aus... Wenn ich sowas for i = 0; i < 10; i++ {} sehe, dann hört es bei mir schon auf ;)
Ich persönlich finde den 'for i in xrange()' Ansatz von Python etwas von hinten auf gerollt. Warum muss ich eine Funktion auf rufen (xrange) und ein Objekt erschaffen (iterator) damit meine Schleife funktioniert? Das sollte meiner Meinung nach die Sprache von sich aus können. Folgendes ist ein Äquivalent zu den sonst üblichen for-Schleifen in Python:

Code: Alles auswählen

i=0
while i < 100:
  do_something()
  i += 1
Der xrange() Ansatz funktioniert zwar und sieht besser aus, tut aber auch etwas anderes. Python macht einiges etwas umständlich. Ich vermisse z.B. auch do..while bei vielen Problemen. Switch dagegen vermisse ich überhaupt nicht ;)
jens hat geschrieben: Komisch das es so wenige/keine andere Sprache gibt, die so einfach von der Syntax ist. Warum mögen so viele Geschweifte Klammern und das Semikolon?
Weil die auf englischen Tastaturen hervorragend zu erreichen sind.

Bild
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Defnull hat geschrieben: Ich persönlich finde den 'for i in xrange()' Ansatz von Python etwas von hinten auf gerollt. Warum muss ich eine Funktion auf rufen (xrange) und ein Objekt erschaffen (iterator) damit meine Schleife funktioniert? Das sollte meiner Meinung nach die Sprache von sich aus können.
Das mag zu Beginn umständlich wirken, aber im Grunde genommen ist es konsequent. In Python iteriert man eben nicht über Indizes, sondern über Iteratoren. In anderen Sprachen gibt es eben beide Möglichkeiten (Java fällt mir da ein) oder eben nur die erste. Man mag das als "normal" emfpinden, weil man es in C, Basic oder sonst wo so gelernt hat - aber mal ehrlich: Wann will man denn bitte schön in Sprachen, die prima Datentypen von Haus aus besitzen (ausschließlich) über Indizes iterieren, anstatt direkt über die Objekte? Da ist es eben viel praktischer und konsequenter nur eine einzige Syntax und Semantik für die for-Schleife anzubieten und das Iterieren über Indizes zu "simulieren".

Java hat imho z.B. durch die Einführung der "Iteterator"-for-Schleife viel an Komfort und Klarheit gewonnen.
lunar

@Defnull: Wie oft benötigt man den schon reine Zählschleifen? Die meisten Zählschleifen sind verkappte Iteratoren oder umständliche Wiederholungen. Etwas 100 Mal zu wiederholen, geht auch schöner als durch zählen. Ähnliches gilt für do ... while. Es wäre nett, doch ist es unbedingt erforderlich?

Ob die Tasten nun gut zu erreichen sind oder nicht, ist doch nicht der Punkt. Vielmehr ist doch fraglich, wofür man überhaupt zwingend dezidierte Zeichen zum Abschluss einer Anweisung und zur Markierung eines Blocks benötigt, wenn dafür doch eigentlich auch die "normale" Auszeichnung, die durch Einrückung und Zeilenumbrüche ensteht, völlig ausreicht.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ja, V8 hat es mir angetan, weil das Ding schnell ist und technologisch die Fortsetzung der besten Smalltalk-, Self- und Java-VMs ist. Ich denke, das System (und damit auch JavaScript) hat Potential.

So einfach zu benutzen wie Python heißt für Go nicht, dass es die selbe Syntax wie Python hat. Ich habe das so verstanden, dass Go ein statisches Typsystem haben sollte, welches nicht so umständlich und redundant ist, dass die Leute zu dynamisch typisierten Scriptsprachen abwandern.

Geschweifte Klammern sind mindestens seit BCPL Tradition und wohl beliebter als Blockbildung durch begin/end und erst recht als Blockbildung durch Einrückung. Die Ablehnung von Einrückung hat IMHO eher psychologische Gründe, denn ein Scanner dafür ist nicht so viel komplizierter. Dennoch ist wohl auch ein Grund, dass kein automatisch generierter Scanner/Parser dies verstehen kann, weil die eigentlich alle kontextfrei sind und Leerzeichen in der Regel ignorieren. Um Einrückung zu verarbeiten, muss der Scanner/Parser einen Zustand halten.

Ich finde range() nur konsequent und begrüße, dass "for" bei Python ein universeller Iterator ist. Dies macht insbesondere eines der schönsten Sprachmittel bei Python möglich: Die Listenausdrücke (list bzw. dict comprehension).

Noch eine Aussage von Collin Winter, einem der beiden Google-Leute von Unloaden Swallow:

"JavaScript is a far more important optimization target than a language like Python:
JavaScript has far, far more installations worldwide, sits on the critical path of many more applications, has historically suffered from inattention, etc. This is why multiple companies -- Apple, Mozilla and Google among them -- have sunk important resources into optimizing their JavaScript engines. I would argue that producing a
generation of faster JavaScript engines is far more significant to the Internet as a whole, and brings greater benefit to the network and the planet."

Anders interpretiert: Python hat im Gegensatz zu JavaScript keine strategische Bedeutung für Google und andere Firmen.

Stefan
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

sma hat geschrieben:Ich denke es stimmt, dass Python in Performance, Speicherverbrauch und Skalierbarkeit anderen Alternativen unterlegen ist.
Das ist noch weit untertrieben. ;)

Je mehr Skript- und Hybridsprachen ich in verschiedensten Projekten eingesetzt habe (inkl. Cython), umso mehr komme ich zu der Erkenntnis, dass man sich letztendlich entscheiden muss zwischen so etwas wie C++ (STL, Boost, POCO, ...) einerseits, oder Python (SPL, ...) andererseits.

Ich kann mir vorstellen, daß Google viele ihrer Kern-Dienste ursprünglich in Python modellierte, und auch im Beta-Betrieb ausgetestet hat, aber diese dann auf C++ umstellen musste. Diese Umstellung ist doppelte Arbeit, und auch fehlerbehaftet... besonders ohne die passenden und ausgereiften C++ libraries. Darum versuchen sie bei Google verzweifelt solche Mitteldinger wie Go, Cython usw. zu benutzen/entwickeln.

Nur... die übersehen da einen wichtigen Punkt: Python-Code läßt sich gut warten. C++ Code läßt sich auch (relativ) gut warten. Doch wie ist es mit der langfristigen Wartbarkeit von Go/Cython/Whatever-Code bestellt? Wer garantiert denn, dass die dazugehörigen Sprach-Libraries mindestens so lange gepflegt und aktualisiert werden, wie die eigentlichen Anwendungen? Es kann durchaus passieren, daß die eigentliche Sprache vor den jeweiligen Anwendungen aufgegeben wird. Und was dann? Doch nochmal alles umstellen?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich sehe da keine Verzweiflung bei Google. Sachen wie "Go" sind "normale" Forschungsarbeit, die sich eine große Firma leisten sollte. Ehrlich gesagt wäre für mich C++ bei Server-Anwendungen auch keine Alternative. Ich würde dort zu Java greifen. Auch bin ich nicht so pessimistisch, dass die Kombination "erst in Python prototypisieren und dann in z.B. Java produktifizieren" schlecht ist. Unter der Annahme, dass es nur 30% der Zeit kostet, das in Python statt in Java zu machen und dass nur 10% der Lösungen je produktiviziert werden, spart Python die wichtigste Ressource ein: Nämlich Entwicklerzeit (Die man dann wieder in die Entwicklung neuer Sprachen stecken kann ;)

Stefan
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Gerade habe ich etwas wiedergefunden. Googles Python-Probleme existieren schon etwas länger: http://www.spiegel.de/netzwelt/web/0,15 ... 78,00.html
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

/me hat geschrieben:Gerade habe ich etwas wiedergefunden. Googles Python-Probleme existieren schon etwas länger: http://www.spiegel.de/netzwelt/web/0,15 ... 78,00.html
Krass :D
Antworten