© Stmool/Shutterstock.com
Kolumne: Stropek as a Service

Coding Detox mit Go: Go als interessante Alternative zu C# für Microservice-Entwicklung?


Ich schreibe Code in C# seit den ersten Technical-Preview-Versionen dieser Sprache. Als jemand, der das Programmieren mit C und C++ gelernt hat, hat mich C# vom ersten Moment an fasziniert. Die Sprache war ähnlich genug zu C++, dass das Erlernen relativ schnell ging. Garbage Collection hat mich von einer Menge Arbeit und Fehlerquellen befreit. Der C#-Compiler war von Anfang an robust und schnell. Die Grammatik und Funktionen von C# waren einfach zu schreiben und zu lesen.

Speziell der letzte Punkt hat sich im Lauf der Jahre verändert. C# ist heute eine mächtige Sprache geworden, die Lösungen für eine breite Palette an Herausforderungen in der Softwareentwicklung enthält (z. B. asynchrone Programmierung, Generics, parallele Programmierung, in die Sprache integrierte Query Language). Für viele Themen stehen sogar mehrere Ansätze zur Verfügung (z. B. Reactive Extensions [1] vs. async/await für asynchrone Programmierung, unterschiedliche LINQ-Schreibweisen), aus denen Entwicklungsteams wählen können.

Die Programmiersprache C# wird durch eine Vielzahl von Tools ergänzt. Exemplarisch erwähnen möchte ich die vielen Code-Analyzer (aka Roslyn Analyzer [2]), die es von Microsoft und Drittanbietern gibt. Sie analysieren den C#-Quellcode und weisen auf Probleme beim Programmierstil, bei der Wartbarkeit, Sicherheit etc. hin. Jedes Entwicklungsteam kann die jeweils passenden Analyzer wählen und die von ihnen geprüften Regeln feingranular einstellen, damit auf die Wünsche des Teams Rücksicht genommen wird.

Komplexität durch Vielfalt

C# ist heute eine funktionsreiche, hochgradig anpassbare Plattform. Darin liegt aber gleichzeitig eine Schwierigkeit. C# ist nicht gleich C#. Der Code, den ein Team schreibt, sieht vielleicht ganz anders aus als der Code, den ein anderes Team entwickelt. Außerdem hat C# im Lauf der Jahre so viele Tricks gelernt, dass es relativ leicht ist, Overly Smart Code zu schreiben, durch den ein Teammitglied zwar tiefgehendes C#-Wissen beweist, der aber schwer zu verstehen und zu warten ist. Als Gegenmaßnahme werden nicht selten endlos viele Besprechungsstunden in die Entwicklung von Designrichtlinien, Codeanalysetools, IDE-Erweiterungen etc. investiert, um Einheitlichkeit und dadurch bessere Wartbarkeit sicherzustellen.

Historisch gewachsen

Wenn man seit Jahren nur mit C# entwickelt, nimmt man viele Dinge aus Gewohnheit in Kauf, die man in einer neuen, auf Microservices and Cloud-Computing spezialisierten Plattform nicht mehr so machen würde. Ein Beispiel sind Assemblies, also DLLs und EXEs. Sie enthalten im Normalfall Intermediate-Language-(IL-)Code , der zur Laufzeit vom Just-in-Time-(JiT-)Compiler in ausführbaren Maschinencode übersetzt wird.

Durch Zerteilen einer Anwendung in Assemblies erhält man Programmteile, die theoretisch unabhängig voneinander installiert, aktualisiert, versioniert, mit Berechtigungen versehen etc. werden können. In den Anfangszeiten von C# war diese Aufteilung wichtig, da große, monolithische Softwarelös...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang