Java vs Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten

Java oder Python?

Java
4
24%
Python
13
76%
 
Insgesamt abgegebene Stimmen: 17
Blackhole16
User
Beiträge: 1
Registriert: Samstag 28. April 2012, 12:51

Was ist besser? Was sind eure Argumente dazu?

JAVA:
1. Es hat eine strengere Syntax.
2. Viele Anfängerfehler werden vermieden.
3. Es ist deutlich verbreiteter (3mrd geräte nutzen java, python ist nur 5mio mal vertreten...).
4. Es führt besser zur OOP hin, welche in unserem Zeitalter immer wichtiger wird.
5. Die Datentypen sind übersichtlicher (statisches Typensystem).
6. Java vermittelt die Grundlagen vom Aufbau von Sprachen usw. besser (z.B. durchs Compilieren).
7. Java ist für große Projekte besser.
8. Java ist besser dokumentiert!
9. Die Java-community ist etwa 10X so groß wie die von Python.
10. Java hat viel mehr Besispiele.
11. Java kann besser mit Mehrkernprozessoren umgehen.
12. Es ist weit universeller einsetzbar.
13. Für Java gibt es mehr Berufsangebote.
14. Java ist auf jedem Standartsystem schon drauf.

Python:
a) Youtube wurde in Python geschrieben.
b) Google war mal z.t. in Python.
c) Python ist im Kommen.
d) Python ist freier, kann sogar als nicht OOP genutzt werden.
e) Ist für kleine Projekte besser geeignet.
f) Besser für Ex- und Importscripte.
g) Python ist besser für Server, um Abläufe zu automatisieren.

Ich habe diesen Post auf 2 weiteren Foren zu laufen und werde ständig alles abgleichen

mfg
BH16
deets

Na, da haste ja mal zwei Listen voll mit Unsinn zusammengestellt.

Java ist besseres OOP? In Python sind viel mehr Dinge Objekte. Praktisch alles. Uebersichtlichere Datentypen? Man saeuft in getter/settern ab, und die Typhierarchien durch single-inheritance & interfaces sind viel groesser und entsprechend komplexer. Universeller einsetzbar? Python hat zb ctypes zur Anbindung von C-libs, es gibt Implementation fuer C# und Java. Java ist auf jedem Standardsystem schon drauf? Seit wann? Auf neueren Macs muss es nachinstalliert werden, Python ist schon drauf. Und seid wann ist es unter Windows mit dabei?

Dabei hast du echte Vorteile von Java komplett unter den Tisch fallen lassen - JIT zb, und dadurch generell hoehere Performance, einen ausgefeilteren GC.

Google war mal zT in Python? Ist es immer noch. Aber Google ist gross, die Aussage so nichtssagend. Python besser fuer Server? Wieso? Und seit wann haben Server was mit Ablaufautomation zu tun?

Nice try, Trollkopp... aber ein bisschen mehr Fakten duerfen's schon sein, gell?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

deets hat geschrieben:Na, da haste ja mal zwei Listen voll mit Unsinn zusammengestellt.
*unterschreib*
BlackJack

Hier ist eine der beiden anderen Umfragen: http://www.java-forum.org/java-basics-a ... ython.html

In einem Java-Forum. Da kommen teilweise auch die unsinnigen Argumente her wie „Wobei ich dennoch für Java gestimmt habe, da es imo auf so ziemlich jeden PC-System standartmäßig vorhanden ist, auch wenn viele davon nichts wissen.” :roll:
deets

Ohhhh man. Und "Scala & groovy" besser zum scripten? Bestimmt - nach den 15sec VM startup Time...

Auch Graphen lesen scheint dort keine Stärke zu sein. Mal abgesehen davon das TIOBE nur beschränkt aussagefähig ist - der Graph von Python steigt im Schnitt, der von Java sinkt. Wie anders ist "im kommen" zu interpretieren?

