Seite 1 von 3
Java vs. Python
Verfasst: Mittwoch 11. April 2012, 08:42
von Dragonfire
Im Internet gibt es viele Seiten die Java mit Python vergleichen, wie z.B.:
http://twistedmatrix.com/users/glyph/ra ... -java.html
oder
http://pythonconquerstheuniverse.wordpr ... nd-python/
(wenn wer neueres hat immer her damit

)
Aufgrund eines postest
lunar hat geschrieben:[...] falls Du mit "typisierten Sprachen" "Java" oder "C#" meinst (Python ist auch typisiert), dann vergiss am besten auch erstmal alles, was Du in diesen Sprachen übers Programmieren gelernt hast. Python unterscheidet sich sehr stark von Java.
würde mich mal interessieren was JAVA so stark von Python unterscheidet ...
Die Syntax ist ein wenig anders,
ist halt einen Interpreter (wobei es gibt ja Jython),
Generatoren und Lambda Ausdrücke gibt es ...
Python unterstützt Mehrfachvererbung ...
Was sind für euch essentielle Punkte?
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 09:05
von Hyperion
Der Interpreter ist übrigens kein Unterscheidungsmerkmal in vielerlei Hinsicht. Java wird in einen Bytecode kompiliert, welcher dann von einer sogenannten virtuellen Maschine interpretiert wird. Gleiches gilt auch für Python! Jython besteht im Kern "lediglich" aus einem Compiler, der Python Quellcode in Bytecode der JVM (Java virtual machine) übersetzt. CPython, also die Referenz Python Implementierung, umfasst eine eigene virtuelle Maschine und demzufolge ein eigenes Bytecodeformat.
Die wichtigen Unterscheidungsmerkmale finden sich in den Paradigmen. Python bietet über das OOP hinaus andere Paradigmen, wie etwa funktionale Programmierung.
Bei der Typisierung ist Python "dynamisch", Java "statisch" - beide sind jedoch "stark" typisiert.
Man kann auch Unterscheidungen hinsichtlich von Prinzipien finden, etwa dem "Duck-Typing" oder "EAFP" (
http://wiki.python.de/Allgemeine%20Begriffe).
Alles in allem gibt es viele Unterschiede - natürlich lassen sich auch Gemeinsamkeiten finden. Aber letztlich trifft das auf jede Kombination von Programmiersprachen zu

Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 09:18
von Dragonfire
"duck-typing" kannte ich noch nicht ...
EAFP als Prinzip kann man auch in JAVA umsetzen ...
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 09:29
von BlackJack
@Dragonfire: Man kann EAFP in Java umsetzen, das macht man aber nicht. Der Laufzeitunterschied zwischen Prädikattest/Methodenaufruf und Ausnahmebehandlung ist in den typischen Java-Implementierungen stärker als bei Python, und bei Java fällt eine ganze Klasse an Situationen weg, wo man in Python üblicherweise auf EAFP setzt: Typtests. Durch Java's statische Typisierung kommt man selten in die Versuchung zur Laufzeit auf einen Typ testen zu wollen.
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 10:19
von snafu
EAFP versuche ich auch in Python, möglichst zu vermeiden, da mir Codestücke, die auf Ausnahmebehandlung beruhen, oft etwas "unscharf" erscheinen. Testet man hingegen explizit auf eine bestimmte Bedingung, dann wird das Ganze IMHO wesentlich sprechender und man kann sich mögliche Kommentare, die man bei der Ausnahmebehandlung in einen `except`-Pfad schreiben würde, sparen.
Klar, es gibt Besonderheiten wie Race-Conditions (z.B. bei Dateioperationen), wo man mit einem `try`-`except`-Konstrukt besser beraten ist. Auch möchte sicherlich niemand ernsthaft den `import`-Mechanismus nachbauen, nur um auf das Vorhandensein eines Moduls ohne Verwendung von `try` zu testen. Nichtsdestotrotz finde ich übermäßige Ausnahmebehandlung in aller Regel eher unschön.
Naja, und das Testen auf Vorhandensein einer Methode erübrigt sich in Java (wie schon gesagt wurde), da grundsätzlich aufgrund des (Ober-)Typs bekannt sein sollte, welches öffentliche Interface einem durch das Objekt angeboten wird. In Python kann ja prinzipiell erstmal alles übergeben werden und dann guckt man mal (etwas polemisch ausgedrückt) was die Methode oder Funktion damit anstellt...

Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 11:39
von snafu
Diesen Link würde ich mit äußerster Vorsicht genießen: Da wird Python 1.5 mit JDK 1.1 verglichen. Nach heutigen Maßstäben ist das schon fast antik. Inzwischen dürfte es mit ziemlicher Sicherheit so sein, dass Java grundsätzlich schneller als Python ist (entsprechende Programmierkenntnisse vorausgesetzt). Zu den Anfängen von Java war es nämlich tatsächlich so, dass die Sprache (bzw deren Implementation) noch vergleichsweise langsam war.
Generell würde ich aber eh nicht soviel auf Performance-Vergleiche geben. Die spürt man in der Praxis meistens eh nicht. Bei besonders berechnungsintensiven Programmen sei in Bezug auf Python auf entsprechend optimierte (externe) Bibliotheken verwiesen, die in einer schnelleren Sprache implementiert sind und ein Python-Interface anbieten (z.B. Numpy). In wieder anderen Situationen (z.B. bei vielen Festplattenzugriffen) hilft nicht selten Caching, was einem teilweise auch durch diverse "themenspezifische" Frameworks abgenommen werden kann, um spürbare Verzögerungen zu vermeiden.
Mein Tipp: Guck einfach durch Ausprobieren beider Sprachen, womit du am besten klarkommst und gib nicht allzu viel auf solche "Testberichte". Falls noch nicht bekannt, möchtest du dir vielleicht mal Scala angucken, welches vollständig Java-kompatibel ist, aber dennoch sehr viele Vereinfachungen mit sich bringt. Scala ist sozusagen ein Java in weniger geschwätzig.
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 12:03
von Dragonfire
Genau das ist mein Problem ...
mich interessieren nicht Performanceunterschiede,
oder Syntaxunterschiede sondern generell Konzepte Prinzipien,
in denen sich die Sprachen deutlich unterscheiden ...
###
Schon mal ein Dank an alle für die aufgeführten Dinge hier im Thread ...
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 12:40
von jens
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 12:45
von snafu
Och, die jetzige Beschreibung ist doch eigentlich prägnant genug...

Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 13:24
von Dragonfire
Genau das meine ich ...
es gibt Unterschiede ...
aber die scheinen sehr klein zu sein ...
oder Irre ich mich da?
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 13:31
von webspider
Nein, sind sie nicht. Es fühlt sich zum Beispiel wesentlich umständlicher an in Java zu programmieren (sieht man gut wenn man mittels OOP umgesetzte Projekte in beiden Sprachen vergleicht). Python erlaubt es hingegen wesentlich kürzere und prägnantere Programme zu schreiben und erlaubt zudem verschiedene Programmierparadigmen (insbesondere die funktionalen Bestandteile sind diesbezüglich sehr hilfreich).
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 13:32
von cofi
Was meinst du mit Unterschieden? Beide sind turing vollstaendig, mit beiden kann man alles Berechenbare ausdruecken.
Der Unterschied liegt darin _wie_ es ausgedrueckt wird. Bis du mit Kriterien herausrueckst ist die Frage analog zu "Was ist der Unterschied zwischen Deutsch und Suaheli? Nein, nicht die Worte, nicht die Grammatik, sondern der Unterschied!"
Die Unterschiede sind in meinen Augen sehr groß, machen sich aber nicht so sehr an der Sprache selbst fest, sondern wie sie benutzt wird, d.h. wie die Einschraenkungen von Java (ja, da gibt es sehr viele) und Python umgangen werden.
Was hier schon oft angedeutet wurde: Java hat eine andere Kultur als Python. Wenn dir der Unterschied, dass Java keine Funktionen (und schon gar keine hoeherer Ordnung) kennt, nicht so gross vorkommt, kann ich dir nicht helfen.
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 13:50
von Dragonfire
Die Antwort war sehr hilfreich ...
Ich sollte meine Frage umformulieren ...
WAS FINDET IHR SIND DIE GRÖSSTEN UNTERSCHIEDE ZWISCHEN JAVA UND PYTHON ?
Jeder findet da andere Dinge ...
Mich interessiert was die Leute hier denken ...
alles andere kann man ja nachlesen xD
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 14:00
von Hyperion
Ich hatte da doch schon etliches genannt - bringt es Dir etwas, wenn andere Leute das noch mal wiederholen? Paradigmen, Typisierung, Zugriffskapselung ggf. noch und eben allgemein Idiome... alleine mit der ersten Klasse ergeben sich sehr viele Unterschiede; cofis Beispiel mit Funktionen folgt daraus z.B.
Die Frage ist doch, wie gut kennst Du Dich überhaupt mit der Materie aus? Es hilft Dir ja wenig, wenn Du die Schlagwörter nicht kennst... kennst Du allerdings deren Bedeutung, so sollte es sich Dir längst erschlossen haben, wie groß die Unterschiede sind

Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 14:22
von BlackJack
Grösster Unterschied für mich: In Python programmieren macht mir Spass.

Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 14:29
von mkesper
BlackJack hat geschrieben:Grösster Unterschied für mich: In Python programmieren macht mir Spass.

An den OP: Arbeite einfach mal das
Python Tutorial durch und schau, ob du damit klarkommst. Etwas Entsprechendes für Java sollte es vermutlich auch geben, oder?
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 15:33
von Dragonfire
mkesper hat geschrieben:An den OP: Arbeite einfach mal das
Python Tutorial durch und schau, ob du damit klarkommst. Etwas Entsprechendes für Java sollte es vermutlich auch geben, oder?
Ich komme damit klar ...
ohne Klammern fühlt man sich so frei
Es ging jetzt um Unterschiede die man nicht auf den ersten Blick sieht ...
und die ihr seht ...
Ich programmiere schon ein wenig in python und der Post von lunar (siehe #1) hat
mich nachdenklich gemacht ...
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 16:06
von DasIch
Der größte Unterschied dürfte darin bestehen dass Java OOP vergewaltigt während Python es nicht tut.
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 16:21
von Dragonfire
DasIch hat geschrieben:Der größte Unterschied dürfte darin bestehen dass Java OOP vergewaltigt während Python es nicht tut.
Vergewaltigt?
Was meinst du damit genau?
Re: Java vs. Python
Verfasst: Mittwoch 11. April 2012, 16:35
von derdon
Biite, hier lesen auch minderjährige mit …
Denkt denn keiner mal an die Kinder‽