Seite 1 von 1
Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:00
von _nohtyp_
Würde es was bringen, Java als zweite Sprache zu lernen?
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:01
von BlackJack
@_nohtyp_: Ja.
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:03
von _nohtyp_
Gründe?
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:23
von bwbg
Genau die gleichen Gründe für z. B. Isländisch als Drittsprache.
Überspitzt gesagt kann man auch sagen, dass es auch etwas bringt, den Mond blau zu streichen.
Die Gründe müssen zu Dir passen, nicht uns. Du musst Deine Frage hinsichtlich der möglichen Antworten eingrenzen: "Ist es sinnvoll Java zu lernen, um ...?"
Grüße ... bwbg
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:25
von _nohtyp_
Ist es sinnvoll Java zu lernen, um meine Python Fähigkeiten zu verbessern?
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:37
von BlackJack
@_nohtyp_: Das ist eine schwierige Frage. In gewisser Weise fördert das lernen von Sprachen, die denen die man schon kennt, nicht *sehr* ähnlich sind, auch das Verständnis für die die man schon kennt, weil man Vergleichen kann und einem dadurch Dinge klarer werden. Das ist auch bei natürlichen Sprachen so. Man denkt plötzlich über Redewendungen und Idiome in der bereits bekannten Sprache nach, die man bis dahin einfach als gegeben hingenommen hat, ohne darüber nachzudenken.
Von Java kann man vielleicht für Python mitnehmen, dass man sich mehr Gedanken über Interfaces macht, die in Java ein Sprachkonstrukt sind, und in Python nur Konvention. Und wenn man sich in Python schon mal geärgert hat, dass man nie so genau weiss welche Ausnahmen eigentlich auftreten können, kann man bei Java lernen dass „checked exceptions” auch nicht schön sind.

Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:39
von bwbg
Meiner Meinung nach nicht. Python ist hinsichtlich des Abstraktionsniveaus höher, als Java.
Java ist recht nah an der Maschine und viele Dinge, welche in Python einfach von der Hand gehen, sind in Java schlicht unmöglich.
Fazit: Wenn Du Dein Python verbessern möchtest, solltest Du Dir eine höhere Sprache aussuchen oder gar eine funktionale Sprache. Letztere fordert einen völlig neuen Blickwinkel, welcher Dir im Allgemeinen zu gute kommt.
Grüße ... bwbg
PS @BlackJack: Also lernen durch Schmerzen?

Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 17:41
von BlackJack
@bwbg: „schlicht unmöglich” klingt ziemlich hart, IMHO.
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 18:24
von anogayales
@bwbg: Was ist an Java low level im Vergleich zu python. Für mich ist das Abstraktionsniveau ziemlich identisch für beide Sprachen.
Grüße,
anogayales
Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 18:32
von cofi
Identisch finde ich das Niveau nicht, aber Java 8 holt mit Lambdas und den neuen APIs schon reichlich auf. Damit wuerde ich das schon als ungefaehr gleich bezeichnen ... fuer ne Identitaet ist es mir aber noch zu schwach
Java neben Python zu lernen kann fuer die Arbeitssuche positiv sein, aber die beiden ergaenzen sich nicht, schlagen paradigmatisch in diesselben Kerben und sind sich auch sonst recht aehnlich.
Wenn du mit der zweiten Sprache tatsaechlich etwas neues aus Python holen willst, solltest du dir wirklich Sprachen anschauen die andere Paradigmen betonen. Damit muss man dann aber weiter ab vom Mainstream schauen.
Haskell fuer den rein funktionalen Ansatz, ein Lisp fuer einen Macro/Sprach-orientierten Ansatz, konkatenative Sprachen wie Factor oder Forth ... und und und.
Aber wie BlackJack schon sagte, auch aus Java kann man etwas fuer Python lernen oekonomisch ist der Gewinn aber nicht wirklich

