Scala und c++



  • Zeus schrieb:

    Xin schrieb:

    Zeus schrieb:

    Der Abschnitt zu GC ist auch falsch oder nur richtig wenn du Stoppende-GC meinst.

    Da Java stoppt und sich der Artikel um Java kümmert und nicht um GCs allgemein...

    Java stoppt überhaupt nix, du willst mir weiß machen, dass es keine pauseless JVM gibt?

    Ich will Dir überhaupt nichts weismachen, aber dass Du als Javaentwickler nicht davon ausgehen darfst, realtimefähige Anwendungen zu schreiben, ist Dir sicher bewusst?
    Und diejenigen, die es doch versuchen, entfernen als erstes die Abhängigkeit vom GC, damit der nicht dazwischen funkt.

    Und wie gemütlich der GC ist, sah ich mal bei einer Angriffssimulation für Kriegsschiffe - also einem Testprogramm, in dem dafür Algorithmen getestet wurden. Als mir ein Kollege sein Produkt zeigte, kam es zur Garbage-Collection-Katastrophe: Die Rakete kam, der GC sprang an, Java stockte... eine echte Rakete hätte in dem Moment wohl nicht gewartet... wir fanden das alle sehr lustig. 🙂
    Man erklärte mir sofort, dass die Simulation ausdrücklich weitergeben wird unter der Prämisse, dass man das Programm nicht in echt benutzt... es ist halt nur eine Testsimulation für Algorithmen.

    Schon irgendwie eine Ironie, Software zu entwickeln, bei der vertraglich geregelt wird, dass sie nicht ernsthaft benutzt wird...

    Zeus schrieb:

    Da du mein Post sogerne zerfetzt, bin ich mal raus, bye.

    Liefere mir etwas konkretes, womit man sich beschäftigen kann. Ich stelle Dir lediglich Fragen, wenn das bei Dir schon unter "zerfetzen" läuft, dann solltest Du einen eigenen Artikel schreiben.
    Oder besser doch nicht, schließlich könnte jemand vorbei kommen und Dir etwas wie "schreibt wie ein Amateuer" oder "Bullshit" schreiben - das wäre ja quasi eine Kriegserklärung? 😉

    Also ruhig Blut... wenn Du mir konkret helfen kannst, den Artikel zu verbessern, gerne. Wenn nicht, bleibt er so.
    Bye.



  • Xin schrieb:

    Ich will Dir überhaupt nichts weismachen, aber dass Du als Javaentwickler nicht davon ausgehen darfst, realtimefähige Anwendungen zu schreiben, ist Dir sicher bewusst?

    Ich bin kein Java-Entwickler.



  • Ich will Dir überhaupt nichts weismachen, aber dass Du als Javaentwickler nicht davon ausgehen darfst, realtimefähige Anwendungen zu schreiben, ist Dir sicher bewusst?

    Es gibt doch tausende realtimefähige Anwendungen in Java bzw JVM.

    twitter, fouresquare. (Webanwendungen)
    Android (C++/Java)
    Minecraft
    ...



  • kantaki schrieb:

    Ich will Dir überhaupt nichts weismachen, aber dass Du als Javaentwickler nicht davon ausgehen darfst, realtimefähige Anwendungen zu schreiben, ist Dir sicher bewusst?

    Es gibt doch tausende realtimefähige Anwendungen in Java bzw JVM.

    twitter, fouresquare. (Webanwendungen)
    Android (C++/Java)
    Minecraft
    ...

    Realtime bedeutet, dass die Software ein klar definiertes Laufzeitverhalten _garantiert_.

    Sobald Du einen GC dazwischen schaltest, ist das Laufzeitverhalten nicht garantiert, daraus folgt: sobald Du Java nutzt, garantierst Du gar nichts mehr, bzw. darfst erstmal mächtig Aufwand betreiben.

    Das spielt bei einem Texteditor oder einer Händi-App keine Rolle, dann ruckelt es halt mal. Den meisten Usern ist das egal, ob Whats App in Echtzeit reagiert, solange es nicht durchgehend als "träge" registriert wird. Der Mensch toleriert da relativ große Zeitspannen. "Zukunft" beginnt für den Menschen erst in etwa 300ms. Wenn ein einzelner Buchstabe dann mal was länger braucht, weil zwischendurch der GC stottert... innerhalb von 300ms sind Einzel-Ereignisse "gegenwärtig".

    Ob Dein Tweet 300ms Sekunden früher oder später gesendet wird, spielt keine Rolle - das wirst Du vermutlich gar nicht bemerken. Ob dein Airbag 300ms früher oder später auslöst... hier wirst Du mit etwas Glück noch einen Unterschied bemerken können.
    Hier kann eine Realtimeanwendung Vorteile bringen. ;->





  • Zeus schrieb:

    http://www.heise.de/developer/artikel/Made-in-Germany-JamaicaVM-eine-echtzeitfaehige-Java-Virtual-Machine-855161.html

    Schön rausgesucht. 🙂

    Bedeutet a) Du kannst nicht die Original JVM nehmen, die jedermann benutzt, was zu b) Du musst eine deutlich weniger getestete VM nehmen, was dazu führt, dass Du c) eine neue Gefahrenquelle in ein System einbaust, um ein Problem zu lösen, dass Du ohne GC nicht hättest.

    Möchtest Du Dein Leben einer JamaicaVM anvertrauen?
    Damit die Entwickler der Software günstiger ausgebildet werden können? Möchtest Du an solcher Software günstig ausgebildete Entwickler sitzen haben? ^^

    Die Tatsache, dass ein GC unterbrochen werden kann, bedeutet dass wenn ein zeitkritisches Programm viel zu tun hat, der GC halt nicht mehr ausgeführt wird. Das ist bei der normalen JVM das Verhalten, bis der Arbeitsspeicher voll ist, deswegen stockt der GC ja auch so lange, weil er vorher ja nicht aufgeräumt hat.
    Ich denke da mal an einen Autopiloten in einer kritischen Situation - es muss ja nicht von einem Flugzeug sein, kann ja auch ein AKW oder ein Weichenstellwerk sein. Einfach eine Schleife, die Ereignisse bearbeitet und wo laufend Ereignisse reinfeuern. "Ereignis: Reaktortemperator zu hoch - tu was!", "Reaktortemperatur immernoch zu hoch - tu was", "Reaktortemperatur immernoch zu hoch - tu was"...

    Denk das doch mal kurz bis zum Ende des Arbeitsspeichers durch. 😉

    Jetzt stockt die VM also doch oder die Software explodiert. Wie auch immer - Realtime endet hier - und eventuell auch Reallife.
    Irgendwann muss der GC arbeiten. Und dann wird er das Laufzeitverhalten beeinflussen.



  • Xin schrieb:

    Zeus schrieb:

    http://www.heise.de/developer/artikel/Made-in-Germany-JamaicaVM-eine-echtzeitfaehige-Java-Virtual-Machine-855161.html

    Schön rausgesucht. 🙂

    Bedeutet a) Du kannst nicht die Original JVM nehmen, die jedermann benutzt, was zu b) Du musst eine deutlich weniger getestete VM nehmen, was dazu führt, dass Du c) eine neue Gefahrenquelle in ein System einbaust, um ein Problem zu lösen, dass Du ohne GC nicht hättest.

    Da ist doch nur Bla bla.

    Der Punkt ist: Realtime mit Java funktioniert.
    Q.E.D.



  • Shade Of Mine schrieb:

    Der Punkt ist: Realtime mit Java funktioniert.
    Q.E.D.

    Kann schon sein, aber würdest du dir das echt geben? Hört sich ehrlich gesagt nicht gerade nach "The right tool for the right job" an.



  • GPC schrieb:

    Shade Of Mine schrieb:

    Der Punkt ist: Realtime mit Java funktioniert.
    Q.E.D.

    Kann schon sein, aber würdest du dir das echt geben? Hört sich ehrlich gesagt nicht gerade nach "The right tool for the right job" an.

    Kommt auf die Situation an.
    Das ist ja nicht irgendeine nicht supportete Open Source VM sondern da steht ja eine Firma dahinter. Wenn ich also, aus welchem Grund auch immer, Java verwenden will - dann ist das sicher eine gute Wahl.

    Ich kenne mich in diesem Industrie Sektor wenig aus - aber viel Software wird in Java geschrieben - dh dort ist das Know How und die Entwickler. Also warum nicht auch den Realtime Bereich mit dem Firmen Know How abdecken?



  • Zeus schrieb:

    Xin schrieb:

    http://www.proggen.org/doku.php?id=start:cppjava

    *Kopfschütteln* Stellt sich als Profi hin, schreibt wie ein Amateur. Sachliche Kritik an Systemdesign zwischen C++ und Java würde angemessen sein, aber nicht diesen Bullshit.

    Die URL lautet proggen.org, was hast du denn da erwartet 😕 🙄



  • GPC schrieb:

    Shade Of Mine schrieb:

    Der Punkt ist: Realtime mit Java funktioniert.
    Q.E.D.

    Kann schon sein, aber würdest du dir das echt geben? Hört sich ehrlich gesagt nicht gerade nach "The right tool for the right job" an.

    Das spielt bei den Diskussionen hier häufig keine Rolle.
    "Q.E.D." ist wichtig, auch wenn es hier nirgendwo darum ging irgendwas zu beweisen oder zu widerlegen.

    Und Shade Of Mine hat schon recht... Realtime mit Java funktioniert. ((Solange man halt nicht sehen will, dass Folgeprobleme mit sich bringt, die im Notfall auch sehenden Auges Menschenleben kosten können))
    Alles andere ist unwichtig.

    Q.E.D.

    Shade Of Mine schrieb:

    Da ist doch nur Bla bla.

    Auch das ist eine persönliche Meinung, die selbstverständlich Dein Recht ist. Dass ich häufig nur "Bla bla" rede, höre ich auch von anderen. Und es zeigt sich regelmäßig, dass meine Bedenken am Ende nicht nur "Bla bla" waren, sondern eine ziemlich gute Einschätzung der Situation.
    Darunter gehört auch, einen GC scheitern zu sehen. Es kann für ein Projekt unpraktisch sein, wenn der GC Daten löscht, die man eigentlich noch braucht. Auch das spricht gegen die Nutzung eines GCs oder wenigstens für die Nutzung eines sehr gut getesteten GCs.

    Mir erklärt man, dass ich nur "Bla bla" rede und fährt dann eben wissend ein Projekt gegen die Wand. Aber nachdem die Situation geklärt ist, ist das nicht mehr mein Problem.

    Mir scheint, unser beider Situation ist schon seit einigen Postings geklärt, von daher... 🙂

    Shade Of Mine schrieb:

    Das ist ja nicht irgendeine nicht supportete Open Source VM sondern da steht ja eine Firma dahinter.

    Der GC, der in dem Projekt scheiterte, stammte von einer unbedeutenden Firma, die auch Betriebsysteme verkauft.

    Shade Of Mine schrieb:

    Ich kenne mich in diesem Industrie Sektor wenig aus - aber viel Software wird in Java geschrieben - dh dort ist das Know How und die Entwickler. Also warum nicht auch den Realtime Bereich mit dem Firmen Know How abdecken?

    Die Antwort hast Du bereits als "Bla bla" zusammengefasst. Vielleicht noch mal ansehen.

    gasssssssst schrieb:

    Die URL lautet proggen.org, was hast du denn da erwartet 😕 🙄

    :->

    Schau Dich mal im Domainmarkt um und was Domainnamen so kosten. ^^
    proggen.org könnte ich mir heute nicht mehr leisten, von daher bin ich froh, dass ich sie bekommen habe. 🙂



  • ok danke.

    Ich denke ich werde nie realtime Anwendungen schreiben, jedenfalls nicht in nächster Zeit, deswegen bleibe ich jetzt erst einmal bei Scala.



  • kantaki schrieb:

    ok danke.

    Ich denke ich werde nie realtime Anwendungen schreiben, jedenfalls nicht in nächster Zeit, deswegen bleibe ich jetzt erst einmal bei Scala.

    scala ist schon okay. der fette twitter wal wird davon ja auch angehoben 🤡 ...



  • Shade Of Mine schrieb:

    GPC schrieb:

    Shade Of Mine schrieb:

    Der Punkt ist: Realtime mit Java funktioniert.
    Q.E.D.

    Kann schon sein, aber würdest du dir das echt geben? Hört sich ehrlich gesagt nicht gerade nach "The right tool for the right job" an.

    Kommt auf die Situation an.
    Das ist ja nicht irgendeine nicht supportete Open Source VM sondern da steht ja eine Firma dahinter. Wenn ich also, aus welchem Grund auch immer, Java verwenden will - dann ist das sicher eine gute Wahl.

    Ich kenne mich in diesem Industrie Sektor wenig aus - aber viel Software wird in Java geschrieben - dh dort ist das Know How und die Entwickler. Also warum nicht auch den Realtime Bereich mit dem Firmen Know How abdecken?

    Klar, das ist prinzipiell schon richtig. Aber die GC-Probleme erscheinen mir nur aufgeschoben, nicht aufgehoben. Keine Ahnung wie diese VM das macht, aber irgendwann muss der GC halt mal laufen, damit er nicht dauerhaft oder in kritischen Situationen am unteren Speicherlimit rumgrindet. Ich habe noch nie real-time entwickelt, aber tendentiell denke ich, dass das kritische Anwendungen sind und das heißt für mich, dass ich als Entwickler die möglichst hohe Kontrolle über die Abläufe haben will.

    Ich finde GCs ansonsten schon ganz cool - aber ich programmiere halt auch Desktopanwendungen. Und ich würde auch keine Webprogrammierung mit C++ machen, insofern 🙂





  • Der Artikel wertet ja nicht wirklich. Er sagt, es geht, aber begründet das nicht.



  • kantaki schrieb:

    Ich denke ich werde nie realtime Anwendungen schreiben, jedenfalls nicht in nächster Zeit, deswegen bleibe ich jetzt erst einmal bei Scala.

    Ich halte C++ für ratsamer, aber ich halte Scala auch nicht für einen Fehler. Das kannst Du wohl mit gutem Gewissen tun.

    GPC schrieb:

    Ich finde GCs ansonsten schon ganz cool - aber ich programmiere halt auch Desktopanwendungen. Und ich würde auch keine Webprogrammierung mit C++ machen, insofern 🙂

    Läuft inzwischen ganz schnuckelig, kann ich inzwischen eigentlich nur empfehlen. 🙂

    Zeus schrieb:

    http://www.tutego.de/blog/javainsel/2011/03/inselupdate-echtzeit-java-real-time-java/

    Übliches - durchaus funktionierendes - Realtime-Java entfernt den GC. Aber warum programmiere ich dann Java!?



  • Xin schrieb:

    Übliches - durchaus funktionierendes - Realtime-Java entfernt den GC. Aber warum programmiere ich dann Java!?

    Weil man auf Schmerzen steht? 🤡



  • Xin schrieb:

    Zeus schrieb:

    http://www.tutego.de/blog/javainsel/2011/03/inselupdate-echtzeit-java-real-time-java/

    Übliches - durchaus funktionierendes - Realtime-Java entfernt den GC. Aber warum programmiere ich dann Java!?

    Lern lesen und lern denken, in den Artikel steht dass RT-Java Scoped Memory eingeführt hat, da steht nicht das der GC weggefallen ist, und dort wird die Spezifikation erwähnt und eine Implementierung die JamaicaVM, und schon durch ersten verlinkten Artikel, wissen wir das sie ein modifizierten GC hat, also ScopedMem + GC. Überhaupt mach es kein Sinn mit dir darüber zu argumentieren. Du scheinst dich in dein Know-How zu verbeissen, obwohl du nicht mal dich um den aktuellen Entwicklungsstand informierst, ziehst großzügig Argumentation bei den Wolken her. Nein, warum du überhaupt RT-Java programmieren sollst, hab ich überhaupt keine Arhnung.



  • kantaki schrieb:

    ok danke.

    Ich denke ich werde nie realtime Anwendungen schreiben, jedenfalls nicht in nächster Zeit, deswegen bleibe ich jetzt erst einmal bei Scala.

    Und ich ziehe Clojure vor.


Anmelden zum Antworten