News Android: Kotlin und Swift als Java-Alternative gehandelt

@Hellblazer

Was für Apps würde man verlieren, wenn man die Sprache ändert?
Braucht Android wirklich x Taschenlampen Apps usw. ?

Ob es wirklich noch Sinn macht für verschiedene Studiengänge eine Einführung in Java im "Pflichtbereich" des Studiums zu haben ist für mich fraglich. In meinen Fall wäre eine gute Einführung in C++, Matlab und evtl. ein symbolisch Algebra System (Maple?) die sinnvoller Kombination gewesen.
 
Go for Swift, please!
Swift ist schon eine ziemlich geile Geschicht...ich will nichts anderes mehr nutzen müssen :D
 
Mr_Tee schrieb:
Und was soll an C++ schlecht sein? Ich höre nämlich aus deinem letzten Satz Kritik raus.
Ich kann aber durchaus verstehen wenn man mit C++ nicht klar kommt, wenn man vorher mit C# oder Java gecodet hat, wobei der GC nicht alle Arbeit abnimmt. Man muss halt einfach wissen was man tut.

Übrigens kann man mit jeder Sprache Mist machen. Hab letztens den Code von nem Kollegen gesehen, statt in C zu schreiben, wie die meisten von uns (SG Entwicklung), war er der Meinung er müsse es mit C++ machen. Prinzipiell wäre das kein Problem wenn er den Code nicht endlos verschachtelt und mit Templates vollgehauen hätte, der Code ist einfach schlecht wartbar.

Wer C++ benutzt hat, kommt mit Java klar, aber nicht anders herum. Dein Post zeigt mir, dass du beide Sprachen nicht vernünftig beurteilen zu verstehst.

Java bietet automatisches Memory Management (Garbage Collecteion). C++ nicht.

In C++ muss man ganz allgemein weitere Prinzipien verstehen (Destruktoren, Pointer usw.), die in Java nicht von Bedeutung sind. Außerdem bietet C++ insgesamt weniger "High-Level-Komfort". Hochsprachen setzen auf einem höheren Abstraktions-Level auf, sodass man vereinfacht gesagt weniger schreiben muss, um etwas zu erreichen.

C++ ist die Sprache der Wahl, wenn es um die "tiefer" ansetzende Software geht (Hardware-Kommunikation, GUI-Frameworks, Games usw.), wo oftmals Performance ein wichtiger Faktor ist. Wer einfach nur produktiv an einer Business-Anwendungen, Web-Applikation oder derartiges arbeiten will, nutzt lieber Java.
 
Hallo32 schrieb:
@Hellblazer

Was für Apps würde man verlieren, wenn man die Sprache ändert?
Braucht Android wirklich x Taschenlampen Apps usw. ?

Wollen wir wirklich nur noch Facebook, Whatsapp, Instagram, Pay2Win-Games und Google-Apps haben?

Ich nutze einige (sinnvolle) Apps, die von Privatpersonen/Studenten geschrieben wurden. Für die etwas kleineren Firmen könnte das aber auch zu Schwierigkeiten führen, da C++-Programmierer schwieriger zu finden sind. Java-Leute gibst wie Sand am Meer. (wäre dann natürlich ein Vorteil, für die die C++ vernünftig können :D )

In meinen Fall wäre eine gute Einführung in C++, Matlab und evtl. ein symbolisch Algebra System (Maple?) die sinnvoller Kombination gewesen.

So liefs bei mir an der FH. An der Uni wars Java und etwas C. Den Rest konnte man mit geschickter Wahlfach-Wahl umgehen, aber das ist ja hier nicht das Problem (es führt nur eben indirekt dazu, dass es mehr Java "Programmierer" gibt, als alles andere).
 
Zuletzt bearbeitet:
@GinoBambino:
Ich finde Java komplizierter, weil RAII fehlt. In C++ muss ich nicht dran denken, meine Dateien zu schließen...
Was hat Java, was C++ nicht hat (abgesehen von nem GC, welchem man in C++ gut mit shared_ptr beikommen kann)?

