Von C zu Rust wechseln?



  • Ist natürlich nur ein Scherz



  • VitC schrieb:

    https://github.com/rust-lang/rust/wiki/Rust-for-CXX-programmers

    Das ist leider nicht auf'm aktuellen Stand. Das hat jemand geschrieben, bevor es „multi dispatch“ und „associated types“ gab.

    Ich denke auch, es ist quatsch gerade hier ein Rust-Unterforum einzurichten. Die Zahl der Rustaceaner ist ja sehr überschaubar und viele von denen können kein Deutsch. Und der Rest findet hier wahrschewinlich auch schwer hin. Das wär’ also echt langweilig.



  • Das sehe ich genauso. Ich habe auch Rust ausprobiert. Es mag mal irgendwann keine Sinn mehr machen große, performante und sicherheitsrelevante Programme in C++ anstelle von Rust zu schreiben, aber ich persönlich kommen mit den unsafe Sprachen C und C++ besser klar.

    Ich bleibe bei meiner persönlich lieblings-unsafe-Sprache C. Bei Rust bekomme ich komische Knoten im Kopf, ich bin einfach zu blöd dafür.



  • Ich habe Rust auch erst einmal wieder auf Eis gelegt und bin schon wieder fleißig am C coden.(Mir ist Rust doch zu schwer) Dennoch sehe ich Rust in den nächsten Jahren immer weiter aufsteigen. Überall wo es halt sicher und performant werden soll und vielleicht das Projekt auch größer wird, ist Rust genau richtig. Libs, IDE usw. kommen sicher bald. An den ganzen Bindings(SDL, GTK, Curl, OpenSSL, OpenGL usw) sind sie ja schon fleißig am programmieren.



  • VitC schrieb:

    Überall wo es halt sicher und performant werden soll

    Überall wo es sicher und performant werden soll wird man sicher auf bewährte Sprachen setzen und ganz sicher nicht auf irgendwas experimentelles.
    Ich gehe stark davon aus, dass Rust keine Chance hat. Siehe D. Das ist noch näher an C++ dran und gibts schon viel länger, und trotzdem hat das 0 Relevanz.



  • Es ist doch gut, wenn es nicht näher an C++ dran ist. C++ ist per Default unsafe, daran wird auch ein C++14 und später 17 nichts ändern. Du kannst nie sagen, dass der Code in C++ sicher ist. D kenne ich nicht.

    Es gibt doch bestimmt Bereiche wo Sicherheit wichtig ist. Rust kann dies garantieren. Wie gut das funktioniert, werden dann die neuen Firefox-Versionen mit Servo zeigen müssen. Die alte Engine Gecko, die ja in C++ geschrieben ist, ist schon einmal langsamer als Servo. Ein großer Teil der Unsicherheit von Gecko stammt daher, dass C++ keine sichere Speicherveraltung garantieren kann und diese Aussagen haben die wohl auch bewiesen. Also es ist sicher, dass viele Sicherheitslücken in Gecko nur deswegen existieren weil die Engine in C++ geschrieben ist.

    Der Erfolg von Rust wird mit Servo stehen oder fallen.

    Mir persönlich ist Rust zu schwer, aber auch C++ ist mir zu anstrengend. Ich liebe mein unsicheres Void-Pointer-Gehacke in C. Aber ich schreibe auch keine Sachen die irgendwer außer mir selbst nutzt, daher ist Sicherheit, OOP, Templates, 55 effective Tricks etc. bei mir nicht groß wichtig.


  • Mod

    Ich glaube, du legst zu viel Wert auf Buzzworte. "Sicherheit" ist ja ein schönes Konzept, aber diese Sicherheit ist ja auch irgendwie implementiert. Und diese Implementierung kann auch fehlerhaft oder unvollständig sein. Auf der tiefsten Ebene ist ein gängiger Computer eben immer noch eine in der üblichen Maschinensprache programmierte von-Neumann-Maschine und das ist inhärent nicht absolut sicher, egal wie viele Ebenen von virtuellen Maschinen man darüber hat.



  • Natürlich kann man in C++ speichersicher programmieren.



  • Gibt doch schon andere, etablierte Sprachen für sicherheitsrelevante Anwendungen. Angeblich wird Ada in vielen sicherheitskritischen Anwendungen eingesetzt. Keine Ahnung, hatte noch nie was mit Ada zu tun. Gibt auch tausende andere Sprachen, in denen es "sichere" Speicherverwaltung gibt, z.B. .NET oder Java oder wahrscheinlich alle Scriptsprachen. Der Vorteil von Rust hier wäre wohl, dass es sicher und schnell ist. Aber ein so wirklich herausragendes Merkmal ist es nicht. Man kann auch in C++ recht sicher programmieren, das ist schon viel sicherer als C, wenn man halbwegs vernünftig damit arbeitet.
    Ich glaube wie gesagt auch nicht, dass Sprachmerkmale für sicherheitsrelevante Anwendungen eine herausragende Rolle spielen werden. Ada ist beim Militär wahrscheinlich so beliebt, weil es die schon seit den 70ern gibt. Ich halte es für praktisch ausgeschlossen, dass da irgendjemand anfangen wird, irgendwas in einer so neuen und unausgereiften Sprache zu schreiben. Da wird man abwarten, bis die mindestens 20 Jahre auf dem Markt ist und die Compiler und die Tools auch ganz ganz sicher von sehr vielen anderen getestet wurden.
    Servo ist doch nur ein Prototyp. Es ist noch nicht geplant, das wirklich in Firefox zu integrieren. Natürich kann man eine schnellere und sicherere Engine als eine bestehende schreiben. Immer wenn man from scratch anfängt und sich mit dem Altsystem auskennt, kann man wahrscheinlich etwas besseres, ohne die ganzen Fehler und Fehlentscheidungen aufbauen. Das sagt noch nicht viel, schon gar nichts über die Programmiersprache. Auch das neue System wird irgendwann immer komplexer, langsamer und fehleranfälliger, wenn das in den Produktivbetrieb geht und immer wieder erweitert wird. Und es gibt genug Ideen, die man ausprobieren kann, eine Browserenginer schneller zu machen, das wird nicht daran liegen, dass die Programmiersprache schnelleren Code erzeugt.



  • Das ist der große Unterschied: Man KANN in C++ Speichersicher programmieren, man kann es aber NICHT garantieren. In Rust kann man es IMMER garantieren, außer halt in den unsage Blocks. C++ ist aus der Sicht von Rust ein einziger unsafe-Block. Menschen machen IMMER Fehler. Bei Rust hilft der Compiler, solche Fehler erst gar nicht aufkommen zu lassen.

    Der Rustcompiler ist selbst in Rust geschrieben und Speicherfehler sind da wirklich äußerst unwahrscheinlich. In C++ ist es sehr unwahrscheinlich ein C++ Programm zu schreiben das keine Speicherfehler enthält. Je komplexer das C++ Programm wird, desto mehr solcher Fehler werden sich einschleichen. In Rust ist es egal wie komplex oder groß das Projekt wird, oder wie firm die Leute in Punkto Speichersicherheit sind. Der Compiler lässt solche Fehler gar nicht erst zu und das ist der große Punkt.

    Javaprogramme sollen, so ich gelesen habe, auch nicht so 100% frei von Speicherlecks sein. Da habe ich aber zu wenig Ahnung von.

    C++ wird ja hier immer so verteidigt weil eben der Compiler so viele Fehler abfängt. Rust ist nun noch eine Tick schärfer und kann Dinge erkennen zu die ein C++ Compiler nie in der Lage sein kann.



  • In C++ ist es sehr unwahrscheinlich ein C++ Programm zu schreiben das keine Speicherfehler enthält. Je komplexer das C++ Programm wird, desto mehr solcher Fehler werden sich einschleichen. In Rust ist es egal wie komplex oder groß das Projekt wird, oder wie firm die Leute in Punkto Speichersicherheit sind. Der Compiler lässt solche Fehler gar nicht erst zu und das ist der große Punkt.

    Nein. Sowas ist, wenn man konsequent Smart-Pointer/RAII verwendet, ausgeschlossen.



  • Ja. Am besten Guidelines etablieren und ein Senior Dev macht einen Code Review. Fertig.



  • Rust ist nun noch eine Tick schärfer und kann Dinge erkennen zu die ein C++ Compiler nie in der Lage sein kann.

    An was denkst du da?



  • Jodocus schrieb:

    Nein. Sowas ist, wenn man konsequent Smart-Pointer/RAII verwendet, ausgeschlossen.

    Was ist mit dangling references, out of bounds und Race conditions?



  • Marthog schrieb:

    Jodocus schrieb:

    Nein. Sowas ist, wenn man konsequent Smart-Pointer/RAII verwendet, ausgeschlossen.

    Was ist mit dangling references, out of bounds und Race conditions?

    Dangling References lassen sich zb durch die Verwendung von shared_ptr vermeiden.
    Out of bounds mit boundchecks.
    Channels kannst du auch in C++ implementieren.



  • Gedankenexperiment:

    Hey Leute, ich habe eben angefangen, programmieren zu Lernen. Als Sprache habe ich mir dafür Rust ausgesucht, weil es so schön neu und hip ist. Gibt es irgendeinen Grund von Rust auf C umzusteigen?



  • Ja. Kein Mensch programmiert in Rust. Mit C steht dir die halbe Welt offen, mit Rust garnichts.



  • Oh, wenn das so ist, dann werd' ich wohl besser C lernen anstatt Rust. Vielen Dank, Ethon! 😉



  • 🙄 :p



  • Hey Leute, ich habe eben angefangen, programmieren zu Lernen. Als Sprache habe ich mir dafür C++ ausgesucht, weil es so schön neu und hip ist. Gibt es irgendeinen Grund von C++ auf C umzusteigen?


Anmelden zum Antworten