OK, I'll feed the troll.
Die angegebenen Punkte sind keine Argumente, sondern Behauptungen. Können diese mit Argumenten belegt werden, können wir darüber diskutieren. So aber haben viele der Behauptungen nicht einmal eine Grundlage, auf der mal sie bewerten könnte. Aber das hindert mich natürlich nicht, kräftig Senf zu geben.
1. Es hat eine strengere Syntax.
Wie misst man die Strenge einer Syntax? Hätte eine Sprache keine strenge Syntax, würde das IMHO bedeutet, eine Sprache verzeiht Syntaxfehler, so wie wir Menschen bei vielen Schreibfehlern dennoch wissen, was gemeint ist. Das falsche "Standart" kann ich z.B. korrekt als Standard interpretieren und glaube nicht fälschlich, die Standarte ist gemeint. Weder Python noch Java können so etwas, d.h. beide sind gleich streng, was die Auslegung der Sprache angeht.
Gemeint sein könnte, dass Java mehr Syntax hat, was man daran festmachen könnte, dass man z.B. die Regeln einer Grammatik der jeweiligen Sprache in BNF zählt. Ob das aber ein Vor- oder Nachteil ist, wäre eine andere Diskussion.
2. Viele Anfängerfehler werden vermieden.
Welche sind das? Unter der Annahme, dass die Anzahl der Fehler proportional zur Länge eines Programms (in Zeichen) ist, würde ich schließen, dass man bei Java mehr Fehler macht, einfach weil man mehr schreiben muss, um das typische Anfängerprogramm zu erstellen.
3. Es ist deutlich verbreiteter (3mrd geräte nutzen java, python ist nur 5mio mal vertreten...).
Wo kommen denn die 5 Mio Python-Installationen her? Es gibt definitiv mehr als 5 Mio Mac-Rechner und jeder kommt mit Python vorinstalliert. Ich behaupte gar nicht, das wären mehr, als all die Millionen oder Milliarden von Feature-Phones mit einer J2ME-Installation (auf die die 3 Mrd sicherlich anspielen), aber ohne Quellenangabe sind die Zahlen einfach aus der Luft gegriffen. Außerdem frage ich mich, wie man aus weiter verbreitet auch besser schließen kann. Das ist so ein bisschen das "Friß Scheiße, Millionen von Fliegen können nicht irren"-Argument. (Dieser Vergleich impliziert nicht, das Java Scheiße ist. Diese Aussage würde ich exklusiv für PHP machen wollen.)
4. Es führt besser zur OOP hin, welche in unserem Zeitalter immer wichtiger wird.
Erstens glaube ich nicht, dass OOP "in unserem Zeitalter" wichtiger wird. OO war neu in den 80ern und angesagt in den 90ern, aber wenn etwas in einem "Zeitalter" wichtig ist, dann, Programme auf hunderten von CPUs parallel ausführen zu können und da hat OOP, wie es von Java (und davor von C++ verstanden wurde) keine gute Antwort. Funktionale Programmierung, die verlangt, dass man unveränderliche (sogenannte persistente) Datenstrukturen benutzt, bietet den vielversprechenderen Ansatz hier. OOP, wie ursprünglich von Alan Kay erdacht und in Actor oder Erlang umgesetzt, passt da schon eher, auch wenn man das jetzt zur Abgrenzung eher als Concurrency Oriented Programming bezeichnen würde.
5. Die Datentypen sind übersichtlicher (statisches Typensystem).
Datentypen und statische Typannotationen vermischt zwei Dinge.
Ein Datentyp ist Typ (im Sinne einer Menge von Objekten oder Werten) zusammen darauf definierten Operationen. Eine Klasse ist ein typischer Datentyp der OOP. Eine Kellerspeicher (aka Stack) oder ein Präfixbaum (aka Trie) sind typische Datenstrukturen, die man in der Informatik untersucht.
Erhöhen statische Typannotationen die Übersichtlichkeit? Ja, das ist möglich. Aber das gilt genauso für dynamische Typannotationen. Statisch - zusammen mit einem in sich konsistenten Typsystem - hat ein Programm die Möglichkeit, automatisch Aussagen über das Programm zu treffen und Typfehler zu finden, die auf ein fehlerhaftes Programm hindeuten.
Übersichtlich oder Lesbar ist aber häufig das, was kurz und knapp ist. In Python kann ich eine polymorphe "min"-Funktion in einer Zeile definieren, wo ich in Java "dank" des Typsystems für jeden primitiven Datentyp und jeden Referenzdatentyp eine eigene Implementierung angeben muss, in Summe also vielleicht 5 oder 6 "min"-Funktionen (und dann auch noch getarnt als statische Methode einer Hilfsklasse). Das ist nicht zwangsläufig übersichtlicher.
6. Java vermittelt die Grundlagen vom Aufbau von Sprachen usw. besser (z.B. durchs Compilieren).
Da fällt mir nur "Quatsch" ein. Sprechen wir von einer Operationellen Semantik, ist der Interpreter die natürliche Form, die Funktion einer Programmiersprache anzugeben. Ein Compiler ist Implementierungsdetail einer Sprache, ein Feature.
7. Java ist für große Projekte besser.
Da stimme ich mal zu, ohne selbst jetzt ein Argument zu geben.
8. Java ist besser dokumentiert!
Was heißt besser? Und wieso ein Ausrufungszeichen?
Für Java gibt es einen von Guy Steele (einer meiner Helden der Informatik) verfassten (sehr trockenen) Sprachstandard. Die Klassenbibliothek ist auch hinreichend mittels JavaDoc beschrieben. Ähnlich detailliert ist eigentlich kaum eine Sprache beschrieben. ECMAScript fällt mir spontan ein.
Für Python gibt es (ganz im Gegensatz zu anderen Sprachen, wo es lapidar heißt, die Referenzimplementation definiert die Semantik und jeder Bug ist ein Feature) eine ganz ordentliche Sprachspezifikation und auch die Funktionsbibliothek ist ausreichend beschrieben, wenn diese Dokumentation auch eher ein Freitext ist und nicht an jeder Klasse, Methode oder Funktion klebt.
Ich halte das eigentlich für gleichwertig.
9. Die Java-community ist etwa 10X so groß wie die von Python.
Mag sein. Die für PHP ist aber noch großer. Ist daher PHP besser als Java?
10. Java hat viel mehr Besispiele.
Was für Dinger? Wenn wir einmal definieren, dass ein Beispiel ein im Quelltext vorhanderes Projekt ist, das ich studieren kann und wovon ich lernen kann, dann schaue ich auf Github und sehe, dass 9% der Projekte in Python und nur 8% in Java geschrieben sind. Damit muss es mehr Beispiele in Python als in Java geben. QED.
11. Java kann besser mit Mehrkernprozessoren umgehen.
Das ist ein Fakt. Jedenfalls, was CPython angeht. Andere Python-Implementierungen wie z.B. Jython, das auf der JVM läuft, hat dieses Problem nicht. Das ist zugegeben nur ein schwaches Gegenargument, den in der Praxis zählt eigentlich nur CPython.
12. Es ist weit universeller einsetzbar.
Quatsch. Tinypy könnte man auf Embedded-Systemen genauso einsetzen wie ein geschrumpftes Java. Einzig von einem Python, das auf USIMs läuft, so wie JavaCard, das auf vielen Telefonkarten läuft, habe ich noch nichts gehört.
13. Für Java gibt es mehr Berufsangebote.
Das macht eine Sprache besser? Finde ich nicht. Dafür bin ich zu sehr Idealist.
Und als Firmen-Inhaber kann ich sagen: Jemand, der nur Java kann, würde ich selbst für einen Java-Job nicht einstellen, wenn ich jemanden finde, der neben Java auch noch weitere (IMHO interessantere) Sprachen beherrscht, weil ich dann weiß, dass dieser Mensch ein breiteres Wissen hat und mehrere Paradigmen beherrscht.
14. Java ist auf jedem Standartsystem schon drauf.
Nein. Da muss ich noch einmal OS X erwähnen, welches seit Lion nicht mehr mit Java kommt. Und erst seit wenigen Tagen kann man sich von Oracle ein aktuelles Java nachinstallieren, wenn man will. Ich denke auch nicht, dass Windows 7 mit Java kommt.
Aber ich mache gleich mal weiter...
a) Youtube wurde in Python geschrieben.
Das ist tatsächlich mal ein Fakt. Ein Argument, dass Python daher besser ist, ist es aber IMHO nicht. Sonst kann ich sagen, das Amazon mal mit Perl oder Twitter mit Ruby angefangen hat. Sind diese beiden Sprachen jetzt besser? Ein Startup sollte die Sprache benutzen, die die Gründer Spaß haben zu benutzen bzw. schon können, denn es gibt genug andere Probleme zu lösen, als das man sich noch mit dem Lernen einer neuen Programmiersprache herumschlagen will. Und die Youtube-Gründen konnten eben Python und hatten Lust, Python zu benutzen.
b) Google war mal z.t. in Python.
Ja? Das ist mir neu. AFAIK, ist der Kern der Suchmaschine aktuell in C(++) geschrieben. Ne Menge Zeug bei Google nutzt Java, anderes Python (Blogger z.B. ist/war mal Python).
c) Python ist im Kommen.
Statt TIOBE könnte man auch Kaffeesatz lesen. Das ist ähnlich akurat. Wenn ich schreibe, "Python ist scheiße", zählt TIOBE das als Indiz, dass Python im Kommen ist. Von den false positives durch Monty Python und das Reptil will ich gar nicht reden.
d) Python ist freier, kann sogar als nicht OOP genutzt werden.
Freier? Gemeint ist wohl, dass Python mehr als ein Paradigma unterstützt. Das ist richtig und das gefällt mir. Tatsächlich kann man mit Python näher OOP im Kay-Sinne machen als mit Java, das zu nahe an C++ gelegen hat und wo Stroustrup irgendwie alles, was Objective-C richtig von Smalltalk kopiert hat, falsch verstanden hat -- nein, der Mensch ist schon schlau, er wollte es halt anderes haben.
e) Ist für kleine Projekte besser geeignet.
Warum?
f) Besser für Ex- und Importscripte.
Warum? Und was ist das?
g) Python ist besser für Server, um Abläufe zu automatisieren.
Warum? Und wenn Java in einer Rubrik Marktherrschaft erlangt hat, dann sind das doch wohl Unternehmensserver, aka Application Server, aka Tomcat, JBoss und so weiter.
Stefan