Java? Zufällig kann ich Java. Und ich finde es lästig und eher irreführend, wenn ich eine Funktion immer in eine Klasse packen muss. Wenn etwas eine Funktion ist, dann soll es eben so sein.
Ich denke da an z. B. Math.sin(). Welche Funktion hat die Klasse Math? Eigentlich doch gar keine. Sie ist ziemlich unbrauchbar. Sie wird nur benötigt, da Java keine freien Funktionen kennt.
Das ist auch wieder nur ein Beispiel von ganz vielen. Java hat als Sprache halt wesentlich weniger Features. Und das macht die Sprache zwar einfacher, aber eben weniger ausdrucksstark.
Java hat als Sprache halt wesentlich weniger Features. Und das macht die Sprache zwar einfacher, aber eben weniger ausdrucksstark.
Unsinn! Ausdrucksstärke als Maß ist durchaus umstritten, aber als Faustregel gilt: Je weniger Code ich für dieselbe Funktionalität brauche, um so ausdrucksstärker ist die Sprache.
Bei C++ habe ich alleine durch die (vollkommen unnötige) Aufteilung von Deklaration (Header-Dateien) und Implementierung schon mehr Code als in anderen Sprachen.
Es gibt kaum Reflection-Eigenschaften -> in vielen Bereichen führt das zu wesentlich längerem Code (Unit Testing z.B., dabei dann Stubbing und Mocking insbesondere).
C++ mag viele "Features" besitzen, aber dennoch muss man idR. viel mehr Code schreiben, um Dinge zum Laufen zu bringen. Alleine alles mögliche an Destruktor-Code bei (womöglich verschachtelten) Collections... kann man sich bei Java (ein Glück) sparen.
Java kennt seit Version 8 Lambdas - eben aus dem von Dir oben genannten Grund. (Ok, C++ fängt langsam auch wieder an, Fahrt aufzunehmen dank C++11 und folgenden Standards)
Ich persönlich finde Java immer noch viel zu ausdrucksschwach und mag es nicht unbedingt (C# z.B. macht vieles wesentlich besser und ist als Sprache angenehmer), aber im Vergleich zu C++ ist Java dennoch ausdrucksstärker.
Wenn Du bisher nur C++ und Java kennst, befasse Dich mal mit einer Sprache wie Python, Scala oder Ruby, um zu sehen, wie weit entfernt die beiden von diesen Sprachen sind oder gleich mit Clojure als pragmatischen Lisp-Vertreter. Ich garantiere Dir, dass Du C++ dann nur noch für Spezialfälle anfassen magst
Java? Zufällig kann ich Java. Und ich finde es lästig und eher irreführend, wenn ich eine Funktion immer in eine Klasse packen muss. Wenn etwas eine Funktion ist, dann soll es eben so sein.
Ich denke da an z. B. Math.sin(). Welche Funktion hat die Klasse Math? Eigentlich doch gar keine. Sie ist ziemlich unbrauchbar. Sie wird nur benötigt, da Java keine freien Funktionen kennt.
Das ist auch wieder nur ein Beispiel von ganz vielen. Java hat als Sprache halt wesentlich weniger Features. Und das macht die Sprache zwar einfacher, aber eben weniger ausdrucksstark.
Bei C++ habe ich alleine durch die (vollkommen unnötige) Aufteilung von Deklaration (Header-Dateien) und Implementierung schon mehr Code als in anderen Sprachen.
Es gibt kaum Reflection-Eigenschaften -> in vielen Bereichen führt das zu wesentlich längerem Code (Unit Testing z.B., dabei dann Stubbing und Mocking insbesondere).
C++ mag viele "Features" besitzen, aber dennoch muss man idR. viel mehr Code schreiben, um Dinge zum Laufen zu bringen. Alleine alles mögliche an Destruktor-Code bei (womöglich verschachtelten) Collections... kann man sich bei Java (ein Glück) sparen.
Java kennt seit Version 8 Lambdas - eben aus dem von Dir oben genannten Grund. (Ok, C++ fängt langsam auch wieder an, Fahrt aufzunehmen dank C++11 und folgenden Standards)
Ich persönlich finde Java immer noch viel zu ausdrucksschwach und mag es nicht unbedingt (C# z.B. macht vieles wesentlich besser und ist als Sprache angenehmer), aber im Vergleich zu C++ ist Java dennoch ausdrucksstärker.
Wenn Du bisher nur C++ und Java kennst, befasse Dich mal mit einer Sprache wie Python, Scala oder Ruby, um zu sehen, wie weit entfernt die beiden von diesen Sprachen sind oder gleich mit Clojure als pragmatischen Lisp-Vertreter. Ich garantiere Dir, dass Du C++ dann nur noch für Spezialfälle anfassen magst