Java vs. C++
-
HansKlaus schrieb:
eigentlich ist es ziemlich egal, welche programmiersprache du im endeffekt nimmst und es gibt auch kein besser.
HansKlaus schrieb:
aber trotzdem bleibe ich dabei, dass zwischen c++ und java kein wirklich gravierender unterschied besteht, die leute aber wegen irgendwelcher, mehr oder weniger sinnfreier, sprachbestandteile und entsprechender gewohnheiten der meinung sind, dass die jeweils andere sprache schlechter ist.
Ach du lieber Himmel, du hast ja mal gar keine Ahnung.
-
Ja-Ne, deswegen gibt es auch JavaOS (https://en.wikipedia.org/wiki/JavaOS) und Java Embedded (http://www.oracle.com/technetwork/java/embedded/overview/index.html).
-
ShadowClone schrieb:
HansKlaus schrieb:
aber trotzdem bleibe ich dabei, dass zwischen c++ und java kein wirklich gravierender unterschied besteht, die leute aber wegen irgendwelcher, mehr oder weniger sinnfreier, sprachbestandteile und entsprechender gewohnheiten der meinung sind, dass die jeweils andere sprache schlechter ist.
Das ist Quatsch. Die Syntax ist vll. ähnlich, aber Java kommt für verschiedene Anwendungsgebiete erst gar nicht in Betracht. Z. B. Treiber-, OS-Programmierung, Embedded auch eher ungeeignet, Real-Time, alles, was niedrigen Speicherverbrauch und wenig Latenz haben soll.
Dafür würde ich spontan C verwenden und nicht C++
-
Zeus schrieb:
Ja-Ne, deswegen gibt es auch JavaOS (https://en.wikipedia.org/wiki/JavaOS) und Java Embedded (http://www.oracle.com/technetwork/java/embedded/overview/index.html).
Du kommst mir zunehmend vor wie ein Troll. Gehen tut vieles – gut, ist wieder eine andere Frage.
Ich kann auch ein Spiel 100% in Python schreiben, einen Browser auch – geht.
-
ShadowClone schrieb:
Zeus schrieb:
Ja-Ne, deswegen gibt es auch JavaOS (https://en.wikipedia.org/wiki/JavaOS) und Java Embedded (http://www.oracle.com/technetwork/java/embedded/overview/index.html).
Du kommst mir zunehmend vor wie ein Troll. Gehen tut vieles – gut, ist wieder eine andere Frage.
Ich kann auch ein Spiel 100% in Python schreiben, einen Browser auch – geht.Eine Gegenfrage wie oft schreibst du Embedded Code mit welche Sprache für welches Systeme?
-
HansKlaus schrieb:
ShadowClone schrieb:
Das ist Quatsch. Die Syntax ist vll. ähnlich, aber Java kommt für verschiedene Anwendungsgebiete erst gar nicht in Betracht. Z. B. Treiber-, OS-Programmierung, Embedded auch eher ungeeignet, Real-Time, alles, was niedrigen Speicherverbrauch und wenig Latenz haben soll.
Dafür würde ich spontan C verwenden und nicht C++
Keine Ahnung wie du zu diesem Schluss kommst. Jedenfalls zeigt das doch, dass nicht alle Programmiersprachen alle "gleich gut" (O-Ton) sind. "Gut", ist immer auf das Anwendungsgebiet bezogen. – Ok, dann gibt es Sprachen, die tendenziell obsolet sind. Wie C z. B. :p
-
Zeus schrieb:
ShadowClone schrieb:
Zeus schrieb:
Ja-Ne, deswegen gibt es auch JavaOS (https://en.wikipedia.org/wiki/JavaOS) und Java Embedded (http://www.oracle.com/technetwork/java/embedded/overview/index.html).
Du kommst mir zunehmend vor wie ein Troll. Gehen tut vieles – gut, ist wieder eine andere Frage.
Ich kann auch ein Spiel 100% in Python schreiben, einen Browser auch – geht.Eine Gegenfrage wie oft schreibst du Embedded Code mit welche Sprache für welches Systeme?
Ich bin mal ganz kurz auf diesen Gleis aufgesprungen und hab ein Praktikum bei einem Automobilzulieferer gemacht. Dort wurde C/C++ verwendet. Die Mikrokontroller hatten RAM im kilobyte-Bereich. Stell dir vor, jemand drückt auf die Bremse und es springt erst mal der GC an.
Java wird in Embedded nie und nimmer so intensiv verwendet wie C/C++.
Was ich momentan mache, ist als Werkstudent bei einem Anlagenbauer für Inspektionssysteme zu arbeiten. Und obwohl die Rechner dort ordentlich Power haben, wird dort ebenfalls C++ verwendet. Ok – zugegeben tatsächlich auch Python, aber diese Python-Libs greifen wiederum auf C- und Fortran-Libs zu. Sind also eher Python-Wrapper und wie gesagt haben die Rechner auch ordentlich Power.
-
ShadowClone schrieb:
Stell dir vor, jemand drückt auf die Bremse und es springt erst mal der GC an.
Java wird in Embedded nie und nimmer so intensiv verwendet wie C/C++.kannste nicht wissen. es gibt auch realtime-java: https://www.jcp.org/en/jsr/detail?id=282
und preisgünstige und energieeffiziente mcu's mit viel ram und rechenleistung (arm) gibt es auch immer mehr.
-
swapper schrieb:
kannste nicht wissen. es gibt auch realtime-java: https://www.jcp.org/en/jsr/detail?id=282
und preisgünstige und energieeffiziente mcu's mit viel ram und rechenleistung (arm) gibt es auch immer mehr.Realtime heißt nicht, dass es dieselbe kurze Latenz hat wie C/C++.
Dann ist das auch eine Kostenfrage:
- Muss ich Lizenzgebühren bezahlen?
- Wie viel mehr muss ich für die Aufstockung der Hardware zahlen?Wenn ich mehrere Millionen Einheiten pro Jahr verkaufe, dann sind das alles keine irrelevanten Faktoren.
Andere, wichtige Faktoren:
- An welche Plattformen binde ich mich überhaupt, wenn ich Java verwende?
- Wie robust ist überhaupt die Laufzeitumgebung?
-
ShadowClone schrieb:
Wenn ich mehrere Millionen Einheiten pro Jahr verkaufe, dann sind das alles keine irrelevanten Faktoren.
so ist es. dann kann schon ein passives bauteil zum entscheidenden kostenfaktor werden. das führt sogar soweit, dass man versucht, mit irgendwelchen software-tricks hardware zu sparen.
-
ShadowClone schrieb:
Keine Ahnung wie du zu diesem Schluss kommst.
C ist - meiner Meinung nach - eine schlanke und schnelle Programmiersprache und - ebenfalls meiner Meinung nach - bestens dafür geeignet, solche Abläufe zu programmieren. mit C++ kann man das zwar auch alles schön machen, aber eben nur, weil C (naja oder sowas ähnliches) da immer schön mitgeschleppt wird.
Jedenfalls zeigt das doch, dass nicht alle Programmiersprachen alle "gleich gut" (O-Ton) sind. "Gut", ist immer auf das Anwendungsgebiet bezogen.
naja und wofür verwendet man c++ und java hauptsächlich? mir fallen da spontan erst einmal computerspiele und irgendwelche "endanwendersoftware" (emailclients, terminplaner usw) ein und das kann man beides super mit c++ und java programmieren.
– Ok, dann gibt es Sprachen, die tendenziell obsolet sind. Wie C z. B. :p
also c++ wird ja scheinbar zunehmend durch java ersetzt. zumindest bei mir an der fh wird jedenfalls java zur einführung in die programmierung verwendet, damit die informatiker lernen, in oop zu denken, weil das ja so super wichtig ist und c++ ja nur eine hybridsprache darstellt und die armen leutchen mit dem ganzen gefährlichen zeugs, das c++ so bietet, ja alle überfordert werden. dieses gefühl verstärkt sich sogar noch, wenn ich hier lese, dass die meisten stellenangebote java verlangen und nicht c++.
aber die e-ingenieure verwenden eigentlich nur c, daher halte ich "c ist obsolet" für eine sehr gefährliche aussage.
-
HansKlaus schrieb:
aber die e-ingenieure verwenden eigentlich nur c, daher halte ich "c ist obsolet" für eine sehr gefährliche aussage.
der spruch dass c veraltet ist, kommt doch nur von ahnungsosen c++ fanboys.
c ist zwar alt, aber unsterblich.
--> http://beza1e1.tuxen.de/articles/spirit_of_c.html
-
C ist - meiner Meinung nach - eine schlanke und schnelle Programmiersprache und - ebenfalls meiner Meinung nach - bestens dafür geeignet, solche Abläufe zu programmieren. mit C++ kann man das zwar auch alles schön machen, aber eben nur, weil C (naja oder sowas ähnliches) da immer schön mitgeschleppt wird.
Egalwat, da wird absolut gar nichts mitgeschleppt. So manches reines C kompiliert nicht mit einem C++-Compiler. C++ ist eine Sprache die auf ihren eigenen Füßen steht, ihre eigene Features bereitstellt und mit der man aufs Auge genau so performanten Code rausbekommt als mit C. Wenn nicht sogar noch besseren, weil es vorgefertigte Musterlösungen im Standard gibt, die einem das Leben vereinfachen und es ja schlussendlich nur auf den Programmierer drauf ankommt, wie gut er sein Ding implementiert.
-
Irgendjemand hier, hat diesen Vortrag verlinkt:
https://www.youtube.com/watch?v=zBkNBP00wJE
Hier wird C++ (17) verwendet, um ein Spiel für einen 35 Jahre alten Computer zu programmieren. Der Vortragende zeigt Beispiele, wie C++ Abstraktion mit null Overhead in Assembler kompiliert wird.
Kurz gesagt: C++ kann ebenfalls schlank und effizient sein und das bei besserer Sicherheit und besserer Wartbarkeit als C.
Btw: Kenne ich nur ein Spiel, das in Java programmiert ist und das ist Minecraft. Für so ne grottige Grafik soll es laut Aussagen von Kollegen trotzdem leistungshungrig sein.
-
Auch sehr interessant:
CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++”
-
ShadowClone schrieb:
Auch sehr interessant:
CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++”
Sehr interessant C++ im Abwärtstrend im Embeddedbereich.
-
Zeus schrieb:
ShadowClone schrieb:
Auch sehr interessant:
CppCon 2016: Dan Saks “extern c: Talking to C Programmers about C++”
Sehr interessant C++ im Abwärtstrend im Embeddedbereich.
Und Java im einstelligen Bereich.
Das mit C++ ist aber wirklich nicht gerechtfertigt.
-
ShadowClone schrieb:
Und Java im einstelligen Bereich.
Das mit C++ ist aber wirklich nicht gerechtfertigt.Das Jukt mich echt nicht! Eher solche Leute die allgemeine Halbwissen wie du verbreitest.
-
cppvsjava schrieb:
Egalwat, da wird absolut gar nichts mitgeschleppt. So manches reines C kompiliert nicht mit einem C++-Compiler. C++ ist eine Sprache die auf ihren eigenen Füßen steht, ihre eigene Features bereitstellt und mit der man aufs Auge genau so performanten Code rausbekommt als mit C. Wenn nicht sogar noch besseren, weil es vorgefertigte Musterlösungen im Standard gibt, die einem das Leben vereinfachen und es ja schlussendlich nur auf den Programmierer drauf ankommt, wie gut er sein Ding implementiert.
also ich finde, dass c einfacher zu programmieren ist, als c++. irgendwo ist es doch auch "performant", wenn das programm schneller geschrieben werden kann, oder nicht? also c++ muss ja nicht unbedingt oo programmiert werden, aber irgendwie ist das alles komisch und hat unnötig viele funktionen.
andererseits sollen wir grad an der fh im rahmen von mixed reality irgendwelche fußballroboter über ein spielfeld schieben. das ist alles komplett in java geschrieben, funktioniert alles wunderbar und ist trotzdem schnell.
-
Einen Roboter anzusteuern ist auch nichts rechenintensives. Lass dein Programm mal vier Millionen Matrixmultiplikationen oder Eigenwerte von 10000x10000 Matrizen berechnen und vergleiche dann die Performance Unterschiede.