Aber ich bin beruhigt, das die frage wohl auch bei gutefrage.net gestellt
Wurde. Dann werden wir die endgültige Antwort haben *hüstel*
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:In einem Java-Forum. Da kommen teilweise auch die unsinnigen Argumente her wie „Wobei ich dennoch für Java gestimmt habe, da es imo auf so ziemlich jeden PC-System standartmäßig vorhanden ist, auch wenn viele davon nichts wissen.” :roll:
Wobei ich es ja eigentlich witzig finde wie viele der Antworten man ähnlich auch hier finden würde. Aber auch etwas weniger Stuß.
Final_Striker hat geschrieben:Außerdem in einem JAVA-Forum eine Umfrage zu starten ob Java oder Python besser ist, finde ich relativ sinnfrei...
In dem Sinne:

Außerdem in einem PYTHON-Forum eine Umfrage zu starten, ob Java oder Python besser ist, finde ich relativ sinnfrei....

Aber die Listen sind völlig unsinnig. Die Argumente sind teilweise so als würde man sagen "Vorteile von Java: Hat zwei 'a' im Namen; Vorteile von Python: hat ein 'y' im Namen". Selbst da wo die Argumente stimmen, sind sie dennoch (meist) irrelevant.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ShoxX
User
Beiträge: 24
Registriert: Sonntag 15. April 2012, 22:33

Laut ASCI Zeichensatz steht Java vor Python:

Code: Alles auswählen

#Python kleiner als Java?
if "Python" < "Java":
    print "Python ist kleiner als Java"
else:
    print "Java ist kleiner als Python"
Daraus schließe ich das Java definitiv besser als Python ist :idea:
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Benutzeravatar
Dobi
User
Beiträge: 31
Registriert: Mittwoch 28. September 2011, 17:04

@Blackhole16: Was ist besser? Schraubenzieher oder Schraubenschlüssel? ;)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Dobi hat geschrieben:@Blackhole16: Was ist besser? Schraubenzieher oder Schraubenschlüssel? ;)
Der Klassiker: Wenn man nur einen Hammer hat sieht jedes Problem wie ein Nagel aus.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

/me hat geschrieben:
Dobi hat geschrieben:@Blackhole16: Was ist besser? Schraubenzieher oder Schraubenschlüssel? ;)
Der Klassiker: Wenn man nur einen Hammer hat sieht jedes Problem wie ein Nagel aus.
Um aus "PHP: a fractal of bad design" zu zitieren: "You pull out the hammer, but to your dismay, it has the claw part on both sides. Still serviceable though, I mean, you can hit nails with the middle of the head holding it sideways.". SCNR!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Google war mal z.t. in Python.
Es gibt drei offizielle Programmiersprachenn für Projekte bei Google: C++, Java und Python. AFAIK ohne Gewichtung.

Sowohl der Python-"Erfinder" als auch der Java-"Erfinder" sind bzw. waren mal bei Google angestellt.

Fazit: Klares Unentschieden ;-)

Gruß, noisefloor
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Bei Google ist so ziemlich alles in C++ aus Performance Gründen. GMail ist wohl in Java und YouTube in Python aber dass sind recht große Ausnahmen.
lunar

@DasIch: Bezieht sich das nur auf die öffentlich zugänglichen Anwendungen samt Backends, oder auf alles? Ich könnte mir vorstellen, dass viel internes Tooling mit Python erledigt wird…
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Das bezieht sich nur auf die öffentlich zugänglichen Sachen. Ich gehe mal davon aus dass Google intern so ziemlich alles nutzt, zumindest bei kleineren Projekten. Es gibt z.B. ein ICFP Paper zur Verwendung von Haskell bei einem Projekt, da liegt die Vermutung dass man dort Ruby, Perl oder Code in anderen Sprachen findet nicht fern.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

DasIch hat geschrieben:Das bezieht sich nur auf die öffentlich zugänglichen Sachen.
Die Go-Leute freuen sich übrigens zu berichten, dass Go schon für einige Doodles benutzt wurde und jetzt auch die MySQL-Datenbank-Infrastruktur von Youtube (für Python) skaliert. Es ist also nicht alles nur C++ :) Mein Eindruck war übrigens, dass Java die meistbenutzte Sprache ist, aber das ist (auch?) nur geraten.

Stefan
Antworten