Welche Programmiersprache für meine spez. Interessen?

Ok, momentan habe ich den Video-Kurs MITx 6.00.1x Introduction to Computer Science and Programming Using Python edX begonnen, um überhaupt erst mal zu starten. Leider behandeln sie dort noch Python 2.7, aber was soll's. Ich muß allerdings zugeben, daß ich immer noch ein wenig am Zaudern bin, ob vielleicht nicht doch Java die bessere Wahl für mich wäre. V.a. wegen der näheren Verwandtschaft zu C/C++, welche ich ja wohl früher oder später eh für hardwarenahe Programmieraufgaben benötigen werde. Mich hat auch die Tatsache beindruckt, daß man mit Jython fast alle Standardmodule von Python in Java implementieren konnte. Als Laie wirkt es für mich also so, als stünde Java eine Ebene über Python, weil es Python quasi "emulieren" kann, wenn ich es so richtig verstanden habe?

Und dann ist da natürlich auch die wesentlich größere Verbreitung von Java, wobei wegen meiner speziellen interessen aber der bei Java riesige Bereich Business-Development komplett ausgeklammert werden muß, da ich von der Verbreitung einer Sprache in diesem Bereich nicht profitiere.
Ich habe also keine Ahnung, ob sich Python und Java hinsichtlich Verbreitung, Funktionalität und Verfügbarkeit von Bibliotheken zu meinem Interessengebiet maschinelles lernen/Mustererkennung überhaupt unterscheiden. Kann ja sein, daß dies ein Teilgebiet ist, wo gerade Python über besondere Stärken oder eine besonders große Nutzergemeinde verfügt. Zumindest nach meinen Recherchen als Laie habe ich tatsächlich den Eindruck, daß Python bei der Bearbeitung von wissenschaftlichen und technischen Aufgabenstellungen und Simulationen sehr verbreitet ist und es im Anwendungsspektrum eine wesentlich größere Schnittmenge mit Matlab aufweist als Java.

Na was soll's. Sollte ich doch noch auf Java umsteigen, werden mir die Python Basics immerhin den Einstieg erleichtern.
 
Tellurium schrieb:
Als Laie wirkt es für mich also so, als stünde Java eine Ebene über Python, weil es Python quasi "emulieren" kann, wenn ich es so richtig verstanden habe?
Es verhält sich ein wenig anders. Es gibt die JVM, die in der Lage ist, bestimmten Bytecode auszuführen. Woher dieser Bytecode kommt, ist eine andere Sache. Im Prinzip kann jede Sprache in kompatiblen Bytecode übersetzt werden, solange jemand einen passenden Übersetzer dafür programmiert. Aus diesem Grund gibt es eine ganze Reihe von teils sehr verschiedenen Sprachen, die allesamt mit der JVM arbeiten können:
Scala, Jython, JRuby usw.

