Mozilla präsentiert Programmiersprache Rust



  • Hallo,

    mal an die Profis hier im Forum. Was haltet ihr von der Sprache?

    http://www.heise.de/newsticker/meldung/Mozilla-praesentiert-Programmiersprache-Rust-1421145.html



  • Wurde bei mir auf Arbeit schon niedergebuht, weil ein bitterböser Garbage Collector dabei ist 🤡



  • hehe...verstehe^^



  • Syntaktisch gefällt mir das Ganze nicht so sehr. Keine Klammern um Abfragen und Schleifen finde ich schrecklich zu lesen. Der {} Zwang bietet mir auch keine Vorteile, wenn man ordentlich einrückt, ist immer klar was wozu gehört.

    Die Typen hinter Funktionen und Variablen zu schreiben finde ich auch nicht schön. Ist umständlicher, man braucht länger zum Lesen, und verbraucht sinnloserweise Keywords. Wo wir gerade bei Keywords sind. "fn" und "ret", argh, bitte ausschreiben. Versteht mich nicht falsch, ich mag das C++ auto, aber da wo man den Typ schreibt, doch bitte vor die Variable/Funktion.

    Die Typen finde ich dann wieder sehr angenehm. int, uint als "pointer-size", dann i8..i64, u8..u64, f32, f64, float als größter Gleitkommazahltyp, char ist 32 bit groß. Angenehm, nur ein "byte" oder so fehlt, aber dafür hat man wohl u/i8. string als nicht zusammengesetzter Typ tut mir allerdings immer noch weh.
    Literale sind ok.

    Dass die bit Operatoren stärker binden als die logischen, scheint mir auch gut. ++ und -- rausnehmen halte ich für Quatsch.
    printf mit Compiletime Fehlern sieht zwar nett aus, aber eigentlich würde man sich doch so etwas wünschen: printf("Hallo ", 42, ". Welt!\n");

    Das mit dem "alt" (alternative), statt switch, sieht zwar auch irgendwie nett aus, aber dass 1 | 2 plötzlich eine andere Bedeutung bekommt, sind wieder nicht so schön aus.

    Bei Schleifen heißt continue jetzt cont, die scheinen ja echt Angst vor langen Wörtern zu haben. Vielleicht sollten sie sich mal auf Hippopotomonstrosesquippedaliophobie hin untersuchen lassen. 🤡

    let i = if condition() { 5 }
            else if other_condition() { 77 }
            else { 8 }
    // Hm.. nett.. aber sieht das wirklich schöner aus als
    int i = condition() ? 5 : other_condition() ? 77 : 8;
    

    Na ja, das Tutorial geht noch wesentlich weiter, aber vom Hocker gehauen hat mich das noch nicht.



  • Ich finde Rust schaut sehr interessant aus. Es bietet ja sogar Haskell-ähnliche Typeclasses. Es gibt einen GC aber der ist nur optional. Multithreading wird über Messagepassing und nicht über Sharedstate implementiert. Das FFI scheint sehr gut zu sein. Mozilla will Rust ja wohl in

    maximAL schrieb:

    Wurde bei mir auf Arbeit schon niedergebuht, weil ein bitterböser Garbage Collector dabei ist 🤡

    Der ist optional.



  • rüdiger schrieb:

    maximAL schrieb:

    Wurde bei mir auf Arbeit schon niedergebuht, weil ein bitterböser Garbage Collector dabei ist 🤡

    Der ist optional.

    Aber allein die Verfügbarkeit verführt natürlich schon zur dunklen Seite der Macht.

    (Nein, das ist nicht meine Meinung 😉 )



  • Ähm, mit OOP ist da nicht viel, oder habe ich was übersehen?



  • Also ich finde, die Sprache ist ziemlich schön geworden. Vor allem der Sprachsupport für die 3 verschiedenen Zeigertypen ist nett. (Dennoch fehlt mir da der weak_ptr.)

    An OOP gibts leider recht wenig und vor allem vermisse ich Operatorüberladungen.

    Dass bei Kontrollstrukturen keine runden Klammern nötig sind, empfinde ich persönlich als Segen. Je weniger unnötige Zeichen, desto besser. Die Keywords finde ich zu kurz.

    Dass char 32 Bit groß ist, kann doch echt nur ein Witz sein. Totale Verschwendung von Bytes, noch schlimmer als in Java.

    Fehlende implizite Umwandlungen zwischen Integern und Floats sind bestimmt ziemlich nervig.

    Zusammenfassung: Ein paar sehr nette Ideen, aber nicht überzeugend genug.



  • 314159265358979 schrieb:

    Also ich finde, die Sprache ist ziemlich schön geworden.

    Klar, sieht ja auch fast aus wie deine Wunschsprache. 🤡



  • Bitte was? Ich habe keine Wunschsprache.



  • Gefällt mir nicht. Ich mag es nicht, wenn die Schlüsselwörter zwingend als solche geschrieben werden müssen, dann aber abgekürzt werden. fn , mod ?

    Was ich toll finde, ist der Umgang mit Objekten im Speicher. Nicht wie in Java (und Tausend anderen Sprachen), wo intern alles Pointer sind, sondern wie in C und C++, wo die Unterscheidung beim Programmierer liegt.

    use std;
    import std::io;
    
    fn main() {
        for i in [1, 2, 3] {
            io::println(#fmt("hello %d\n", i));
        }
    }
    


  • Hallo,

    mir persönlich gefällt der Ansatz sehr gut. Persönlich bin ich ein Fan von Scala (für Java / .NET Platform). Das Verschmelzen von Objekt-Orientierten und Funktional-Orientierten Ansätzen mag ich sehr gerne.
    Endlich gibt es auch eine Sprache, die einen native Code Compiler hat 🙂

    Das Abkürzen von Schlüsselwörter verstehe ich nicht. Aber egal, daran "gewöhnt" man sich.

    Aus der offiziellen Seite kann ich einiges nicht erkennen.
    http://www.rust-lang.org/

    • Es wird von "It supports a mixture of imperative procedural, concurrent actor, object-oriented and pure functional styles" gesprochen. Persönlich konnte ich nichts sehen, wass an object-oriented erinnert.
      Wie erzeugt man in rust eine Klasse mit Methoden?
    • Wie reserviert man einen Speicherbereich und gibt in wieder frei? Wie arbeitet der GC?


  • Deutliche Ähnlichkeiten mit der Sprache, die ich mir überlegt habe. oO
    Von daher gefällt sie mir. 😃



  • Wieder eine Sprache mehr auf der TODO-Liste ... Go oder Rust zuerst?



  • // A conditionally-compiled module
    #[cfg(target_os="linux")]
    mod bar {
      ...
    }
    

    Yipeeee ... sowas wollte ich immer schon, da ich versuche alles portabel zu schreiben, builtin- Support dafür ist schon immer mein Traum gewesen. Keine Präprozessor-Schlacht mehr ... Omg, muss es gleich heute ausprobieren. 😃



  • Dass char 32 Bit groß ist, kann doch echt nur ein Witz sein. Totale Verschwendung von Bytes, noch schlimmer als in Java.
    

    In C++ nutzt man auch 32bit ints zur Darstellung von beliebigen Zeichen (siehe char_traits etc). Strings in Rust werden per UTF8 kodiert, also wieder 8bit pro ASCII-Char.



  • Siassei schrieb:

    Hallo,

    mir persönlich gefällt der Ansatz sehr gut. Persönlich bin ich ein Fan von Scala (für Java / .NET Platform). Das Verschmelzen von Objekt-Orientierten und Funktional-Orientierten Ansätzen mag ich sehr gerne.
    Endlich gibt es auch eine Sprache, die einen native Code Compiler hat 🙂

    Na, da gab es aber schon lange OCaml für dich. Oder? Es unterstützt sowohl FP und OOP. Und es kann Bytecode und nativen Code erzeugen.

    Bisher hat mich von OCaml lediglich der miese Windows-Support abgeschreckt. Aber ich denke für Linux-Fans ist OCaml eine feine Sache.



  • Artchi schrieb:

    Na, da gab es aber schon lange OCaml für dich. Oder? Es unterstützt sowohl FP und OOP. Und es kann Bytecode und nativen Code erzeugen.

    Wobei den OOP Layer von OCaml wohl kaum einer benutzt. Als ich mir die Sprache vor Jahren mal angesehen hatte, wirkte der OOP-Aufsatz wie ein hässlicher Fremdkörper in der ansonsten ziemlich eleganten Sprache und wirklich funktional konnte man damit afair auch nicht mehr programmieren.



  • Ethon_ schrieb:

    Dass char 32 Bit groß ist, kann doch echt nur ein Witz sein. Totale Verschwendung von Bytes, noch schlimmer als in Java.
    

    In C++ nutzt man auch 32bit ints zur Darstellung von beliebigen Zeichen (siehe char_traits etc). Strings in Rust werden per UTF8 kodiert, also wieder 8bit pro ASCII-Char.

    In C++ habe ich aber char, char16_t, char32_t und wchar_t, also 4 verschiedene Typen, jeder für den jeweiligen Zeichentyp, den ich gerade haben möchte.



  • Bashar schrieb:

    Wieder eine Sprache mehr auf der TODO-Liste ... Go oder Rust zuerst?

    Persönlich halt ich mehr von Rust als von Go, daher - wem überrascht, ich rate zu - Rust.


Log in to reply