mensch183
Captain
- Registriert
- Jan. 2008
- Beiträge
- 3.666
... die gar nicht vorhanden ist.L0g4n schrieb:Und sage ich als Informatik Student. Der größte Fehler von C++ im Design ist die abwärtskompatiblität zu ANSI C.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
... die gar nicht vorhanden ist.L0g4n schrieb:Und sage ich als Informatik Student. Der größte Fehler von C++ im Design ist die abwärtskompatiblität zu ANSI C.
Ja, der Standard Python Interpreter. Und jetzt? Trotzdem ist Python damit nicht wirklich performant, z.B. bei Schleifen. Wenn kann man versuchen mit Cython oder so noch was zu reißen. Aber die Probleme mit DLL's und c_types bleiben trotzdem.Mr_Tee schrieb:CPython.
mensch183 schrieb:... die gar nicht vorhanden ist.
C# und Java sind sich sehr ähnlich, sowohl was Funktionsweise als auch was Performance angeht. Abgesehen davon verwendet Google ja nicht mal die normale JVM für Android.Autokiller677 schrieb:(oder C# oder was auch immer, aber halt nicht so einen unperfomanten Kram wie Java oder Python...)
Mahirr schrieb:Apples Programmiersprache ist objektorientiert und gilt als vergleichsweise einfach. Durch die Quelloffenheit passt die Sprache zudem zu Googles Android-Konzept.
Sorry aber das ist unsinnig. Java grundsätzlich als "lahm" abzustempeln zeugt nicht gerade von Fachwissen. Und Android ist eher ein Paradebeispiel für Bytecode-Sprachen. Es läuft eben auf unterschiedlichen Architekturen, was einer der Gründe ist warum Android so erfolgreich ist. Aussagen wie "müsste dringend näher an die Hardware" deuten eher darauf hin, dass dir das nicht bewusst ist.Autokiller677 schrieb: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...)
Hierfür machts Sinn auf andere Sprachen zurückzugreifen die low-level Implementierungen ermöglichen. Aber zeig mir abseits von 3D Spielen, VR Apps o.ä, mal Anwendungsfälle wo das wirklich Sinn macht?As a developer, you need to balance its benefits against its drawbacks. Notably, using native code on Android generally does not result in a noticable performance improvement, but it always increases your app complexity.
[...]
Typically, good use cases for the NDK are CPU-intensive applications such as game engines, signal processing, and physics simulation.
G00fY schrieb:Sorry aber das ist unsinnig. Java grundsätzlich als "lahm" abzustempeln zeugt nicht gerade von Fachwissen. Und Android ist eher ein Paradebeispiel für Bytecode-Sprachen. Es läuft eben auf unterschiedlichen Architekturen, was einer der Gründe ist warum Android so erfolgreich ist. Aussagen wie "müsste dringend näher an die Hardware" deuten eher darauf hin, dass dir das nicht bewusst ist.
Das ist größtenteils Unsinn. Apps, die viel Leistung brauchen greifen auch unter Android schon lange auf native C/C++ Bibliotheken zurück. Außerdem solltest du beachten, dass Apples A-SoCs trotz weniger Kernen häufig die gleiche oder sogar mehr Leistung haben als die gängigen High-End SoCs, die bei Android-Geräten eingesetzt werden. Beim Speicherverbrauch haben native Apps sicherlich ein paar Vorteile, aber Googles JVM ist da mittlerweile auch nicht mehr so viel schlechter.Autokiller677 schrieb: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.
Wozu das OS umstellen. Android basiert auf einem modifizierten Linux-Kernel, auf dem prinzipiell gewöhnliche Linux-Software lauffähig wäre, wenn du die entsprechende Libs aufs Smartphone kopierst und die Konfiguration anpasst.Autokiller677 schrieb:Aber "mal eben" stellt man ein ganzes OS halt nicht um.
Wären die Smartphones noch mit 16-Bit CPU mit 20Mhz und 1MB RAM unterwegs, würde ich dir da zustimmen. Bei Octacores mit 2.5GHz und 4GB RAM zieht das hingegen nicht mehr.Autokiller677 schrieb: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...)
Es geht weniger darum, ob man es mit C++ machen könnte, denn das kann man definitiv. Die Frage ist eher, ob man es will. Google hat sich damals nicht ohne Grund gegen C++ entschieden, obwohl es die offensichtlich Wahl gewesen wäre.Autokiller677 schrieb: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.
Das OS ist komplett in C/C++. Einzig Apps laufen in der JVM und selbst die nicht immer vollständig.Autokiller677 schrieb:Trotzdem halte ich die Idee, ein halbes OS auf Java aufzubauen für bescheuert.
mrhanky01 schrieb:Wenn Microsoft schnell mitzieht und auch auf Swift baut dann wäre die App-Problematik relativ schnell gelöst.
Autokiller677 schrieb:Klar erfordert es mehr Arbeit, näher an die Hardware zu gehen. Dafür ist das Ergebnis dann besser. Java ist nicht immer und überall lahm, klar. Python oder PHP auch nicht. Trotzdem halte ich die Idee, ein halbes OS auf Java aufzubauen für bescheuert.
Teralios 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.
G00fY schrieb:@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.
(
Mr_Tee schrieb: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.
CPython.
Vider schrieb:Wie schon erwähnt wird bei Android keine JVM verwendet. Vor 5.0 wurde die Dalvik Virtual Machine benutzt. Danach wird gar keine VM benutzt, die Programme werden zum nativen code kompiliert.
GinoBambino schrieb:Ich kenne nicht den aktuellen Feature-Umfang von C++. Gibt es dort auch mittlerweile Generics, Lambda Expressions, Objektinitialisierer usw?
Auch die ist nicht gegeben. Dein Versuch, ausgerechnet bei älteren Versionen nach Kompatiblität zu suchen, geht übrigens in die falsche Richtung.L0g4n schrieb:Klugscheißen ist natürlich immer was feines. Dann eben die Kompatiblität zu C90 bzw. zu C99.
Vider schrieb:Und hier nochmal ein paar Benchmark für alle die glauben, dass die moderne JVM lahm ist: http://benchmarksgame.alioth.debian.org/u64q/java.html