Es ist wie .Net. Die VM da drin heißt CLR (common language runtime); sie führt CIL-Programme (common intermediate language) aus. MS hat für so einige Sprachen (C++, C#, F#, VB.net, J# [Java für .Net; ist aber schon fast tot]) passende Übersetzer bereit gestellt, die diesen CIL-Code erzeugen können.
 
Achso, die Beschreibung der Wikipedia ist leider sehr mißverständlich:"Jython, successor of JPython, is an implementation of the Python programming language written in Java." Das klang für mich als Laien so, als würde eine Art Java-Programm die gesamte Sprache Python emulieren.

Wie genau darf ich mir das dann vorstellen? Ist Jython also praktisch eine Art in Java geschriebenes Übersetzungsprogramm, daß Python-Code in Bytecode übersetzt? Und wie sieht es dann aus, wenn man ein Programm schreibt, daß auf die Funktionen von zig diversen Python-Bibliotheken zurückgreift? Ich nehme an "alles" läßt sich nicht in Bytecode übersetzen, oder? Also vereinfacht ausgedrückt, ist Jython ein Python->Java Bytecode-Übersetzungsprogramm, dessen Wortschaft auf ein Kernvokabular begrenzt ist?

Weiter schreiben sie in der Wikipedia: "Jython programs can import and use any Java class. Except for some standard modules, Jython programs use Java classes instead of Python modules. Jython includes almost all of the modules in the standard Python programming language distribution, lacking only some of the modules implemented originally in C. For example, a user interface in Jython could be written with Swing, AWT or SWT."
Heißt dies ich kann mit Jython abgesehen von den Standardmodulen keine Python-Bibliotheken verwenden? Und in welchem Maß muß man, um auf die Funktionalität der Java-Klassen (Klasse=Bibliothek?) zuzugreifen Java-Programmierkenntnisse haben?
 
Tellurium schrieb:
"Jython, successor of JPython, is an implementation of the Python programming language written in Java." Das klang für mich als Laien so, als würde eine Art Java-Programm die gesamte Sprache Python emulieren.
Emulation ist hier das falsche Wort. Ich habe mal oberflächlich auf die Doku geschaut und da lese ich heraus, dass es direkt in der JVM läuft, also als Bytecode vorliegt.

Quelle: http://www.jython.org/docs/tutorial/indexprogress.html
Jython is an implementation of Python for the JVM. Jython takes the Python programming language syntax and enables it to run on the Java platform. This allows seamless integration with the use of Java libraries and other Java-based applications.
Diese Beschreibung ist klarer.
Jython ist ein Python-Interpreter, der als Programm in der JVM läuft.


Ist Jython also praktisch eine Art in Java geschriebenes Übersetzungsprogramm, daß Python-Code in Bytecode übersetzt?
Ob er in Java geschrieben wurde, weiß ich nicht.


Und wie sieht es dann aus, wenn man ein Programm schreibt, daß auf die Funktionen von zig diversen Python-Bibliotheken zurückgreift? Ich nehme an "alles" läßt sich nicht in Bytecode übersetzen, oder?
Sie schreiben selber, dass nicht alle Python-Module verfügbar sind. Es stellt sich die Frage, ob das jetzt so wild ist oder nicht. Ich kenne diese Module nicht. Und das Java Framework hat auch einiges zu bieten.


Also vereinfacht ausgedrückt, ist Jython ein Python->Java Bytecode-Übersetzungsprogramm, dessen Wortschaft auf ein Kernvokabular begrenzt ist?
Vorsicht, du bringst jetzt die Begriffe durcheinander. Eine Sprache ist erst mal nur eine Reihe von Regeln, wie die Syntax aufgebaut wird, um eine bestimmte Semantik zum Ausdruck zu bringen. Das Drumherum wie Bibliotheken, Module usw. ist das Framework.
So wie ich auf der Seite lesen konnte, ist die Sprache komplett drin, aber nicht das komplette Framework.


Heißt dies ich kann mit Jython abgesehen von den Standardmodulen keine Python-Bibliotheken verwenden?
Wenn die Bibliotheken in reinem Python geschrieben sind und nicht auf die erwähnten Ausnahmen zurückgreifen, sollten sie funktionieren. Die werden dann einfach mitübersetzt.


Und in welchem Maß muß man, um auf die Funktionalität der Java-Klassen (Klasse=Bibliothek?) zuzugreifen Java-Programmierkenntnisse haben?
Java-Programmierkenntnisse braucht man relativ wenige. Man muss die Konzepte verstehen, nach denen sich die einzelnen Java-Klassen, -Objekte, etc. richten. Die sind sprachübergreifend. ZB: Ein Array ist eine geordnete Menge einer fixen Anzahl von Datenstrukturen in fix definierten Dimensionen. Das gilt für jede Sprache, in der es Arrays gibt (also so ziemlich alle).
Java hat aber auch ein paar Eigenheiten, die man nur dann lernen muss, falls man drüber stolpert (zB dass das Geheimnisprinzip streng genommen nicht in Java machbar ist - dürfte für dich aber egal sein, das wirst du nicht bemerken).
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
47
Aufrufe
190.965
D
Antworten
35
Aufrufe
3.882
Zurück
Oben