Rust lernen, lohnt es sich?

  • was ist denn eigentlich der Vorteil einer Neuprogrammierung in Rust? Der C Code funktioniert doch seit Jahren, soweit ich weiß völlig Problemlos...

    Rust ist restriktiver, ohne dass dabei die Performance leidet. Die Resourcenverwaltung ist in Rust in die Sprache mit integriert und ist dort tief verwurzelt. Z.B. wenn in C eine Funktion einen Pointer zurückgibt, ist es nicht klar, was mit dem Pointer zu tun ist nachdem man den gebraucht hat. Wurde dafür Speicher alloziert? Wenn ja, wer muss es frei geben? Der Benutzer des Pointers, oder der Ersteller? In Rust ist die Verantwortung dagegen eindeutig definiert. Sowas wie doppelte Freigabe des Speichers oder Zugriff auf ungültigen Speicher sind in Rust nahezu unmöglich und das ist nur ein Beispiel. C und Rust sind wie zwei Kettensägen, die prinzipiell gleich gut schneiden, nur die zweite ist elektronisch gesichert, mit Autostopp Funktion und Sichtschutz, während die erste prinzipiell funktioniert, aber die Kette ist mit einem Stück Draht verbunden und der Benutzer sagt, dass er weiß, was er tut.

  • Mal ganz stumpf gefragt:

    Lohnt es sich Fe2O3 zu lernen? Ich kann nur marginalst programmieren und hatte vor auf Pascal zu lernen - ist aber eher ein altes Eisen.

  • i440bx (Disclaimer: Ich weiß nicht welche Programmierkenntnisse du hast)


    Pascal und Rust haben zwei völlig unterschiedliche Anwendungsgebiete. Würde also nicht sagen, dass du es "stattdessen" lernen solltest.


    Nun, grundsätzlich solltest du Rust lernen, denn momentan scheint die Sprache immer beliebter zu werden und in vielen aktuellen Projekten Verwendung zu finden. Selbst wenn die Sprache demnächst aussterben sollte (was derzeit nicht so aussieht), hast du Prinzipien der Programmierung gelernt, die auf andere C-Ähnliche Sprachen übertragbar sind.


    Für dein 186-Sysytem hingegen macht es wenig Sinn. Pascal ist relativ schnell und mächtig, war darum eine der beliebtesten Sprachen für DOS-Anwendungen und noch in den 2000ern unter Windows gängig, als ObjectPascal in seiner Inkarnation Delphi. Damit kann man viel anfangen. Ist aber heute nicht die Sprache der Wahl für Opensource-Projekte ;)


    Ansonsten … ich weiß nicht ob du C kannst? Mit C kannst du richtig viel Anfangen (oder kaputtmachen), sowohl auf 8bit-Maschinen als auch heute in der 64bit-Welt. Allerdings stellenweise sehr anspruchsvoll. Also nicht besonders gut als Einstieg, aber der Lohn ist umso größer und danach kannst du Rust quasi wie im Schlaf lernen.

  • Auch wenn hier völlig OT, es bleibt also dabei, wenn man nur eine Sprache lernen will und damit möglichst alles machen, dann C oder?

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • Die Programmiersprache Pascal war nicht das, was sie sein sollte. Herr Niklaus Wirth hat die als Lernsprache entwickelt, weil sie sehr einfach mit sog. LL(1) Parsern zu verarbeiten ist. Er hat geplant diese zu Lernzwecken zu verwenden. Doch da die Studenten sich dran gewöhnt hatten und weil man dafür eben sehr einfach Compiler schreiben konnte, hat die Sprache ein Eigenleben entwickelt. Doch die hat etliche Schwächen und wenn man zwischen C und Pascal entscheiden möchte, dann würde ich absolut klar und deutlich C empfehlen. Beide Sprachen sind imperativ, also ähnlich im Gedankengang, aber Pascal ist eher aus "ich verwende, was ich kenne" entstanden, auch gab es dafür damals mehr Tools, weil es eben eine LL(1) Sprache ist. C braucht einen sog. LALR Parser und ist deutlich schwieriger zu parsen, daher gab es anfänglich weniger Tools und man brauchte mehr Speicher um die Programme zu übersetzen. Aus heutiger Sicht völlig irrelevant, daher sollte man sich die Schwächen von Pascal nicht mehr antun. Was moderne Welt angeht, Rust entwickelt sich langsam zum Platzhirsch. Nicht nur ist es inzwischen im Linux Kernel verwendet, auch MS Windows 11 stellt jetzt Teile darauf um. Woher ich das ganze weiß? Meine Diplomarbeit war darüber und ich habe eine Zeit Lang im Institut für Programmiersprachen und Übersetzer unterrichtet.

  • Danke an H.EXE und scorp


    Ich kann vor allem Basic. Also Straightforward programmierung nach dem WYSIWYG. Entstanden vor allem aus der einfachheit, da es als VB in den Microdoof Tools integriert ist. Später habe ich mir dann eine LibertyBasic Lizens gekauft und nutzte es immer wieder doch mal für kleinere Rechenknechtaufgaben.


    Das mit Pascal passt soweit zu DOS weil mein AG es immernoch für unsere Maschinen einsetzt. Diese wurden in den 90ern auf DR-DOS bzw. FREEDOS betrieben - die ersten Maschinen hatten ein DualP90 Board wovon eine CPU im ProtectedMode für die Oberfläche und die zweite CPU im Realmode für die zeitkritschen Berechnungen lief. Daher die Idee zumindest dieses alte Pferd zu lernen.

    Mit C hatte ich mal Berührungspunkte aber da wurde nicht viel draus.


    Ich muss früher oder später mal was lernen - da kommt dieser Hint in Richtung Rost gerade richtig.

  • die ersten Maschinen hatten ein DualP90 Board wovon eine CPU im ProtectedMode lief für die Oberfläche und die zweite CPU im Realmode für die zeitkritschen Berechnungen lief.

    Dazu darfst du gerne mal einen Thread aufmachen das ist ja hoch interessant!


    Also ich habe vor Jahrzehnte mal einen Taschenrechner in Basic programmiert, in Pascal linien gezeichnet, und n C ein Hallo Welt Programm geschrieben.

    Und seit 25 Jahren träume ich davon in der Lotterie zu gewinnen um Zeit zu haben EINE! Sprache "richtig" zu lernen um damit "alles mögliche" zu machen, das wäre dann nach damaligen und heutigen Stand immernoch C. Ok dann fehlt nur noch der Lotto gewinn...

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • Wie er das gemacht hat weiß ich nicht.


    Was ich weiß ist, das x-DOS als Basis genutzt wurde um zu booten und um den Festspeicher zu bedienen. Das "Programm" der Maschine war dann ein eigenes "Betriebssystem" was die Resourcen für das Maschinenprogramm umgemodelt hat.


    Unter DOS war das wohl noch so möglich weil man dort die Hardware direkt ansprechen kann. Sprich ein Bit auf Adresse 0x?? senden oder abfragen und einer CPU die entsprechenden Bits rüber schieben um in den Realmode zu wechseln.

    Später bei Linux ging das nicht mehr so einfach n Kernel für P3/P4/Core zu schreiben der das kann. Da war aber auch die Rechenleistung um so vieles höher das eine CPU im ProtectedMode alles geschissen bekommen hat.

  • Viel wichtiger als die Wahl der Sprache finde ich, zu lernen wie man sauberen, lesbaren Code produziert.


    Man muss ja nicht gleich mit automatisiertem Testing und dergleichen übertreiben. Die viel wichtigere Frage ist: verstehe ich meinen eigenen Code in zwei Jahren noch?


    Also zusätzlich zur Sprache gern noch ein paar Clean Code Prinzipien ansehen und verinnerlichen (z.B. sprechende Namen, kurze Methoden, jede Methode/Klasse dient EINEM Zweck, usw. usf. ).


    Die Sprache ist nur ein Werkzeug. Was man draus macht, hängt von einem selbst ab.

  • Meiner "Erfahrung" und vorallem meiner heutigen Erinnerung nach war es so das man recht schnell an Limits einer Sprache kam( Ich gehe heute davon aus das lag an meinem Unvermögen!) Aber vor diesem Hintergrund erschien C als relativ "grenzenlos" im Gegensatz zu Pascal, allerdings war hier die Einstiegshürde größer und manche Tücke im Detail versteckt...

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • Das kommt ganz darauf an, was man als Limits definiert. Klar kann man nicht mit jeder Sprache alles machen, aber die Grenzen sind heutzutage weit weniger eng gesteckt als in den 90ern.


    Wer z.B. hätte vor einigen Jahren gedacht, dass Microsoft mal ein plattformübergreifendes (!) Framework auf die Beine stellt, das großen Anklang findet?

  • Bei neue Projekten würde ich Rust C(++) vorziehen. Gerade C++ ist ein einziges Chaos; historisch gewachsener Wildwuchs und mittlerweile viel zu kompliziert. Auch wenn ich viel mit C/C++ programmiert habe, mache ich kleiner Sachen in Python. Wenn es schnell sein soll in C und ansonsten halt C++. Systemnahes Zeug ist oft nicht anders als in C zu realisieren, oft noch mit angeflanschten inline Assembler, insbesondere im Kernel und bei Treibern. Wenn diese Teile durch Rust ersetzt werden, der dann viel "unmanaged" Code enthält, ist auch nicht viel gewonnen. Es ist auf jeden Fall eine spannende Entwicklung und ich würde mal behaupten, daß 99% der Leute keine der Hochsprachen wirklich beherrschen - muss man auch nicht. 30-50% reichen aus. Bei C(++) darf man nur eben keine Fehler machen und da sind Speicherleaks, Buffer-Overflows und Pointer eben das große Problem.


    An der Uni wurden wir mal gefragt, welche Sprache man zu erst lernen sollte. Die Mehrheit war für C(++), da diese einen zur Disziplin erziehe und man ausserdem so zwangsläufig die echten Abläufe hinter den Anweisungen lernen und verstehen würde. Also der Bereich, der bei Sugar-Coated Sprachen - wie Python - elegant ausgeblendet wird. Das würde ich wegen der steilen Lernkurve so nicht unterschreiben. Besser mit Python anfangen und die Konzepte lernen. Dann aber zeitnah zu Rust oder C (was Lernen angeht, für Projekte siehe Anfang). Wer mit Rust oder C zurechtkommt, kann auch alles andere.


    Ich bin von BASIC zu QBASIC, Pascal, Delphi, C, ADA95, Java irgendwann bei C++ angekommen. Später kam durch ein KI-Projekt erzwungen Python dazu (eigentlich hatte ich keine Lust auf ein weitere Sprache), deren Eleganz mir aber sehr gut gefallen hat. Evtl. kommt nun Rust dazu, wenngleich nur für kleinere Projekte. Mal schaun.

  • Auch wenn hier völlig OT, es bleibt also dabei, wenn man nur eine Sprache lernen will und damit möglichst alles machen, dann C oder?

    Hallo!


    Tja, das ist die uralte religiöse Frage :)


    Was verstehst Du im Detail unter "alles machen"?


    Jede(r) hat da ja so seine eigenen Ziele und Vorstellungen die man gerne in einem Programm abbilden will.


    Ich beispielsweise hab bis vor 2 Jahren privat viel in Java / C# programmiert, hab aber dann sämtliche Programmier-Aktivitäten vollständig nach DOS verlagert weil mir das viel mehr Spaß macht. Allein schon deswegen weil ich in bezug auf die hardwarenahe Programmierung völlig freie Hand habe. Vieles muß noch von Hand erledigt werden und das ist es was mich irgendwie reizt.


    Meine hauptsächlichen Themen bei der Programmierung sind:

    • Hardwarenahe Programmierung, z.B. direkte Programmierung der Grafikkarte
    • Systemprogrammierung (z.B. TSR-Programme)
    • Anwendungsprogrammierung, z.B. auf Basis von einer selbstgeschriebenen Fensterverwaltung

    Bis jetzt konnte ich alles wunderbar mit Turbo Pascal / Turbo Assembler abdecken. Klar könnt ich das alles genauso gut in C machen, aber Pascal gefällt mir irgendwie besser.


    Aber das spielt sich wie gesagt alles im DOS-Universum ab, in der modernen Welt spielen da ganz andere Kriterien bei der Wahl der Sprache mit rein.


    Die Diskussion ist jedoch wie Du schon geschrieben hast Off Topic, geht am Thema Rust vorbei und sollte daher in einen anderen Bereich verschoben werden.


    lg, Markus

    Einmal editiert, zuletzt von markusk ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!