@topic:
Bei fast jeden OS ist's wurscht, welche Sprache man nutzt, außer bei Android, warum?
Weil Google unfähig ist.
Aber vielleicht werden Native-Apps mal aufgewertet.
 
Danke GinoBambino. Lustig wie hier einige Experten lieber Ihre Mobile-Apps komplett in C++ schreiben würden. Zumal das für nativen Code, ja schon geht.

Haben vermutlich weder in Java noch mittels NDK eine Android App geschrieben.

@Hancock: Schon mal drüber nachgedacht, das Java bewusst darauf verzichtet um die Syntax an vielen Stellen einfacher zu machen? Komplizierter ist Java dadurch sicherlich nicht. Es reicht grob zu verstehen wie der GC funktioniert. Zumal Android Java 7 mit "try-with-ressources" unterstützt, um die imo hässlichsten try/catch Verschachtelungen und Probleme der Determiniertheit aufzuheben.
 
Zuletzt bearbeitet:
Fritzler schrieb:
Nein, man kann nicht ganz einfach C++ nutzen, da C++ doch ganz andere Anforderungen an einen Entwickler stellt als Java.

Mr_Tee schrieb:
C++ ist sicher kein Mist, jedoch in weiten Teilen nicht so komfortabel wie Java oder andere neuere Sprachen. C++ schleppt immer noch "Altlasten" mit sich, die die Sprache weniger komfortabel machen und neuere Sprachkonstrukte müssen sich diesen Altlasten auch beugen.

Zu mal man sich in weitere "Konzepte" einarbeiten muss und damit sogar wieder Sicherheitslücken und Co erst mal Tür und Tor öffnet.

Hellblazer schrieb:
Also an der Uni lernte ich: Wir lernen nicht Java, C++, C oder Haskell, wir lernen Programmieren. Wenn sie die Konzepte verstehen hinter einzelnen Sprachen und das gesamte Konzept der Programmierung, können sie jede Sprache erlernen. Und das stimmt auch. Ich hab bis heute keine Sprache gefunden, in der ich nicht früher oder später meine Ideen umsetzten konnte. Egal ob Java, C#, C++, PHP, JavaScript, Pyhton, Ruby, Perl und Co. Wer die Grundlagen der Programmierung beherrscht findet sich nach gewisser Einarbeitung in jeder Sprache zurecht.

GinoBambino schrieb:
Nun ja, wenn man sein Leben lang nur Java genutzt hat und gewisse Konzepte und Grundlagen nicht gelernt hat, gebe ich dir recht. So jemand kommt in C++ und anderen Sprachen weit weniger zurecht. Wer jedoch Grundlagen der Programmierung gelernt hat, kommt mit jeder Sprache nach gewisser Zeit zurecht.

Die Probleme mit C++ entstehen eher, weil viele sich nicht mit gewissen Grundlagen beschäftigen, dazu eben Speicherverwaltung und den damit verbundenen Pointern. Ebenso anderen Punkten.

Das ändert aber nichts daran, dass gewisse "Komfortfunktionen" und "syntaktischer Zucker" - die man primär aus Hochsprachen kennt - durchaus auch in "tieferen" Sprachen möglich sind. Siehe D. Ich wechsel im übrigen nun zu "Interpreter-" und "Compilersprache". Interpretersprachen sind dabei Java, C# und Co, also dass was einige hier als Hochsprache bezeichnen. Compilersprachen dagegen sind C, C++ und eben das von mir erwähnte D.

D kann man schon als eine Art "Verschmelzung" ansehen, es nimmt Ansätze und Komfortfunktionen aus Sprachen wie C#, Java und Co, ist dennoch eine sehr "hardwarenahe" Sprache und kann in leistungskritischen Umgebungen genutzt werden. Der heutigen Compiler-Entwicklung sei Dank.

Genauso ist Swift keine klassische Interpretersprache - oder Hochsprache - sondern auch eher ein Hybrid, der auf einem Compiler basiert, jedoch Komfortfunktionen aus Interpretersprachen mitbringt und nutzt.

