Rust hat nun C++ im Benchmark Game geschlagen



  • Swifty schrieb:

    Alle Jahr wieder kommt eine Sprache die der Nachfolger von C++ sein will. Das wurde von Java genau so behauptet wie von C#, D, usw. Alle versuchen zu beweisen, dass sie schneller sind, was immer sehr zweifelhaft ist. Java war nur interpretiert, aber es gab Benchmarks, wo unmengen von Speicher verbraten wurde (pass by Value in c++) und dann war Java schneller. MS hat den Beispiel-Shop von Java genommen, der absolut nicht schnell sein sollte, und bewiesen dass C# schneller als unoptimiertes Java ist. Es gab auch solche Benchmarks gegen C++, aber weniger peinlich. D hatte auch zweifelhafte Spezialfälle gezeigt, wo es schneller war.

    Dumm nur, dass Java bei dem Benchmark Game nicht sonderlich stark ist.
    Wenn du bei einem Code Schwächen siehst, kannst du ihn verbessern und einsenden.
    Das Bechmark Game ist deutlich unvoreingenommener und fairer als irgendwelche Benchmarks von Herstellern und Zeitschriften.

    Zur Zeit hat wohl Swift die besten Karten, sowohl was Verbreitung, als auch was Geschwindigkeit angeht, weil.... Apple.
    1. Es ist schon vor Objective-C bei neugeschriebenen Anwendungen.
    2. Es nutzt LLVM gut aus, ist beides von Apple.
    3. Bisher hat Apple keine peinlichen Benchmarks gemacht, wozu denn auch?

    Rust nutzt ebenfalls LLVM und scheinbar deutlich effizienter als Swift. Swift ist außerdem bis heute nicht wirklich Crossplattform. Es gibt kaum Toolchains außerhalb der Apple-Welt, sprich, Swift wird immer ein Apple-Produkt für die Apple-Plattform bleiben.
    Rust scheint alle möglichen von Entwicklern anzuziehen für das es ursprünglich gar nicht gedacht war. Z. B. auch Webentwickler:

    https://rocket.rs/

    PS: Apple hat sehr wohl "peinliche" Benchmarks gemacht. Nämlich mal immer wieder bei Key Notes.



  • Swifty schrieb:

    Alle Jahr wieder kommt eine Sprache die der Nachfolger von C++ sein will. Das wurde von Java genau so behauptet wie von C#, D, usw.

    Naja, man könnte jetzt darüber streiten, ob das Java nicht sogar ziemlich gut gelungen ist, wenn man mal die Verbreitung (inb4 TIOBE) ansieht. Aber das ist ein Punkt der bei Rust eben durchaus eine Chance wäre: Es ist eben nicht ein schlechter C++-Klon. Sie versuchen wenigstens mal, etwas fundamental anders zu machen. Ob das klappt, wird sich zeigen, ich habe meine Zweifel.

    SeppJ schrieb:

    Die meisten davon hatten das Problem, dass sie Probleme schlecht lösten, die niemand ernsthaft hatte. Wer zum Beispiel denkt, dass C++ dringend ein Garbage Collector fehlt, der hat nie richtiges C++ gesehen, sondern nur C mit cout.

    Die Beliebtheit von Sprachen mit vollautomatischer Speicherverwaltung spricht schon irgendwie dafür, dass das ein recht nützliches Feature ist, oder zumindest als solches wahrgenommen wird. Was du als "richtiges" C++ bezeichnest ist nicht klar. Ich nehme mal an, du siehst die Schönheit des Zusammenspiels vieler Komponenten, die eigentlich die meisten (oder gar alle?) Probleme elegant lösen würden, wenn doch nur der Rest der Welt sich die Zeit nähme, sie zu verstehen, statt sie schlechter neu zu erfinden. Nicht wahr?

    Tja, willkommen in meiner Welt



  • Java ist halt auf einem ganz anderen Level "der Nachfolger von C++".
    Eine VM bietet halt Tools wie aspektorientierte Programmierung und Reflection etc, man kann eigene ClassLoader schreiben, dies das jenes.

    Alles Dinge, bei denen es garantiert nicht um Performance geht. Wenn man einen Applicationserver betreibt, dann wird man garantiert nicht eine komplizierte C++-Entwicklung bei Performanceproblemen nehmen sondern einfach den Cluster vergrößern. Ein vernünftiger Server kostet weitaus weniger als ein lowend C++-Programmierer im Monat.

    Das gleiche bei Applikationen, bei denen 99% der Laufzeit Datenbank-Shit ist. Bringt nichts, den Käse in C++ neu zu schreiben, da würde es auch Python tun.
    Wobei bei den meisten Applikationen die pure Algorithmik das Problem ist, ein

    List<Foo> list = new LinkedList(...);
    for(int i = 0; i < list.size(); ++i) {
        doSomething(list.get(i));
    }
    

    ist in jeder Programmiersprache arschlangsam und meistens reicht es, soetwas zu eliminieren.

    Der Bereich, in dem (lowlevel) Performance so richtig relevant ist, ist ziemlich klein und da werden aus Prinzip C/C++ verwendet, alleine schon weil das komplette Ökosystem darauf ausgerichtet ist.





  • Ich suche Rust-Tutorials. Gefunden habe ich
    https://doc.rust-lang.org/book/
    http://rustbyexample.com/
    http://rust-lang.github.io/book/second-edition/index.html
    Gibt es noch weitere gute Tutorials?



  • Rust ist cool schrieb:

    Ich suche Rust-Tutorials. Gefunden habe ich
    https://doc.rust-lang.org/book/
    http://rustbyexample.com/
    http://rust-lang.github.io/book/second-edition/index.html
    Gibt es noch weitere gute Tutorials?

    https://doc.rust-lang.org/nomicon/ ist noch zu empfehlen, sobald du das Book durch hast. Fang am besten mit der second edition an und lerne über die Themen, die dort noch nicht vollständig sind aus dem ersten Buch. Danach einen Blick in das Nomicon werfen.


  • Mod

    Ethon schrieb:

    Das gleiche bei Applikationen, bei denen 99% der Laufzeit Datenbank-Shit ist. Bringt nichts, den Käse in C++ neu zu schreiben, da würde es auch Python tun.
    Wobei bei den meisten Applikationen die pure Algorithmik das Problem ist, ein

    List<Foo> list = new LinkedList(...);
    for(int i = 0; i < list.size(); ++i) {
        doSomething(list.get(i));
    }
    

    ist in jeder Programmiersprache arschlangsam und meistens reicht es, soetwas zu eliminieren.

    Der Bereich, in dem (lowlevel) Performance so richtig relevant ist, ist ziemlich klein und da werden aus Prinzip C/C++ verwendet, alleine schon weil das komplette Ökosystem darauf ausgerichtet ist.

    Ich möchte in diesem Zusammenhang nur ergänzen, dass (z.B.) im GHC (Haskell Compiler) relativ aktuelle und wissenschaftlich fundierte Paralleltechnik/eingebaut ist (so gut es eben geht).
    (und gerade Lowlevel Parallel, also mit vielen vielen Prozessoren ist nicht zu empfehlen aber die Pentiums und andere sind mit ihrer eigenen internen Paralleltechnik (RISC, Caches, Pipelines usw.) in erster Linie (traditionell) C-optimiert).



  • Für mich wird eine Programmiersprache auch davon getragen:

    - wie groß ist Community
    - gute Fachliteratur
    - gute IDE
    - gute GUI und Standardbibliothek
    - viele Libs
    - einfach zu verstehen(gut C++ ist auch schwer)

    Was ich damit sagen will. Allein dass eine Sprache gut designet und schnell ist macht sie nicht automatisch erfolgreich.

    Rust ist interessant und die Entwicklung in den nächsten 10 Jahren kann man sich ruhig mal anschauen, aber einsetzen würde ich Rust privat noch nicht.




Anmelden zum Antworten