· Exploration · 3 min read
Rust: Mein eleganter Umweg zu C++
Warum ich mit dem Borrow Checker starte, um mich langsam an C++ heranzutasten.

C++
Wachst du auch manchmal mitten in der Nacht schweißgebadet auf, weil eine dunkle Stimme dir im Traum gesagt hat, “du bist kein echter Softwareentwickler und du wirst nie einer sein und weißt du warum? Weil du kein C++ kannst? (lautes, übertrieben langes höhnisches Lachen, langsam leiser werdend)”
Nein? Ich auch nicht. ;-)
Trotzdem habe ich immer wieder das leise Gefühl, dass ich mich mit C++ auskennen müsste, wenn ich mich selber als Softwareentwickler wirklich ernst nehmen will.
Der Computer wäre dann nicht mehr eine für mich als Java- und TypeScript Entwickler unverständliche und unkontrollierbare Blackbox, die meinen Code ausführt und meinen Müll einsammelt. Sondern ich würde den Computer wirklich verstehen und kontrollieren bis zum letzten Byte und Bit.
Die Plattformen, auf denen ich mich beruflich bewege (Browser, Nodejs, Java) sind großteils in C++ implementiert, und es könnte nützlich und interessant sein zu wissen, was unter der Haube passiert.
Die Beschäftigung mit einer Sprache wie C++, in der es keine automatische Garbage Collection gibt, könnte mir Dinge bewusst machen, die helfen um auch in Java oder TypeScript unnötig viel Müllerzeugung zu vermeiden.
Es gibt also genug Motivationen, aber bisher habe ich jeden meiner zaghaften Versuche bald wieder abgebrochen. Das liegt vielleicht daran, dass ich die Sprache in meiner aktuellen Web-Entwicklungsarbeit nicht wirklich anwenden kann. Hinzu kommt, dass alles zu ungewohnt ist: Die Notwendigkeit, Header-Dateien zu verwalten, das Tooling wirkt älter, und vor allem das fehlende moderne Package Management machen den Einstieg mühsam.
Rust
Rust hat mich schon immer interessiert, weil es dort eben keinen Garbage Collector gibt. Stattdessen nutzt Rust sein Ownership-System und den Borrow Checker, um Speichersicherheit zur Compile-Zeit zu garantieren.
Ich denke, dass ein Bewusstsein über Müllerzeugung und Vermeidung generell beim Programmieren hilfreich ist. (Müll ist eigentlich generell ein wichtiges Thema ;-))
Aber das Tooling, der Package Manager, auch die Syntax, schauen für mich vertrauter aus als bei C++.
Und es gibt Web Frameworks, das heißt ich kann mit einem Thema, dass mir thematisch vertraut ist, in die Rust Entwicklung einsteigen.
Die Möglichkeit, Rust nach WebAssembly zu compilieren, war für mich die letzte notwendige Motivation, den RustRover anzustarten. Das konnte ich direkt für die Entwicklung von Browser Games brauchen, wo Performance eine große Rolle spielt.
Die Reichweite von Rust (Desktop, Embedded Systems, Mikrocontroller, der Linux Kernel, usw.) und die Vorstellung (die ich schon länger mit mir herumtrage), einen autonomen Roboter zu programmieren, war eine zusätzliche Motivation.
Zudem steht Rust seit Jahren an der Spitze der beliebtesten Programmiersprachen im Stack Overflow Ranking – das Wissen, eine starke, wachsende Community hinter sich zu haben, ist für einen Anfänger Gold wert.
C++
Eine kleine winzige “Hidden Agenda” ist es, dass ich hoffe über die Beschäftigung mit Rust den Grad der Erleuchtung zu erreichen, er mir einen Zugang zu C++ ermöglicht. Klingt das komisch?
Da ich schon etwas älter bin und die Lernkurve von Rust ohnehin sehr steil ist, wird das aber eine Zeit lang dauern. Und das absurde ist, ich bin froh darüber, dass es noch dauern wird, bis ich mich mit C++ befassen muss.
Wer weiß, vielleicht ist es auch erst in der Pension soweit. Und ich merke dann wie genial und Produktivitätssteigernd diese Sprache ist, und mache mit ein paar anderen “Senior Devs” im Seniorenheim eine Game Programming Bude auf. Ja, das klingt nach einem Plan.
Und wenn dann irgendwann in ferner Zukunft meine UrUrEnkel mich am Sterbebett fragen, “was hättest du gerne anders gemacht?” Dann werde ich vielleicht mit schwacher Stimme antworten, “Ich wünschte ich hätte früher mit C++ beg…“.