Diese klassische Unterscheidung und die Streitigkeiten um die Sprachen - welche wofür besser ist, welche mehr "Können" benötigt usw. - sind eher Standesdünkel von Entwicklern um eine vermeintliche Überlegenheit anderen gegenüber zu suggerieren. ;)
 
Zuletzt bearbeitet von einem Moderator:
I guess, google operatives like this languages, why I hate em, static typing is a pain in the ass, all this languages enforces that, as far as wikipedia tells me.

But at least swift also supports functional programming, another issue I have with most hyped languages, that they use this OO paradigm. All methods, to slow down the creative process, in optimal case it allows you to work better together or reuse code but thats not always the case
 
Java hat den Vorteil dass es viele schöne, auch kleinere Biliotheken gibt, die man ggf. auch selber pflegen kann. Der größte Vorteil ist aber die Infrastruktur an Tools, IDEs, Profiling, Debugging, Dependecy-Management etc... das ist bei C(++) einfach bescheiden. Zudem hat Java eine durchaus brauchbare Standardibliothek. Die STL ist mittlerweile auch nicht mehr sooo mies, hat aber so ihre Eigenheiten die man kennen muss. Bohrt man die STL mit Boost auf, ist man auch schnell bei Binaries > 10 MiB dank der ganzen Templates...

Nicht zuletzt: Für Java findet man dutzende Code-Monkeys, da aus dem Bauchgefühl 80% der Enterprise-Backends und teilweise auch Frontends mit Java laufen. Insofern ist Java (für den Anfang) die richtige Entscheidung gewesen. Mit C++ wird man viele Wald-und-Wiesen-Programmierer - die den Play-Store füllen - verlieren. Als beruflicher Java und C(++) Programmierer kann ich sagen, dass Java weitaus weniger schmerzen verursacht als C(++) und ich die Leute schneller in Java-Projekte einarbeiten kann als in C++. Und dabei gefällt mir persönlich C++ durchaus besser als Java, da ich dort mehr Kontrolle habe, aber Java hat eben auch seinen Flausch. :)
 
@Teralios: Stimme dir in allen Punkten zu. Aber für Leute, die kein Informatik Studium genießen durften sind Sprachen wie Java ein einfacherer Einstieg. Und du schreibst selber "weil viele sich nicht mit gewissen Grundlagen beschäftigen, dazu eben Speicherverwaltung und den damit verbundenen Pointern". Um diese Punkte zu verstehen und richtig zu machen, braucht es eben ein gutes Verständnis und man opfert viel Hirnschmalz um keine Fehler zu machen, anstatt an der eigentliche Problemlösung zu schreiben. Swift geht ja noch weiter als Java, und abstrahiert größere Teile, bzw. nähert sich Skriptsprachen. Letztendlich möchte ich mich als Entwickler einer App idR. nicht um das Speichermanagement kümmern.

Das ganze hat nichts mit besserer oder schlechter, oder Java vs. C++ zu tun. Mich stört nur einfach, dass jeder nächstbeste Hobbyentwickler dem Tenor der jahrzehntealten Behauptungen nachplappert, dass Java langsam sei und Anwendunen nur in Programmiersprachen geschrieben werden sollten, die "Low-Level" Programmierung ermöglichen. Als wäre man dann was besseres, obwohl man in Wahrheit als jemand ohne viel Erfahrung, durch den Java Compiler und die JVM vermutlich weitaus performantere Programme schreiben kann. Die fangen eben viele Unzulänglichkeiten des Programmierers ab.


