1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Mozillas…

Vorteile?

  1. Thema

Neues Thema Ansicht wechseln


  1. Vorteile?

    Autor: pythoneer 16.07.15 - 09:53

    1. Ich war positiv überrascht einen etwas ausführlicheren Artikel über Rust, hier bei Golem, zu lesen.

    Was mich dann als Rust-User ein wenig gestört hat, waren – neben den schon vorhandenen Beispielen – die fehlende Erläuterung, was denn jetzt bei Rust besser sein soll als bei anderen. Ja ihr habt den borrow checker erklärt aber nicht gezeigt wozu er gut ist und warum er das macht was er macht.

    Viele die hier lesen werden sicherlich keine Programmierer sein und wenn doch vielleicht "nur" mit Java/C#/Javascript programmiert haben, wo es die Probleme aus C/C++ so gar nicht gibt wegen der Garbage-Collection.

    warum ist

    *int magic_number() {
     int k = 3;
     return &k;
    }

    ein Problem und warum löst Rust dieses. Was ist an multiple mutating alises schlecht und warum und wie löst Rust das um zur Kompilierzeit data races mit dem Typsystem zu verhindern.

    Ich gebe zu, für einen einleitenden Artikel ist das sicherlich schwer da nicht zu tief einzutauchen und damit die Leser abzuhängen. Ich persönlich wüsste jetzt, nach dem lesen, allerdings nicht was mir Rust jetzt nützen soll.

  2. Re: Vorteile?

    Autor: Baron Münchhausen. 16.07.15 - 10:19

    1. Siehe Autor
    2. Weil Daten/Zeiger geregelt Benutzt werden. Ein "jeder kann wild auf Dinge zugreifen, die Zwischenzeitlich verändert wurden" wird damit effektiv verhindert. Simpel ausgedruckt. Am besten versteht man das ganzheitlich wenn man sich die Dokumentation anschaut. Ist wirklich kein Teufel. Man sollte aber einige Grundkenntnisse, auch Begriffskenntnisse mitbringen, um die Tragweite der in der Dokumentation genannten Details zu verstehen. Nur so um ein simples Beispiel zu nennen: Es gibt immer noch recht viele, die sich Programmierer nennen, aber grundlegende - wichtige - Unterschiede, wie Expression/Statement nicht kennen. Vermutlich merken Sie beim Lesen nicht, dass bei guten Dokumentation exakt darauf geachtet wird zwischen beiden zu unterscheiden. Kennt man diese, erkennt man die Tragweite einer simpel gefassten aussage sofort. Das ist natürlich nur ein kleines Beispiel. Die Dokumentation ist super verständlich geschrieben, wenn man das o. G. mitbringt.



    5 mal bearbeitet, zuletzt am 16.07.15 10:26 durch Baron Münchhausen..

  3. Re: Vorteile?

    Autor: pythoneer 16.07.15 - 10:58

    Baron Münchhausen. schrieb:
    --------------------------------------------------------------------------------
    > 1. Siehe Autor

    Was ist mit dem ?

    > Man sollte aber einige Grundkenntnisse, auch Begriffskenntnisse mitbringen, um
    > die Tragweite der in der Dokumentation genannten Details zu verstehen. Nur
    > so um ein simples Beispiel zu nennen: Es gibt immer noch recht viele, die
    > sich Programmierer nennen, aber grundlegende - wichtige - Unterschiede, wie
    > Expression/Statement nicht kennen. Vermutlich merken Sie beim Lesen nicht,
    > dass bei guten Dokumentation exakt darauf geachtet wird zwischen beiden zu
    > unterscheiden. Kennt man diese, erkennt man die Tragweite einer simpel
    > gefassten aussage sofort. Das ist natürlich nur ein kleines Beispiel. Die
    > Dokumentation ist super verständlich geschrieben, wenn man das o. G.
    > mitbringt.

    Ja, die Doku ist, wie ich finde, für die kurze Zeit schon ziemlich gut. Rust hat aber ein "Problem" es hat eine ziemlich steile Lernkurve. Es ist ziemlich von Vorteil, wenn man schon mal c/c++ programmiert hat und weiß worauf man achten muss ( hierbei entschuldige ich gleich schon mal für meinen c Beispielcode .. war wohl noch etwas früh aber jetzt kann ich es nicht mehr korrigieren :D ) Wer bisher nur in Javascript programmiert hat, der sieht sich bei der ersten Übersetzung von Rust-Code vor schier unlösbaren aufgaben.

    Rust zwingt einen förmlich was man aus anderen Sprachen als 'best practice' kennt anzuwenden, sonst compiliert der Code einfach nicht. Das war eine ziemlich erhellende Erfahrung. Wie schnell läuft man unter Java in die Falle data races zu produzieren, wenn man sich einfach nicht richtig Gedanken drüber macht. Das Problem gibt es in Rust nun nicht mehr. Man muss sich zwar immer noch Gedanken machen aber vorher compiliert der Code halt einfach nicht. Viele würden das als "friktion" bezeichnen ... diese haben es halt vorher immer "falsch" gemacht. Rust zwingt einen halt 'gut' zu programmieren – das fällt vielen schwer :D

  4. Re: Vorteile?

    Autor: Trockenobst 16.07.15 - 12:30

    pythoneer schrieb:
    --------------------------------------------------------------------------------
    > es halt vorher immer "falsch" gemacht. Rust zwingt einen halt 'gut' zu
    > programmieren – das fällt vielen schwer :D

    Mein Problem ist eher zu verstehen: wie würde ich ein größeres Projekt schneiden, wo kommen die Traits hin, wo kommen die einzelnen Module hin, was wäre etwa bei ener Gui Anwendung, für eine Serveranwendung, etc. der "best case". Oder wie löst man dynamisch nachladbare Module (dll, so) unter Rust am Besten? Auch so Usecases wie: wie kann ich multiplattformmodule gut aufteilen kann man nur an weit verstreuten Beispielen "erlernen".

    Für eine neue Sprache kann man sich eben sehr verlaufen und man ist mehr oder weniger der erste der den Fehler in größeren Designs macht :D

  5. Re: Vorteile?

    Autor: Evrey 16.07.15 - 13:41

    Die Organisation eines Projekts ist eigentlich recht einfach, zumal Cargo und Rust eh' schon einen gewissen Programmierstil "aufzwingen" (den ich ganz hübsch finde). Da kannste dir auch einfach ein paar Cargo-Projekte, oder eben die Rust StdLib selbst anschauen.

    Ich kann jetzt nicht die best practices für alle genannten Fälle aus dem Hut zaubern, da ich selbst erst nur sehr langsam mit Rust anfange. Aber im Prinzip ist der erste Anlauf, zu schauen, welche Bibliotheken ich dafür in C++ oder C nutzen würde, und ob diese schon portiert wurden. Falls nein, greife ich mir eine Portierung einer stilistisch ähnlichen Bibliothek und nutze diese als Referenz, um dann selbst zu portieren.

    Das ist übrigens das momentan einzige Problem, das ich mit Rust habe: Die Sprache ist jung und ergo gibt es noch wenige Ports verschiedener Bibliotheken dafür. Ein großer Klotz am Bein ist diesbezüglich, dass Rust so garnichts mit C++ anfangen kann. D versteht immerhin die C++-VTable, aber das wars auch schon. Schön wäre ein Programm, das Wrapper für C/C++ Header generiert - Das ist ja durchaus möglich und für viele Sprachen gibts das zumindest schon für C. Mir fehlen momentan einfach viele Ports, um mit Rust produktiv zu arbeiten, sowie eine elegante Lösung, mit einer älteren C++-Basis zu kommunizieren.

    Die Shared Objects, bzw. DLLs würde ich übrigens in etwa so angehen, wie ich es bereits in C++ tue:
    Wenn du zur Laufzeit dynamisch eine DL laden willst, dann bastle dir ein `struct` mit einem DL-Handle als ersten Member. Als `impl` fügste die Schnittstellen deiner DL ein, die Funktionszeiger aufrufen. Und diese Funktionszeiger sind die restlichen Member des DL-`struct`s. Die Idee ist ganz einfach die, dass es anhand von RAII gewährleisten kann, dass kein Funktionszeiger der DL dessen Handle überleben kann. Zudem kann man so sehr elegant verschiedene DLs mit gleichem API laden (z.B. Plugins). Sollten gewisse DLs zusätzliche Funktionalität bieten, kannste das in C++ über Vererbung und in Rust über Komposition lösen.

  6. Re: Vorteile?

    Autor: Trockenobst 16.07.15 - 17:18

    Evrey schrieb:
    --------------------------------------------------------------------------------
    > das zumindest schon für C. Mir fehlen momentan einfach viele Ports, um mit
    > Rust produktiv zu arbeiten, sowie eine elegante Lösung, mit einer älteren
    > C++-Basis zu kommunizieren.

    Diese Probleme hat ja auch D, und im selben Maße ja auch Swift (ObjectiveC).
    http://stackoverflow.com/questions/24042774/can-i-mix-swift-with-c-like-the-objective-c-mm-files

    Noch habe ich keine Zeit dazu, aber ich würde gerne sowas wie rust-sdl2 besser unterstützen (bis man dahin kommt gar kein c-sdl mehr zu brauchen :D)

    Für größere Projekte wie 3d-Engines sehe ich einen lightweight C++ Layer der mit Rust kommunziert als einzige Chance. Das könnte man, solange man das mangling der Funktionen versteht, auch recht einfach umsetzen.

    C++ und Rust sind jedoch einfach zu verschieden um langlangfristig wirklich Co-Zuexistieren.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. InEK GmbH, Siegburg
  2. ADMIRAL Sportwetten GmbH, Rellingen
  3. Adecco Personaldienstleistungen GmbH, München
  4. i-SOLUTIONS Health GmbH, Bochum, Mannheim, Düsseldorf, Magdeburg, Chemnitz (Home-Office)

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. (u. a. Destiny 2 - Beyond Light + Saison für 33,99€, Call of Duty : Black Ops Cold War - Cross...
  2. (u. a. Bosch Professional, Monitore, Gaming-Chairs & Samsung-Fernseher zu Bestpreisen)
  3. (u. a. Robas Lund DX Racer 5 für 169,74€, Nitro Conceps S300 186,90€)
  4. (u. a. Samsung 970 Evo PCIe-SSD 1TB für 98,45€, Logitech G502 Hero Gaming-Maus für 34,12€)


Haben wir etwas übersehen?

E-Mail an news@golem.de


  1. EU warnt: Phishing mit Coronahilfen trifft vor allem T-Online-Nutzer
    EU warnt
    Phishing mit Coronahilfen trifft vor allem T-Online-Nutzer

    Die Betrüger fälschen die E-Mail-Absender und geben sich als EU-Mitarbeiter aus. Die EU-Kommission kritisiert mangelnden Schutz bei der Telekom.

  2. Konsole: Sony verbaut in PS5 mindestens drei Lüftermodelle
    Konsole
    Sony verbaut in PS5 mindestens drei Lüftermodelle

    Die eigene Playstation 5 ist flüsterleise - und trotzdem gibt's im Netz das Gejammer über den Geräuschpegel? Dafür könnte es Gründe geben.

  3. Großbritannien: Huawei-Bann kostet Steuerzahler 280 Millionen Euro
    Großbritannien
    Huawei-Bann kostet Steuerzahler 280 Millionen Euro

    Die britische Regierung will nach dem Ausschluss von Huawei ab 2027 den Wettbewerb wiederherstellen. Die Kosten der Netzbetreiber sind erheblich höher als 280 Millionen Euro.


  1. 18:50

  2. 18:38

  3. 17:55

  4. 17:00

  5. 16:38

  6. 16:12

  7. 15:53

  8. 15:31