Re: Java als Zweitsprache?
Verfasst: Montag 31. März 2014, 20:04
von bwbg
BlackJack hat geschrieben:@bwbg: „schlicht unmöglich” klingt ziemlich hart, IMHO.
Es ist de facto auch eine falsche Aussage von mir.
Man kann sicherlich jede Python-Funktionalität in Java nachbauen. Fraglich ist jedoch, ob man bereit ist den Preis (Menge an Code, Übersicht, etc.) dafür zu zahlen. Wenn man z. B. für Funktionen höherer Ordnung erst Interfaces zusammen schrauben muss, dazu kein
operator-overloading zur Hand hat, stelle ich mir das schwer lesbar vor. (Dieser Schachtelsatz ist es übrigens auch nicht).
anogayales hat geschrieben:@bwbg: Was ist an Java low level im Vergleich zu python. Für mich ist das Abstraktionsniveau ziemlich identisch für beide Sprachen. [...]
In Python sind Funktionen und auch Klassen
first-class Objekte. Das kann man von Java nicht behaupten. Ich kann jedoch nicht beurteilen, wie weit man mit der Reflection-API gehen kann. Java verwendet ebenso POJOs, welche keine Objekte im eigentlichen Sinne sind. Um dies auszugleichen, wurden die
boxed types geschaffen. Inklusive dem (Polemik:) gruseligen
auto-boxing.
----
IMHO
Java hat den Vorteil eine großen Verbreitung und ist quasi ein Industriestandard, dadurch eine große Community und Libraries für ziemlich alles erdenkliche.
Java ist, wie Python auch, eine imperative Sprache. Beide schreiben sich auf die Fahne, eine objektorientiert zu sein. Ich bin der Meinung, dass Python die "objektorientiertere" Sprache von beiden ist. Deshalb bin ich der Meinung, dass Java nicht dazu beiträgt, besser Python programmieren zu lernen.
Um den eigenen Horizont zu erweitern, rate ich zu Haskell. Es verfolgt sehr rigide ein funktionales Dogma. Man kann nicht anders, als funktional zu programmieren - außer man möchte in der IO Monade verfaulen. Und nein, ich habe Monaden (leider) immer noch nicht verstanden.
Grüße ... bwbg
Re: Java als Zweitsprache?
Verfasst: Dienstag 1. April 2014, 11:11
von Leonidas
Da stimme ich cofi vollständig zu
cofi hat geschrieben:Java neben Python zu lernen kann fuer die Arbeitssuche positiv sein, aber die beiden ergaenzen sich nicht, schlagen paradigmatisch in diesselben Kerben und sind sich auch sonst recht aehnlich.
Um besser in Python zu werden hilft Java lernen eher nicht. Also, kein Stück. Da gibt es reichlich andere Sprachen die einem mehr beibringen. Java lernen
kann sinnvoll sein, etwa für den Arbeitsmarkt oder etwa um Android-Apps zu schreiben. Aber um Dinge die man mit Python genausogut oder besser lösen kann lohnt sich Java eher nicht.
Re: Java als Zweitsprache?
Verfasst: Dienstag 1. April 2014, 11:44
von BlackJack
Ich denke die ergänzen sich doch, denn Python hat nun mal keine statische Typisierung oder „checked exceptions”, und ich denke für jemanden der nur Python kennt, kann das eine interessante Erfahrung sein das mal kennen zu lernen. Diese Teilung in statisch typisierte Sprachen mit einem abgetrennten Kompilierungsschritt vor dem Ausführen und dynamisch typisierten Sprachen bei denen quasi der Quelltext ausgeführt wird, sollte ein Programmierer IMHO selber erfahren.
Die Sprache, die der Grund für die JVM ist, sollte man auch für die meisten Sprachen kennen, die sonst noch so auf der JVM laufen. Zum Beispiel Jython oder Clojure.
Re: Java als Zweitsprache?
Verfasst: Dienstag 1. April 2014, 11:47
von Leonidas
BlackJack hat geschrieben:Ich denke die ergänzen sich doch, denn Python hat nun mal keine statische Typisierung oder „checked exceptions”, und ich denke für jemanden der nur Python kennt, kann das eine interessante Erfahrung sein das mal kennen zu lernen.
Ich denke nicht dass die statische Typisierung wie man sie in Java sieht eine lohnenswerte Erfahrung ist. Der einzige Schluss den man daraus ziehen kann wäre "statische Typisierung ist Mist" weil das in Java implementierte System sehr langatmig und wenig leistungsfähig ist. Doch statische Typisierung
muss nicht so furchtbar sein, andere Sprachen wie Haskell, OCaml, F# oder meinetwegen sogar noch C# machen vor, wie es besser geht.
Re: Java als Zweitsprache?
Verfasst: Dienstag 1. April 2014, 12:07
von BlackJack
@Leonidas: Das kommt vielleicht darauf an was man als lohnenswert ansieht. Ich sehe das aus Sicht eines Programmierers der nur Python kennt, und damit konfrontiert ist, das einem Java/C#/C++-Leute sagen diese dynamische Typisierung ist Mist und die Welt geht unter wenn man die benutzt. Und man kann dazu nichts aus eigener Erfahrung sagen. Da kann es sich IMHO schon lohnen sich so etwas wie Java mal anzuschauen und zu sehen wie sich das anfühlt.
Das jemand der schon viele Sprachen gesehen hat, wie wir beide zum Beispiel, sich jetzt nicht mehr unbedingt Java anschauen muss, wenn er es noch nicht kennt, sehe ich ja auch so. Aber wir können das auch leichter einordnen ohne es konkret benutzt zu haben, weil wir schon ähnliche Sprachen kennen, oder aus der Beschreibung eines Typsystems schon Schlüsse ziehen können, die jemand der *nur* Python kennt, mangels Erfahrung nicht ziehen kann.
Re: Java als Zweitsprache?
Verfasst: Mittwoch 2. April 2014, 09:43
von snafu
BlackJack hat geschrieben:@bwbg: „schlicht unmöglich” klingt ziemlich hart, IMHO.
Darüber bin ich gerade auch gestolpert. Das allermeiste - wenn nicht sogar alles - was in Python geht, kann man auch in Java umsetzen. Nur halt zum Teil deutlich komplizierter.
Re: Java als Zweitsprache?
Verfasst: Mittwoch 2. April 2014, 15:10
von jerch
Hmm, was kann Java bieten, was Python nicht kann? Ich liste mal ein paar Sachen:
1.) Mehr Arbeitsplätze, gut bezahlt.
Dem ist wohl so, Java ist im Businessbereich einfach gefragter (Das neue Cobol?), die Bezahlung stimmt dort auch. Python-Jobs sind rarer, in der Regel aber auch gut bezahlt (im Gegensatz zu PHP).
2.) Statische Typisierung
Java hats, ob mans braucht sei mal dahin gestellt. Ein diziplinierter Programmierer braucht die Compilerchecks selten und zieht daher wohl kaum Vorteile daraus. IDEs hingegen profitieren hiervon sehr stark. Streng typisieren beide Sprachen, was bei Python für Anfänger mitunter ein Problem darstellt - häufige Anfängerfragen hier im Forum beziehen sich auf Laufzeitfehler, wo Typen vermischt werden. IDEs tun sich mit Python schwerer. Das viel bemühte Sicherheitsargument, was gerne mit statischer Typisierung vorgebracht wird, ist imho zweifelhaft, da die Implementation nach wie vor imperativ ist (mit Java 8 kommen ja ein paar funktionale Aspekte hinzu - Python ist hier definitiv reicher an Sprachmitteln). Auf Interface/API-Ebene bringt es bei Java Klarheit, welche bei Python über die Dokumentation geliefert wird. Die Verantwortung liegt da eher beim Programmierer, das korrekt umzusetzen.
3.) Ausdrucksstärke / Codeeleganz / syntatic sugar / Projektorga
<ironie> Wer Javacode einmal gesehen hat, verliebt sich sofort in dessen Spracheleganz. Kompakt, voller netter Abkürzungen. Nicht zuletzt trägt das Ein-Klassen-pro-Datei-Konzept dazu bei, dass man alles wohl geordnet in einer Phalanx von Ordnern mit Quelldateien findet. Eine super Sache!</ironie> Eigentlich muss man das nicht weiter kommentieren - zum Glück gibt es im Javaland IDEs, die einem die Arbeit abnehmen. Und einen Sack voll weiterer Bloatware, welche Buildumgebungen, Testframeworks etc. zur Verfügung stellen. Man sollte XML können und muss hierfür die ein oder andere DSL zusätzlich lernen (gerne auch wieder in XML). Muss wohl so sein im Businessektor, noisy und überspezifiziert
4.) Programmierparadigmen / OOP / Objekthandling
In Sachen Paradigmen ist Java imperativ und klassen-objektorientiert. Allerdings fällt mir ausser Methodenüberladung und der strengeren Kapselung als Sprachmittel nix ein, was es Python voraus hätte. Im Gegenteil - die Primitivtypen sind ein seltsames Relikt in der OOP-Umgebung. Python bietet zusätzlich Mehrfachvererbung. Was bei Python auffällt - die Introspektionsmöglichkeiten zusammen mit duck typing sind ein tolles Schweizer Taschenmesser.
Die Auflistung will nicht vollständig oder tutto correcto sein. Um auf die Eingangsfrage zurück zu kommen - das hängt sehr stark von Deiner Zielsetzung ab. Am Ende können alle Programmiersprachen ja eh nur das Turingband befeuern, daher sind andere Aspekte vordergründig - eigene Sprachvorlieben, Projekt- und Arbeitsumfeld etc. Um wirklich gut mit einer Sprache zum Ziel zu kommen, ist die Kenntnis der Bibliotheken sehr wichtig. Hier bringen sowohl Python als auch Java viel mit bzw. findet man tolle Erweiterungen schnell im Netz. Übertragbar ist der Umgang mit den Bibliotheken von Python auf Java nur bedingt, beide lösen das sehr unterschiedlich (Tendenz Python - kurz und übersichtlich, Tendenz Java - viel Code und umständlicher).
So genug tendeziöses Blafasel.
