Von C zu Rust wechseln?



  • VitC schrieb:

    trotzdem habe ich große Schwierigkeiten mich an die neuen Sprach-Konzepte zu gewöhnen.

    Das ist überhaupt ein guter Grund, sich andere Sprachen anzugucken. Es gibt da ein empfehlenswertes Buch, "7 Sprachen in 7 Wochen", wo man einen Querschnitt durch die Programmiersprachenlandschaft kennenlernt. Die Idee ist, dass das einen zu einem besseren Programmierer macht, unabhängig davon, mit wievielen Sprachen man dann hinterher wirklich noch arbeitet.

    Wenn Du aber vor hast, Rust-Code zu schreiben, der voller unsafe-Blöcke ist, dann ist das nicht im Sinne der Übung. Es geht ja darum, diese Sprachen richtig zu lernen und nicht „1:1 Übersetzungen“ von der „Ausdrucksweise“ zu machen, die man schon kennt. Wenn Du C++ Programme so schreibst, als wäre es C, hast Du nichts von C++. In C++ kannst du z.B. Gebrauch von RAII machen. Das ist 'ne tolle Sache. Wenn Du Rust Programme schreibst, als wäre es C, hast Du nichts von Rust. Neben den anderen netten Features hast Du in Rust quasi die „Weiterentwicklung“ von RAII, die es zulässt, das Ausleihen von Dingen, die einem anderen Objekt gehören, im Typsystem darzustellen, so dass der Compiler das auch checken kann. Solche Gedanken, wer was besitzt bzw für etwas zuständig ist, und welcher Teil des Programms sich nur etwas „ausgeliehen“ hat, muss man sich so oder so in C und C++ machen. Rust erlaubt es dir, das mit Hilfe des Typsystems auszudrücken. Und wenn der Groschen gefallen ist und man verstanden hat, wie das funktioniert, ist es unter'm Strich nicht wirklich schwieriger, Programme in Rust zu schreiben, als sonst.

    Also, das Borrowing/Lifetime Ding in Rust ist nicht wirklich das Problem. Das, was mich wie gesagt an Rust im Moment stört, sind die restriktiven "Trait Kohärenz"-Regeln, die einen z.B. bei der Operatorüberladung einschränken. Aber das Problem ist bekannt und man arbeitet dran. Ich hoffe, das bessert sich noch…



  • Wisst ihr was, ich werde Rust noch eine Chance geben. So einen Fortschritt sollte man schon unterstützen, auch wenn es noch nicht perfekt ist. Immerhin sind wir gerade mal bei Version 1.0. Wie viele unsafe Blöcke dann da raus kommen weiß ich nicht, mal sehen. Ich will schon versuchen die Sprache so zu nutzen, wie sie gedacht ist und wenn der Compiler mir bei vielen Fehlern hilft, ist das doch toll. Solange ich auch mit den Meldungen was anfangen kann. Operatorüberladungen sind mir jetzt nicht sooo wichtig, bin ich eh von C nicht gewöhnt.

    Schlimmer als C++ kann es nicht werden 😃



  • VitC schrieb:

    Operatorüberladungen sind mir jetzt nicht sooo wichtig, bin ich eh von C nicht gewöhnt.

    Schlimmer als C++ kann es nicht werden 😃

    Ich glaube, als C programmierer kommt man mit Rust ganz gut zurecht, denn gerade Dinge wie ressourcen- und freigabeorientierte Programmstruktur, keine richtige Ueberladung, Vermeidung von Type Erasure, moeglichst explizite programmierung kennt man schon. Schwierig haben es dagegen wohl Java- und C# programmierer, denn gerade dabei wird die Ressourcenverwaltung ignoriert und Type erasure sehr stark verwendet.



  • Ein Weg Funktionsüberladung zu realisieren ist wohl der hier, so wird es wohl auch in der stdlib gemacht.

    struct Foo {
      value:uint
    }
    
    trait HasUIntValue {
      fn as_uint(self) -> uint;
    }
    
    impl Foo {
      fn add<T:HasUIntValue>(&mut self, value:T) {
        self.value += value.as_uint();
      }
    }
    
    impl HasUIntValue for int {
      fn as_uint(self) -> uint {
        return self as uint;
      }
    }
    
    impl HasUIntValue for f64 {
      fn as_uint(self) -> uint {
        return self as uint;
      }
    }
    
    #[test]
    fn test_add_with_int()
    {
      let mut x = Foo { value: 10 };
      x.add(10i);
      assert!(x.value == 20);
    }
    
    #[test]
    fn test_add_with_float()
    {
      let mut x = Foo { value: 10 };
      x.add(10.0f64);
      assert!(x.value == 20);
    }
    

    P.S.: Wo ist das Rust-Forum hier und wo sind die Rust Code-Tags?
    Wer mal ein wenig mitreden will, der findet dafür bei http://www.reddit.com/r/rust einen Platz. Oder auch in den IRC-Channels auf irc.mozilla.org
    #rust (general questions)
    #rust-internals (compiler dev)
    #cargo (the package manager)
    #servo (web browser dev)
    #rust-gamedev (vidja games)
    #rust-osdev (operating systems)
    #rust-webdev (web all the things)
    #rust-apidesign (beautiful APIs)
    #rust-community( Berliner Meeting Group)

    Hier noch ein paar Links:
    https://github.com/rust-lang/rust/wiki/Rust-for-CXX-programmers
    http://ruudvanasseldonk.com/2014/08/10/writing-a-path-tracer-in-rust-part-1
    https://siciarz.net/24-days-of-rust-conclusion/



  • Warum sollte es hier Rust Tags und Forum geben? Die Sprache ist komplett irrelevant. Da schon eher Python oä
    Gibt es überhaupt eine brauchbare IDE für Rust? Irgendwelche Tools außer dem Compiler?



  • Ethon schrieb:

    Warum sollte es hier Rust Tags und Forum geben? Die Sprache ist komplett irrelevant. Da schon eher Python oä
    Gibt es überhaupt eine brauchbare IDE für Rust? Irgendwelche Tools außer dem Compiler?

    Ein extra Unterforum für Python und Haskell wäre keine schlechte Idee.



  • Ethon schrieb:

    Warum sollte es hier Rust Tags und Forum geben? Die Sprache ist komplett irrelevant. Da schon eher Python oä
    Gibt es überhaupt eine brauchbare IDE für Rust? Irgendwelche Tools außer dem Compiler?

    Was hast du gegen eine sichere Systemsprache ohne aufgezwungenen GC? Hast du dir schon mal den Paketmanager cargo angeschaut, wo man gleich libs mit erzeugen kann, Abhängigkeit werden aufgelöst und fehlende Libs werden gleich runtergeladen, Git-Unterstützung, Projekterzeugung, UnitTests etc. mit drin hat? Für Sublime gibt es Syntaxhighlightning und Buildautomatik. Ja und mehr folgt dann mit Sicherheit wenn die Sprache im April das erste mal wirklich das Licht der Welt erblickt.

    Die halbe IT-Menschheit wird dann jeden Tag ein Rust-Projekt nutzen, nähmlch die neue Browserengine Servo von Mozilla, wofür Rust einst entworfen wurde.

    Rust wird dann als erste Sprache für sehr performante und gleichzeitig sichere Software gut sein. Das gibt es bis jetzt noch nicht.



  • Erste Benchmarks von Servo zeigen eine im Vergleich zu Gecko deutlich kürzere Renderingzeit.

    und die Sprache ist noch nicht mal fertig.



  • Ich habe nichts gegen die Sprache aber sie ist aktuell null relevant. Kein Unternehmen außer vlt Mozilla würde aktuell damit arbeiten und ich bezweifle es auch in der Zukunft. Anwendungen werden in Java oder C# geschrieben, Lowlevel Kram in C bzw C++. Fertig.



  • Pff...wir werden sehen.



  • Wenn sich in der Zukunft jemand dafür interessiert dann ist das gut.
    Habe nur auf den Vorschlag geantwortet hier ein Unterforum und Tags für eine Sprache einzurichten die erst als Alpha existiert und noch keine rosige Zukunft hat.
    Da gibt es wie gesagt andere Sprachen die doch deutlich wichtiger sind.



  • Ethon schrieb:

    Wenn sich in der Zukunft jemand dafür interessiert dann ist das gut.
    Habe nur auf den Vorschlag geantwortet hier ein Unterforum und Tags für eine Sprache einzurichten die erst als Alpha existiert und noch keine rosige Zukunft hat.
    Da gibt es wie gesagt andere Sprachen die doch deutlich wichtiger sind.

    Firefoxs zukünftige Renderengine finde ich schon wichtig. Was gibt denn wichtigeres von Python oder Haskell? Das eine ist eine Scriptsprache wie jede andere, das andere eine Funktionssammlung für Wissenschaftler. Ich finde Rust ist seit langem mal wieder etwas richtig interessantes und bald werden sehr viele Menschen die erste wirklich anspruchsvolle Rust-Software testen können, wenn Servo fertig ist.

    Klar kann ich mich irren und Rust wird kein Kracher...wir werden sehen.



  • Rust hat jetzt über 8.000.000.000.000 Abbonenten bei reddit...wir werden sehen 😃



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


Anmelden zum Antworten