Scala und c++



  • kantaki schrieb:

    2. Lohnt es sich C++ und Scala zu verbinden zB wie Lua und c++ es machen?

    Nein, dazu seh ich irgendwie überhaupt keinen Grund. Wie soll das sinnvoll gehen? Ich mische ab und zu Java und Scala in einem Projekt, das geht ganz gut, aber die IDE Unterstützung ist mangelhaft. Aebr wenn du C++ und Scala mischen willst, müssten das zwei komplett getrennte Projekte sein, die z.B. über Webservices kommunizieren. Alles andere, wie z.B. JNI bringt gar nichts.



  • Xin schrieb:

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

    +1
    Klasse Artikel, spricht mir aus dem Herzen 😉



  • Ich programmiere seit 2 Jahren so gut wie täglich und nebenbei lerne ich Sprachen die mich interessieren.
    so großartig unterscheiden sich die meißten imperativen Sprachen nicht von einander und es ist relativ einfach sich andere anzueignen.

    Es gibt immer ein paar Sachen die mich auf dauer nerven.
    zb

    Java: Kein Lambda, kein Overloading, bin kein Fan von Interfaces bzw Boilercode,
    Generics => zB Keine Types bei Runtime.

    C#: Crossplatform nur mit mono, .NET für windows.

    Python: Viel Konvention, "schlechterer" IDE support als zb Java/c# etc

    PHP: meh..

    Lua,C++: Zu wenig Erfahrung um die Cons zu sehen.

    Scala: Tools, längere Compiletime als Java (~20x länger?).

    Wie lange dauert es eigentlich bis der neuste Standard komplett von den Compilern unterstüzt wird?

    Könnte mir jemand einen kleinen C++ Codeschnipsel posten zB irgentein elegant gelöstest Problem? Am liebsten mit den neusten Features.



  • 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.



  • 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.

    proggen.org hat ein Wiki, um die Qualität von Artikeln zu kontinuierlich verbessern. Sachliche und konstruktive Kritik ist also sehr willkommen und wird in der Regel auch zeitnah in die Artikel eingearbeitet.

    Solange diese Kritik nicht qualitativer als "schreibt wie ein Amateur ... diesen Bullshit" ist, joah... sehe ich noch keinen Handlungsbedarf. Aber dennoch danke für Dein Feedback.



  • Xin schrieb:

    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.

    proggen.org hat ein Wiki, um die Qualität von Artikeln zu kontinuierlich verbessern. Sachliche und konstruktive Kritik ist also sehr willkommen und wird in der Regel auch zeitnah in die Artikel eingearbeitet.

    Solange diese Kritik nicht qualitativer als "schreibt wie ein Amateur ... diesen Bullshit" ist, joah... sehe ich noch keinen Handlungsbedarf. Aber dennoch danke für Dein Feedback.

    Ja, klar ein blinder kann auch nicht sehen. Dein Artikel trivialisert auf einfachen Featurevergleich zwischen zwei Programmiersprache. Das Programmiersprache ein komplexes System ist, dass Änderung vom Design sensible ist, damit Auswirkungen auf andere Aspekte hat, wird garnicht eingegangen. Nach dem Motto C++ hat Mehrfachvererbung sowie Template und Java nicht. Dabei wird nicht untersucht, dass solche Sprachfeature innerhalb von Java nötig sind, sondern weil Sie in C++ vorhanden ist, abgeleitet, dass die Änderung nur zur Vereinfachung von C++ gemacht wurden. Der Abschnitt zu GC ist auch falsch oder nur richtig wenn du Stoppende-GC meinst. Generics sind keine Template: 1) Template sind mächtiger. 2) Generics als Type umgekehrt zu Templates verhalten.



  • Zeus schrieb:

    Ja, klar ein blinder kann auch nicht sehen. Dein Artikel trivialisert auf einfach Featurevergleich zwischen zwei Programmiersprache.

    Das sehe ich nicht so, die Auswirkung der unterschiedlichen Features werden auch bewertet. Und zwar so, wie ich es für richtig erachte.
    Darum steht als erster Satz des Artikels, dass es sich um meine persönliche Meinung handelt.
    Es steht jedem frei anderer Meinung zu sein, bisher sind die Reaktionen allerdings größtenteils positiv.

    Zeus schrieb:

    Das eine Programmiersprache ein komplexes System ist, welche Designänderung auswirkungen andere Aspekte des System hat wird garnicht eingegangen. Nach dem Motto C++ hat Mehrfachvererbung sowie Template und Java nicht.

    Die Designänderung von Java durfte ich als Java-Entwickler schon in der Realität sehen. Mehrfachvererbung fehlt.

    Wie möchtest Du denn, dass ich auf die Designveränderungen eingehe? Gibt es etwas, was ich positiv hervorheben sollte, wo ich Java unrecht tue?

    Zeus schrieb:

    Dabei wird nicht untersucht, dass solche Sprachfeature innerhalb von Java nötig sind, sondern weil Sie in C++ vorhanden ist, abgeleitet dass die Änderung nur zur Vereinfachung von C++ gemacht wurde.

    Mit C# konnte ich das Diamantproblem mal nachbauen. Versehentlich(!).
    Ich fand das witzig, weil das ja eigentlich gar nicht geht... das ist mir in C++ noch nie passiert, denn C++ hilft mir das zu vermeiden.

    Du kannst mir gerne erklären, weshalb "solche" Sprachfeature nötig sind. Interfaces kann ich in C++ nachbilden, sind also kein Mehrwert von Java, es handelt sich also in Java tatsächlich um einen Mangel an Mehrfachvererbung. Warum der Mangel eines sinnvollen Features ein Feature sein soll, hätte ich gerne mal genauer erklärt.

    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...

    In einem Artikel über GCs kann man das gerne ausführlicher machen, aber Smart-Pointer würde ich jetzt auch nicht als Lösung/GC bezeichnen, zumal sich damit genauso ein "stoppendes" Verhalten konstruieren lässt.

    Zeus schrieb:

    Generics sind keine Template: 1) Template sind mächtiger. 2) Generics als Type umgekehrt zu Templates verhalten.

    Bei 2) verstehe ich Deine Aussage nicht. Du verhältst Dich umgekehrt zu mir - aber die Aussage hat auch wenig Substanz. 😉

    Auf die Tatsache, dass Templates mächtiger als Generics sind, gehe ich gar nicht ein - es widerspricht auch nicht der Aussage des Artikels.

    Allgemein gehe ich auf Generics/Templates nicht groß ein, weil - wie Du richtig sagst, Generics keine Templates sind und Templates keine Generics. Würde ich schreiben, dass Java keine Templates kann, grätscht mir jeder Java-Fan - und das zu recht! - ein, dass C++ keine Generics kennt.

    Der Mangel an Features in Java ist hingegen unbestreitbar: Kein Const-Correctness, keine Mehrfachvererbung, dafür krankt es am Sprachdesign: überall fliegen Exceptions, zur Laufzeit kann man sich nicht auf einen überschaubaren Ereignishorizont verlassen.

    Java ist vom Sprachkonzept her eine Katastrophe, wenn man es gegen C++ vergleicht - insbesondere wenn man berücksichtigt, dass Java nicht die Sprache ist, die OOP in eine C++-Artige Syntax holte oder mit der OOP-Designpatterns ausprobiert wurden. Man hätte echte C++-Probleme lösen können, man hat das Potential einer angeblichen C++-Nachfolgesprache nutzen können.
    Hat man aber nicht.

    Wenn ich etwas in dem Artikel konkret verbessern kann, bin ich für Hinweise dankbar. Hinweise wie 'Abschnitt ist falsch oder nur richtig im Java-Kontext' sind bei einem Java-Artikel einfach nicht hilftreich. Welches konkrete "solche" Sprachfeature meinst Du wäre nötig? Was konkret sind diese "anderen Aspekte", auf die Du Dich beziehst.

    Sag mir konkret, worauf ich eingehen sollte, dann kann ich sehen, ob der Artikel hier verbessert werden kann/sollte.



  • Xin schrieb:

    Warum der Mangel eines sinnvollen Features ein Feature sein soll, hätte ich gerne mal genauer erklärt.

    Ach, damit kannst du den Java Leuten nicht kommen, die freuen sich ja auch, dass sie keine unsigned Typen haben. 🤡



  • 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?

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



  • 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. 🙂


Anmelden zum Antworten