Von C zu Rust wechseln?



  • Ich habe bis jetzt nur in C und Java programmiert und bin gerade über die neue Programmiersprache Rust über Golem gestolpert. Kann ich in Rust auch so schnellen Code wie in C entwickeln? Hat jemand Erfahrung mit der Sprache und kann kurz etwas dazu sagen?



  • Ja kannst du. Hängt natürlich ab welche Features du verwendest.



  • Naja, ich programmiere so gut wie alles selbst und nutze nur selten externe Libs. Rust sah jetzt im Überflug erst einmal nicht schlecht aus und da ich mit meinen Libs in C noch nicht so weit bin, könnte ich auch wechseln. Aber Rust ist noch ziemlich Alpha oder? Was ja eigentlich egal ist, da ich eh nur für mich selbst programmiere, weil es halt Spaß macht. Zeit habe ich auch mehr als genug um was neues zu lernen, so 10 Stunden pro Tag für ca. ein Jahr könnte ich schon investieren.



  • Rust war bis vor kurzem sogar noch vor Alpha, die Alpha ist seit gestern oder so draußen, die Beta soll in 6 Wochen kommen.
    Rust soll typische Fehler in C und C++ vermeiden und hat einiges an Syntax-Sugar, aber ich persönlich mag die Sprache nicht so ganz.



  • Was gefällt dir an Rust nicht, wenn ich fragen darf?



  • fn foo ( bar : uint ) -> uint
    

    finde ich eher eine Verschlimmbesserung gegen

    unsigned foo( unsigned bar )
    

    ...



  • Das alles neu und anders ist, war ja zu erwarten und auch dass man erst einmal eine ganze Weile sich wie der ersten Mensch mit der ersten Programmiersprache vorkommt auch. Ein paar Wochen sollte man sich schon Zeit nehmen, um was neues kennen zu lernen. Das habe ich auch mit den unterschiedlichsten Sprachen und Betriebssystemen gemacht und jetzt weiß ich halt aus eigener Erfahrung das keine Sprache und kein OS wirklich zu 100% toll ist.

    Wie ist eigentlich so die Resonanz auf Rust in Entwicklerkreisen? Ich meine, ist ja nicht mal Final die Sprache und hat auch noch nicht mal einen deutschen Wikipedia-Eintrag. Aber mich würde trotzdem interessieren, ob da einige neugierig auf die Sprache geworden sind.



  • Bei meiner Recherche ist mit ein netter Artikel aufgefallen, über einen der Rust mal ausprobiert hat. Hier mal den Link und dann ein kleines Zitat aus der Quelle.
    http://lucumr.pocoo.org/2014/10/1/a-fresh-look-at-rust/

    The three languages where I do most of my work in are Python, C and C++. To C++ I have a very ambivalent relationship because I never quite know which part of the language I should use. C is straightforward because the language is tiny. C++ on the other hand has all of those features where you need to pick yourself a subset that you can use and it's almost guaranteed that someone else picks a different one. The worst part there is that you can get into really holy wars about what you should be doing. I have a huge hatred towards both the STL and boost and that has existed even before I worked in the games industry. However every time the topic comes up there is at least someone who tells me I'm wrong and don't understand the language.

    Ich bin irgendwie jetzt doch neugierig geworden, auch wenn ich nicht weiß ob Rust eine Chance hat oder nicht.



  • Was solls, ich fange mal einfach mit Rust an, habe ja nichts zu verlieren und jede Menge Freizeit. Mal bei einer Programmiersprache vom Anfang an dabei zu sein, hat doch auch was von einem Entdecker.

    $ rustc --version
    rustc 1.0.0-nightly (44a287e6e 2015-01-08 17:03:40 -0800)
    


  • Rustiger schrieb:

    Das alles neu und anders ist, war ja zu erwarten und auch dass man erst einmal eine ganze Weile sich wie der ersten Mensch mit der ersten Programmiersprache vorkommt auch.

    Diese Syntax ist nicht neu, wenn du darauf hinaus wolltest. Hat man alles schon gesehen. Nur muss man die nicht gut finden. Mir gefällt das auch nicht.



  • Witzig, dass ein C++ler sich über die Syntax ärgert 😃 Aber gut, dann haben wir einen Rust-Coder weniger^^



  • Warum ist das witzig? Die C++ ist Syntax ist doch eigentlich die "normalste". Wenn man von irgendwelchen komischen Konstrukten in C++ absieht, ist eine C-artige Syntax am weitesten verbreitet.
    Aber ich "ärgere" mich nicht drüber. Mich interessiert Rust aus anderen Gründen nicht, mit der Syntax könnte ich leben.



  • Ah, dann habe ich dich falsch verstanden. Was stört dich dann an Rust? Außer jetzt die Nachteile dass es neu ist und BestPractice, Community und Libs erst wachsen müssen, falls denn Rust gut ankommt, was ja noch keiner weiß. Beta ist ja im Februar und stable Release 1.0 dann im März 2015.



  • Mir gefällt die Syntax auch nicht sonderlich. Und die ganzen Abkürzungen sowohl in den Schlüsselwörtern als auch in der Standardbibliothek oder wie die bei Rust heißt nerven mich doch. Aber daran könnte ich mich vermutlich gewöhnen.
    Was mich genau an der Sprache stört kann ich schwer beschreiben. Es könnte z.T. daran liegen, dass sie wie eine Skriptsprache wirkt. Konstrukte wie enums als tagged-Unions sind zwar ungeheuer praktisch, aber mir irgendwie suspekt. Das ist zu abstrakt, zu High-Level für eine Systemsprache.
    Hauptsächlich ist es aber wohl eine Sache der Gewöhnung. Hätte ich Rust anstatt C++ gelernt, würde ich das nicht sagen und C++ wohl so wie C betrachten. Aber so bleibe ich lieber bei C++.



  • Rustiger schrieb:

    Außer jetzt die Nachteile dass es neu ist und BestPractice, Community und Libs erst wachsen müssen

    Das ist der Punkt. Ich mache das hauptberuflich. Das alles übt auf mich schon lange nicht mehr so eine Faszination aus, wie früher. Die Sprache mag interessant sein, aber eine interessante Sprache ist mir viel zu wenig. Ohne wirklich extrem gute Gründe werde ich mich nicht mit noch einer neuen Programmiersprache beschäftigen. Und die Wahrscheinlichkeit, dass die Sprache sich durchsetzt ist eben aus diesen Gründen sehr gering.
    Außerdem interessieren mich einfach "große" Projekte. Ich mag nicht in kleinen Firmen arbeiten, die an kleinen Projekten basteln. Ich will in sehr großer Software mit sehr vielen Komponenten rumwühlen. Sowas entsteht nicht von heut auf morgen und sowas entsteht selten von Grund auf neu. Das ist meist Software, die schon lang auf dem Markt ist. Und deswegen ist die wahrscheinlich in C++ geschrieben 😉



  • Rustiger schrieb:

    Wie ist eigentlich so die Resonanz auf Rust in Entwicklerkreisen?

    Ich kann nur für mich sprechen. Ich find's sehr interessant und ich verfolge das jetzt auch schon seit April 2014. Es gibt viele schöne Eigenschaften der Sprache.

    Aber es gibt auch noch genug Macken, die mir im Weg stehen. Z.B. verabschiedet sich der Compiler einfach mal, wenn man ihn bzgl generischer Programmierung zu stark fordert:

    trait T { type A: T; }
    fn main() {}
    

    lässt den Compiler in eine Endlosrekursion laufen, was kurz vor dem Überlauf zu einem Abbruch führt. Gut, das sind Bugs, die gefixt werden müssen. Also: Einfach ausprobieren und auf GitHub entsprechende Tickets dafür öffnen. Ich bin aber auch öfters an die Grenzen der Sprache selbst gestoßen. Da bin ich von C++ wahrscheinlich schon etwas verwöhnt. Die strengen "Kohärenzregeln" von Rust nerven jedenfalls. Ich finde das etwas peinlich, dass man

    x + 3.0
    

    wo der Typ von x benutzerdefiniertert ist, kompiliert bekommt, dagegen

    3.0 + x
    

    aber nicht.

    Was ich an Rust gut finde:

    • Die Move-Semantik macht einiges einfacher (flache Kopie der Bits => klappt immer auch ohne std::move_if_noexcept , moves sind destruktiv => man kommt komplett ohne Zombie-Zustand in der Invariante aus)
    • Die eingebauten Tupel- und Summentypen sind sehr praktisch.
    • das Pattern-Matching per match , if let , while let
    • die Lebenszeitparameter im Typsystem und der Borrow-Checker.
    • Der Compiler unterscheided zwischen versch. Typgattungen (Send, Sync) um damit z.B. Datenrennen und baumelnde Zeiger auch im Multithreading-Kontext ausschließen zu können.

    Da geht noch was. Ich werde das weiterhin verfolgen.



  • Na auf jeden Fall mal einer der da ein wenig am Ball bleiben will. Was die Sprache mir bringt werde ich ja auch erst sehen.

    @Mechanics:
    Ja, wenn man das "nur" vom beruflichen Aspekt sieht, dann kann ich dich gut verstehen. Meine Zeit als Berufsprogammierer ist vorbei und ich mache das nur noch als Hobby und da sind mit natürlich große Projekte, alter Code etc total egal. Als ich noch so etwas als Job gemacht hatte, da hatte ich aber auch kaum noch Lust privat was zu machen. Der Job hat fast meine ganze Freude an der Programmierung gekillt, was ich sehr schade fand. Alles musste immer Sinn ergeben und so weiter. Das ist jetzt zum Glück wieder anders und ich habe meine kindliche Neugier + viel Zeit wieder gewonnen.



  • Rustiger schrieb:

    Na auf jeden Fall mal einer der da ein wenig am Ball bleiben will. Was die Sprache mir bringt werde ich ja auch erst sehen.

    Haha! Wenn Du mehr von der Sorte haben willst, dann bist Du hier aber eher falsch. 🙂 Schau mal bei reddit vorbei. Ich häng’ da inzwischen öfters rum als hier.



  • Hey, danke für den Tipp. Ich bin schon fleißig am Links sammeln, Notizen machen und natürlich am Lernen und Ausprobieren.

    Ich habe dort gerade was von einem 151-byte static Linux binary in Rust gelesen. Es geht also wirklich ziemlich runter bis auf LowLevel in unsafe Blocks und wenn man will mit Assembler.
    Aber erst einmal muss ich mich an die neue Syntax gewöhnen, aber der Mensch ist ja ein Gewohnheitstier und meidet große Veränderungen, da muss man bewusst erst einmal gegensteuern und einfach machen, machen, machen. Wenn man flexibel genug ist und es liebt über den Tellerrand zu schauen, dann geht dass irgendwann ins Blut über und C und C++ sind dann fremd, altbacken und unnötig^^



  • Ich lese gerade die 30-min Intro für Rust und ist es wirklich so einfach in C++ ein SegFault zu bekommen ohne Warnung vom Compiler?

    #include<iostream>
    #include<vector>
    #include<string>
    
    int main() {
        std::vector<std::string> v;
        v.push_back("Hello");
        std::string& x = v[0];
        v.push_back("world");
        std::cout << x;
    }
    
    $ g++ hello.cpp -Wall -Werror
    $ ./a.out
    Segmentation fault (core dumped)
    

Log in to reply