Kann mich nicht entscheiden: Java oder C++ ?



  • _matze schrieb:

    Aber passt ja zum Thread...

    die ausgangsfrage sieht aber so ziemlich ernst gemeint aus.
    🙂



  • ~fricky schrieb:

    _matze schrieb:

    Aber passt ja zum Thread...

    die ausgangsfrage sieht aber so ziemlich ernst gemeint aus.
    🙂

    Ja, seh ich auch so. Aber so ab der Hälfte wird's unsinnig...



  • _matze schrieb:

    tfa schrieb:

    Dabei ist längst bekannt, dass es unter Windows sowieso keine Programme gibt, die 100%g laufen - egal welche Sprache.

    Registrierte Trolle sind mir die liebsten... 🙄

    Aber passt ja zum Thread...

    Troll = jemand schreibt (a) etwas sarkastisches oder (b) etwas, das mir nicht passt ? 🤡



  • definitiv java, außer du hast einen speziellen Grund, C++ verwenden zu müssen.



  • Definitiv C++! Da lernt man mehr. Z.B. " Dein Speicher, das unbekannte Wesen" 🙂 oder jedes new sollte auch ein delete haben. Und vieles mehr. Ausserdem gibt es auch gute IDEs fuer C++ Eclipse, VS2008 (und vor allem Vim) sind sehr gute Beispiel.



  • knivil schrieb:

    Definitiv C++! Da lernt man mehr. Z.B [....] jedes new sollte auch ein delete haben.

    jaja, das sind ganz entscheidende grundlagen. auch dass es zwei verschiedene deletes gibt, was smart-pointer sind und ähnliche dinge. ohne sowas kommt man im leben einfach nicht weiter.
    🙂



  • tfa schrieb:

    Dabei ist längst bekannt, dass es unter Windows sowieso keine Programme gibt, die 100%g laufen - egal welche Sprache.

    Ui, dies gilt ebenso wie für alle anderen Betriebssysteme (Gerade wenn man sich nicht an die dort üblichen Programmierkonventionen, und spezielle Gegebenheiten erfordert etc.).

    Zum OP: Wenn Java in Frage kommt kann das .Net Framework auch kein KO-Kriterium sein (Zumindestens auf meinen Rechner nimmt sich dies bezüglich Frameworkgröße und Installationsaufwand nichts, aber auch gar nichts).

    Wenn du möglichst wenig "Overhead" haben willst ist C++ tatsächlich recht gut geeignet - aber auch hier ist (ob nun statisch oder dynamisch gelinkt) eine Runtime Umgebung nötig. Leichter zu lernen und auch mit mehr Anfangserfolg ist Java und C#/.Net (Wie gesagt akzeptiere ich kein Argument gegen .Net wenn man ebenso mit Java spekuliert) - und hier kommt es eher auf persönliche Vorlieben an (Wobei ich unter Windows .Net, Plattformübergreifend Java vorziehen würde).

    cu André



  • asc schrieb:

    (Wie gesagt akzeptiere ich kein Argument gegen .Net wenn man ebenso mit Java spekuliert)

    ausserhalb der windows-welt ist .NET so gut wie bedeutungslos und ausserdem zu 'mickrosoftig'-proprietär, um ein wirklich plattformunabhängiges system zu sein.
    🙂



  • asc schrieb:

    Wie gesagt akzeptiere ich kein Argument gegen .Net wenn man ebenso mit Java spekuliert

    Und was ist mit dem Argument, dass es die JVM für wesentlich mehr Plattformen gibt als die CLR ?



  • ~fricky schrieb:

    ausserhalb der windows-welt ist .NET so gut wie bedeutungslos und ausserdem zu 'mickrosoftig'-proprietär,...

    byto schrieb:

    Und was ist mit dem Argument, dass es die JVM für wesentlich mehr Plattformen gibt als die CLR ?

    Das Eingangsposting hattet ihr beide nicht gelesen, oder?

    Also ich möchte Programme, die unter Windows 100%ig laufen... Plattformunabhängigkeit ist mir nicht so wichtig.

    Zudem habe ich auch erwähnt das ich .Net auf den Windowsplattformen, und Java Plattformunabhängig vorziehen würde (wenn man C++ mal außen vor läßt).



  • asc schrieb:

    Das Eingangsposting hattet ihr beide nicht gelesen, oder?

    Doch habe ich, aber Deine Aussage hörte sich recht pauschal an.



  • asc schrieb:

    Wenn du möglichst wenig "Overhead" haben willst ist C++ tatsächlich recht gut geeignet - aber auch hier ist (ob nun statisch oder dynamisch gelinkt) eine Runtime Umgebung nötig.

    Wie kommt ihr immer dazu, die Runtime für C++ mit der Runtime von .Net oder Java in einem Atemzug zu nennen? Die Runtime für C++ ist ein paar mikrige Kilobyte groß und wird in der Praxis wahrscheinlich immer statisch gelinkt. (Erst bei Visual C++ 2005 war da die unsinnige Voreinstellung, bei der das nicht statisch gelinkt wurde, um weniger 100 KB zu sparen.) Konsolen- und WinAPI-Programme sollten ohne Probleme selbst auf einem frisch installierten Windows 95 laufen. Es sei denn, das Programm greift auf externe Bibliotheken zu. Aber dann ist es sowieso nicht mehr passend, diese Dinge mit .Net zu vergleichen, denn .Net ist das standardmäßige Basisprodukt, das man auf jeden Fall für C# braucht. Während so Zeugs wie die MFC ja externe Frameworks/Bibliotheken sind. Würde man analog mit C# auf externe Bibliotheken zugreifen, bräuchte man ja wiederum externe DLLs.

    Der Vergleich C++-Runtime - .Net-Runtime hinkt total. Das .Net-Framework ist 80 MB groß, während man bei C++ sämtliche Standardheader und die windows.h benutzen kann, ohne dass das Programm 100 oder 200 KB dafür überschreitet. Und diese Runtime ist in der Regel statisch gelinkt, so dass man C++-Programme ohne weiteres weitergeben kann, während der Benutzer bei .Net erstmal das .Net Framework installieren muss.

    Also hört auf, C++-Runtime und .Net-Runtime miteinander zu vergleichen, so als wäre das einander ähnlich. "Gut, bei C# muss man erst die Runtime installieren, aber bei C++ ist das ja auch so." FALSCH!!! 😡 Und MFC und Konsorten sind externe Bibliotheken. Die gehören in diesen Vergleich sowieso nicht rein, denn wenn ich analog von externen Bibliotheken für .Net sprechen würde, bräuchte man dafür ja auch nochmal weitere DLLs.



  • mad schrieb:

    Während so Zeugs wie die MFC ja externe Frameworks/Bibliotheken sind. Würde man analog mit C# auf externe Bibliotheken zugreifen, bräuchte man ja wiederum externe DLLs.

    Du brauchst defakto solche externen Bibliotheken für C++. Deshalb ist es auch vernünftig die Runtime von C++ miteinzubeziehen.

    natürlich ist die c++ runtime idR kleiner, aber komplett ignorieren kann man sie auch nicht.



  • mad schrieb:

    asc schrieb:

    Wenn du möglichst wenig "Overhead" haben willst ist C++ tatsächlich recht gut geeignet - aber auch hier ist (ob nun statisch oder dynamisch gelinkt) eine Runtime Umgebung nötig.

    Wie kommt ihr immer dazu, die Runtime für C++ mit der Runtime von .Net oder Java in einem Atemzug zu nennen? Die Runtime für C++ ist ein paar mikrige Kilobyte groß und wird in der Praxis wahrscheinlich immer statisch gelinkt.

    Dem "in der Praxis wahrscheinlich immer statisch gelinkt" widerspreche ich vehement. Gerade wenn Programme eine gewisse Größe erreichen, und in Einheiten (DLL...) getrennt werden, halte ich statisches Linken für die schlechtere Einstellung - und kenne es aus mittelgroßen Projekten (ab ca. 1 Mio Codezeilen) auch nicht.

    Und wenn ich bedenke wie viele der Meinung mit dem statischen Linken sind, dann ist es durchaus legitim die C++ Runtime mit Java/.Net zusammen zu erwähnen. Denn insgesamt dürfte die Größe der Runtime, durch die vielen installierten Anwendungen, zusammen auch locker erreicht werden (Da sie ja nach deiner Meinung in der Regel statisch gelinkt werden).

    mad schrieb:

    Und MFC und Konsorten sind externe Bibliotheken. Die gehören in diesen Vergleich sowieso nicht rein, denn wenn ich analog von externen Bibliotheken für .Net sprechen würde, bräuchte man dafür ja auch nochmal weitere DLLs.

    Nur das du bein .Net Framework (ebenso wie bei Java) im seltesten Fall auf externe Bibliotheken zurück greifen musst (das .Net Framework enthält alles wesentliche), und du in C++ in der Regel immer weitere Bibliotheken benötigst.

    cu André



  • Und vorallem ist es keine virtuelle Maschine sondern meist nur eine enzelne kleine Bibliothek. Fuer C-Programme hat man ja auch 'ne "Runtime", dort wo malloc etc. zu finden ist. Spricht darueber irgendwer? Und mal ehrlich, wuerde jemand Java oder C# benutzen, wenn nicht so eine grosse Klassenbibliothek mitgeliefert wuerde?



  • knivil schrieb:

    Und vorallem ist es keine virtuelle Maschine sondern meist nur eine enzelne kleine Bibliothek.

    Die sich statisch gelinkt aber effektiv zu einem wahren Moloch entwickeln können (Kleinvieh macht auch Mist).

    Davon abgesehen: Wieviele Anwendungen, die größer als Hilftools sind, kennst du, die keine externen Bibliotheken benötigen. Letztere rechne auch zum Teil ein, da in .Net/Java diese meist durch das Framework abgedeckt werden.



  • mad schrieb:

    und wird in der Praxis wahrscheinlich immer statisch gelinkt.

    Nee, das ist Quatsch. Wir linken hier nicht statisch (unser Software-Chef würde mir eins auf den Deckel geben 😉 ), und es gibt auch viele bekannte Mainstream-Software, die die Installation der Runtime in ihr Setup integriert hat. Bei vielen Spielen ist das z.B. auch so...



  • knivil schrieb:

    Und mal ehrlich, wuerde jemand Java oder C# benutzen, wenn nicht so eine grosse Klassenbibliothek mitgeliefert wuerde?

    Es gibt noch weitaus mehr Gründe für Java/C#, auch wenn wir das eigentliche Framework Beispielsweise auf den Umfang von der C++ Standardbibliothek reduzieren. Zumindestens möchte ich mich nicht mit COM & Co quälen, um Objekte über DLL Grenzen übergeben zu können. Ebenso werden viele C++ Macken erst im kommenden Standard teilweise ausgemerzt (I18N sei nur mal ein Thema).

    Nein, weder C# noch Java sind der heilige Gral, aber ebenso auch nicht C++. Berufich entwickel ich unter C++, privat unter C# (da mit einer Ausnahme alle Bekannten Windowssysteme verwenden, und der Entwicklungsaufwand unter C# einfach geringer ist; Wäre die OS-Verbreitung anders, wäre wohl Java privat im Einsatz).

    cu André



  • asc schrieb:

    Davon abgesehen: Wieviele Anwendungen, die größer als Hilftools sind, kennst du, die keine externen Bibliotheken benötigen. Letztere rechne auch zum Teil ein, da in .Net/Java diese meist durch das Framework abgedeckt werden.

    Gab.s da nicht mal was: steuererklaerung.exe? Oder wie heisst die?



  • asc schrieb:

    Davon abgesehen: Wieviele Anwendungen, die größer als Hilftools sind, kennst du, die keine externen Bibliotheken benötigen.

    Wobei es für den Windows-Anwender weitaus komfortabler ist, wenn bei der Installation eines C- oder C++-Programms ein paar kleine, unauffällige DLLs ins Programmverzeichnis mitinstalliert werden, als wenn von ihm verlangt wird, erst irgendwelche dutzende Megabyte großen Frameworks irgendwoher runterzuladen, von denen er gar nicht weiß wozu sie gut sind.


Anmelden zum Antworten