Am Ende glaube ich einfach, das dieses "durchgesickerte" Gerücht ein Warnschuss in Richtung Oracle ist. Sollte sich Google mittelfristig von Java abwenden hätte das wohl krasse Auswirkungen für Oracle. Wäre Google damals einfach größer gewesen und hätten gewusst, was für ein Erfolg Android wird, hätte sie die 7,5 Milliarden Dollar für SUN am besten selber locker gemacht. Dann ginge es Java heute vermutlich besser.:(
 
Zuletzt bearbeitet:
Die meisten sind mit Java oder anderen Sprachen deutlich produktiver als mit C++, ich will mich da nicht ausnehmen. Bei C++ muss man ständig an dutzende Sachen denken, die mit dem eigentlichen Ziel/Aufgabe/Problem gar nichts zu tun haben, sondern nur dem Sprachdesign geschuldet sind.

Es ist durchdrungen von Altlasten und undefiniertem, absurdem und/oder fehleranfälligem Verhalten und daran hat auch C++11 nicht viel geändert, auch wenn es in die richtige Richtung geht. Ich bin jedenfalls froh, dass ich den Kram endlich los bin.

(M.Sc. Informatik übrigens)
 
Zuletzt bearbeitet:
Persönlich würde ich Kotlin vorziehen. Die Sprache ähnelt Java in viele Punkten, ist allerdings viel ausdrucksstärker ohne dabei unnötig komplex zu werden wie das z.B. bei Scala häufig der Fall ist. Man kann einfach häufig kürzeren und trotzdem besser lesbaren Code schreiben als das bei Java der Fall ist. Während Java recht dogmatisch, Scala flexibel, aber auch komplex ist sucht Kotlin den Mittelweg und verpackt das ganze in einer eleganten Art und Weise.

Swift teilt sich mit Kotlin viele gemeinsame Konzepte, setzt diese tendenziell aber weniger elegant um. Im Gegenzug hat Swift Vorteile, wenn man systemnah programmieren will/muss. Ein weiterer Vorteil wäre es, dass man bei Multi-Plattform Apps viele Bibliotheken für iOS und Android nutzen könnte.

C++ hielte ich für keine gute Wahl. Die Sprache ist zwar sehr mächtig und wurde mit C++11 und 14 um viele moderne Konzepte erweitert. Aufgrund ihres Alters um der notwendigen Kompatibilität zu altem Code sind diese Konzepte aber häufig bei weitem nicht so elegant in die Sprache eingebaut wie das bei jüngeren Sprachen der Fall ist. C++ ist, was die Basissprache angeht wenig ausdrucksstark. Das wird durch viele Features, die nachträglich ergänzt wurden, zum Teil kompensiert, führt dabei aber häufig zu unnötiger Komplexität. In manchen Bereichen ist C++ zwar noch durchaus sinnvoll, aber als Standardsprache würde ich es nicht mehr wählen.

Mögliche Alternativen wären z.B. Rust oder Go. Vor allem letzteres würde sich anbieten, da es ja sowieso von Google entwickelt wird und sie damit ähnlich wie Apple mit Swift die Möglichkeit hätten die Sprache und Standardbibliotheken optimal die Plattform abzustimmen.
 
Zuletzt bearbeitet:
Ich verstehe nicht, warum sie bei einer Objektorientierten Sprache bleiben wollen und nicht direkt zu einer funktionalen wie Scala oder Haskell. Das wäre mal was zukunftsweisendes.
 
Merkuras schrieb:
Dann erläutere mal die Vorteile von Scala und Haskell und wieso das zukunftsweisend wäre.

Funktionale Programmierung hat durchaus seine Vorteile gegenüber imperativen Sprachen, jedoch ebenso Nachteile. Ein Grund, warum heutige Sprachen sowohl imperative als auch funktionale Ansätze verbinden.
 
Immer diese Leute die denken man müsste alles mit C++ machen, unmöglich. Und sage ich als Informatik Student. Der größte Fehler von C++ im Design ist die abwärtskompatiblität zu ANSI C(90).
 
Zuletzt bearbeitet: (Korrektur)
Ich verstehe nicht, warum hier so viele Leute rumnörgeln, dass sie Sprache x auf Plattform y gerne hätten.

Xamarin zeigt wo es lang geht - ohne dass man auf unproduktive Sprachen wie C oder C++ oder veraltete Sprachen wie Java setzen muss.
 
Wattwanderer schrieb:
Als ich sah, dass Apple vergleichbare Leistung und Akku Laufzeiten wie Samsung erreicht musste ich mich schon fragen ob Android nicht näher an Hardware ran muss. Sonst kann ich mir nicht erklären warum Samsung einen so deutlich größeren Akku für dieselben Möglichkeiten braucht.

Vielleicht wäre eine neue Sprache die Gelegenheit die Effizienz zu verbessern.
Android müsste dringend näher an die Hardware, aber das ist im Grunde schon immer so. Seit Jahren zeigt Apple, dass man bei guter Optimierung mit Single und Dualcores problemlos schaffen kann, was bei lahmen Java unter Android gleich einen Quad und ein paar GB Ram braucht. Aber "mal eben" stellt man ein ganzes OS halt nicht um.

GinoBambino schrieb:
C++ ist die Sprache der Wahl, wenn es um die "tiefer" ansetzende Software geht (Hardware-Kommunikation, GUI-Frameworks, Games usw.), wo oftmals Performance ein wichtiger Faktor ist. Wer einfach nur produktiv an einer Business-Anwendungen, Web-Applikation oder derartiges arbeiten will, nutzt lieber Java.
D.h. ein Smartphone mit (vergleichsweise) lahmen Chips und immer begrenzten Energieressourcen ist somit eigentlich das Paradebeispiel für eine C++ Anwendung (oder C# oder was auch immer, aber halt nicht so einen unperfomanten Kram wie Java oder Python...)

Colonel Decker schrieb:
Warum nicht Python?

Ist ja toll für die Leute, die bei C++ durch blicken, aber hey, warum nicht gleich in Assembler? Oder seid ihr N00bs oder was? :rolleyes:
Python ist einerseits auch nicht wirklich performant und andererseits finde ich hardwarenahes Programmieren mit Python ist meist ein Krampf (DLL's einbinden oder so... bäääh). Register schreiben etc. endet dann nur in endlosem Gehampel mit c_types. Da kann ich lieber direkt mit Cxx einsteigen, wo ich die richtigen Datentypen habe.

C++ ist für einen ernsthaften Programmierer kein Problem. Und die ganzen Taschenlampen-, Furz- und Schrottapps - naja, auch wenn es die nicht mehr gibt wird keiner verzweifeln.
Von der Performance her würde es Android sicher gut tun.
 
GinoBambino schrieb:
Wer C++ benutzt hat, kommt mit Java klar, aber nicht anders herum. Dein Post zeigt mir, dass du beide Sprachen nicht vernünftig beurteilen zu verstehst.

Java bietet automatisches Memory Management (Garbage Collecteion). C++ nicht.

In C++ muss man ganz allgemein weitere Prinzipien verstehen (Destruktoren, Pointer usw.), die in Java nicht von Bedeutung sind. Außerdem bietet C++ insgesamt weniger "High-Level-Komfort". Hochsprachen setzen auf einem höheren Abstraktions-Level auf, sodass man vereinfacht gesagt weniger schreiben muss, um etwas zu erreichen.

C++ ist die Sprache der Wahl, wenn es um die "tiefer" ansetzende Software geht (Hardware-Kommunikation, GUI-Frameworks, Games usw.), wo oftmals Performance ein wichtiger Faktor ist. Wer einfach nur produktiv an einer Business-Anwendungen, Web-Applikation oder derartiges arbeiten will, nutzt lieber Java.

Hört hört, hier spricht der Experte. Ich verdiene mit C# und C meine Brötchen. Wer denkt, der GC macht alles, hat einfach keine Ahnung. Insbesondere wenn man auf Performance achtet kommt man um unmanaged code nicht immer rum. Bei C++ muss man sich halt um alles selber kümmern, das hat seine Vor- und Nachteile. Übrigens finde ich Python deutlich eleganter als Java, ist aber nur meine Meinung.

Autokiller677 schrieb:
[...]

Python ist einerseits auch nicht wirklich performant und andererseits finde ich hardwarenahes Programmieren mit Python ist meist ein Krampf (DLL's einbinden oder so... bäääh). Register schreiben etc. endet dann nur in endlosem Gehampel mit c_types. Da kann ich lieber direkt mit Cxx einsteigen, wo ich die richtigen Datentypen habe.

[...]

CPython.
 
Zuletzt bearbeitet:

Ähnliche Themen

Antworten
5
Aufrufe
970
Zurück
Oben