Coding Praxis Go & Node.js

Go als weitere Programmiersprache

Go als weitere Programmiersprache

Irgendwann in deiner Karriere als Entwickler:in kommst du an den Punkt, an dem du eine weitere Programmiersprache lernen und anwenden willst. Das Angebot an unterschiedlichen Sprachen ist sehr umfangreich und vielfältig.

Meine Entscheidung für die nächste Programmiersprache ist mir zuerst nicht einfach gefallen. Deshalb hatte ich mich mit anderen Entwickler:innen ausgetauscht, um deren Favoriten zu erfahren. Zudem wollte ich mehr über die technischen Hintergründe wissen.

Darüber hinaus wollte ich die Sprache auch beruflich anwenden können und nicht nur privat. So bin ich letztendlich bei Go beziehungsweise Golang gelandet und bin sehr zufrieden mit dieser Entscheidung. 

In dem heutigen Artikel erhältst du einen Überblick über Go, mit folgenden Schwerpunkten:

Was ist das Ziel von Go?

Vielleicht ist dir bereits bekannt, dass Go von drei Entwicklern bei Google entworfen wurde. Die Programmiersprache sollte effektiv für die Erstellung von zuverlässigen und robusten Programmen sein.

Die Syntax und Anordnung ähnelt stark der Programmiersprache C. Zusätzlich werden aus anderen Sprachen gute Ideen übernommen und Features vermieden, die dort zu Komplexität und unzuverlässigem Code geführt haben. 

Einer der Hauptgedanken für Go war, mit minimalen Mitteln ein Maximum an Wirkung zu erzielen.

Mittlerweile hat Google Go der Öffentlichkeit zur Verfügung gestellt. Dadurch konnte die Weiterentwicklung der Sprache von einer Open Source Community übernommen werden.

Wofür wird Go genutzt?

Stell dir Go als eine echte Allzwecksprache vor, die in unterschiedlichen Bereichen Anwendung findet. Interessante und wichtige Beispiele sind hier Machine Learning, mobile Anwendungen, skalierbare Netzwerkdienste und Cloud Computing.

Wie du merkst, ist Go damit ideal für die Webentwicklung geeignet.

Was zeichnet Go aus?

Es gibt viele Vorteile, die für Go sprechen. Hier gebe ich dir einen Überblick über vier dieser Vorteile:

Einfachheit

Wenn du dich mit Go beschäftigst, wirst du die Einfachheit in der Syntax feststellen. 

Go versucht sich auf das wesentliche zu konzentrieren und verzichtet auf überflüssige Ausführungen in der Syntax. Dies ist einer der Gründe, weshalb der Einsteig in Go für erfahrene Entwickler:innen relativ einfach ist.

Compilersprache

Damit dein geschriebener Code ausgeführt werden kann, muss er in Maschinensprache umgewandelt werden. Dies geschieht entweder durch einen Compiler, einen Interpreter oder einen Just-in-time-Compiler.

Compiler und Interpreter

Der Compiler liest zuerst den kompletten Code ein und übersetzt ihn danach. In Bereichen in denen der Maschinencode schnell gelesen werden muss, werden Compilersprachen eingesetzt. Das ist zum Beispiel im Bereich Spracherkennung, KI oder AR der Fall.

Der Interpreter verarbeiten den Code zur Laufzeit, in dem er ihn Zeile für Zeile liest und sofort ausführt. Es findet keine wirkliche Übersetzung in Maschinensprache statt. Stattdessen wird jede Anweisung im Code live und einzeln verarbeitet. 

Der Just-in-time-Compiler ist ein Hybrid zwischen Compiler und Interpreter.

Go als Compilersprache

In der Regel sind Compilersprachen deutlich performanter als Sprachen, die einen Interpreter nutzen.

Bei Go handelt es sich um eine Compilersprache, was erhebliche Vorteile bei der Geschwindigkeit mit sich bringt. Der Quellcode wird einmal beim Ausführen in Maschinensprache kompiliert und liegt direkt in der Ganzheit vor.

Garbage Collection

Unter Garbage Collection kannst du dir die Bereinigung von belegtem und nicht mehr benötigtem Speicherplatz vorstellen.

Speicherplatz wird etwa reserviert, um vorübergehend Variablen oder Datenobjekte zu speichern. Sobald die Programmausführung abgeschlossen ist, sollte dieser Speicherplatz wieder freigegeben werden, damit er anderweitig genutzt werden kann.

Geschieht dies nicht, lässt sich der Speicherplatz nicht mehr verwenden. Es entstehen Speicherlecks und stark fragmentierte Speicherbereiche.

Um als Entwickler:in die Speicherbereinigung nicht manuell durchführen zu müssen, dient dir die Garbage Collection.

Je nach Programmiersprache und Laufzeitumgebung ist die Garbage Collection bereits integriert. Ansonsten gibt es auch fertige Bibliotheken, die du nutzen kannst, um Speicherbereinigung durchführen zu können.

Go Garbage Collector

Go besitzt einen integrierten Garbage Collector. Damit das Programm zur Bereinigung nicht während der Ausführung gestoppt werden muss, ist der Go Garbage Collector nebenläufig, also concurrent. Mehr zu Concurrency erfährst du im nächsten Punkt.

Concurrency

Concurrency beziehungsweise Nebenläufigkeit kannst du dir so vorstellen, dass mehrere Prozesse gleichzeitig und unabhängig voneinander erledigt werden.

Prozesse und Threads

Ein Prozess liegt dann vor, wenn es sich um eine Sammlung von Code, Speicher, Daten oder anderen Ressourcen handelt. Im einfachsten Sinne ist ein Prozess ein ausführendes Programm. Laufen mehrere Prozesse gleichzeitig, teilen sie sich die Ressourcen des Computers.

Eine Entität eines Prozess ist der sogenannte Thread. Ein Thread ist eine Codesequenz, die im Rahmen eines Prozesses ausgeführt wird. Ein Thread kann nur eine Aufgabe auf einmal erledigen.

In einem Prozess können jedoch mehrere Threads gleichzeitig zur Anwendung kommen.

Go Routinen

Willst du Concurrency in Go erreichen, kannst du die Go-Routinen verwenden.

Go-Routinen sind ein effizientes Tool, um Speicher und CPU zu sparen. Hierbei werden unterschiedliche Threads gleichzeitig genutzt, um die Anweisungen des Programms auszuführen.

Channels und Scheduler

Zur Kommunikation zwischen mehreren Go-Routinen, werden Channels eingesetzt.

Für die Koordination der Go-Routinen, dient der Scheduler. Dieser gibt an, was wann auf welchem Thread ausgeführt wird.

Zusammenfassend kannst du dir mitnehmen, dass die Go-Runtime die Anweisungen des Programms auf mehrere Threads und somit CPU-Kerne verteilt. Rechner mit mehreren Kernen sind demzufolge besser ausgelastet.

Concurrency ist damit einer der Hauptgründe, weshalb Go so schnell ist.

Go Tutorials: So kannst du die Programmiersprache lernen

Wenn du mit Go starten willst, gibt es mehrere Möglichkeiten.

Go Playground

Du kannst Go entweder direkt auf deinem Rechner installieren oder du nutzt erstmal den Go Playground. Hier kannst du die Sprache online auszuprobieren, ohne ein lokales Setup einrichten zu müssen.

Neben dem Hello World Beispiel findest du unterschiedliche Code Snippets, wie etwa für einen HTTP Server. Klicke hierfür auf das Dropdown Menü in der rechten oberen Ecke und wähle aus, was dich interessiert.

Die Beispiele im Go Playground kannst du anpassen, ausspielen lassen und dort sogar komplett eigenen Code schreiben.

Go by example

Auf der Seite go by example findest du eine praxisnahe Einführung in Go mit kommentierten Beispielen. Diese kannst du dir im Detail anzeigen lassen, indem du auf die entsprechenden Links klickst. Du wirst dadurch zum Source Code weitergeleitet und kannst das Programm ausführen lassen.

Auf jeder Detailseite siehst du auf der linken Seite die Erklärung, während  du rechts in den grauen Feldern den Code findest. 

Innerhalb der grauen Felder gibt es in der rechten oberen Ecke zwei Icons. Mit dem linken Icon kannst du den Code kopieren, falls du ihn lokal auf deinem Rechner ausführen möchtest. Das rechte Icon leitet dich zum Go Playground weiter, wo nun das entsprechende Code Beispiel angezeigt wird. 

Go Dokumentation

Befindest du dich im Go Playground, siehst du im Menüreiter auch den Link für die Dokumentation. Daneben befinden sich zudem das Installationspaket, Gründe für Go, den Blog und weitere interessante Links. Klicke dich einfach durch und probiere es aus.

Die Go Dokumentation unterstützt dich beim Lernen der Sprache durch gut beschriebene Tutorials.

Go Bücher

Für mich persönlich sind Bücher eine weitere Möglichkeit, um mit einer Sprache in Kontakt zu kommen und deren zugrundeliegende Funktionalitäten zu verstehen. Deshalb habe ich mir das Buch* The Go Programming Language gekauft. Es wurde mir von einem anderen Entwickler empfohlen.

Was mir besonders gut an dem Buch gefällt, ist die Mischung aus Tutorial und Erläuterungen, um die Sprache in ihrer Tiefe zu begreifen.

*Achtung, bei dem Link zum Buch handelt es sich um einen Affiliate Link von Amazon. Wenn du das Buch darüber bestellst, erhalte ich eine kleine Vermittlerprovision. Diese ermöglicht es mir, den Blog weiterhin zu betreiben. Danke!

Codewars

Ein weiteres Tool das du nutzen kannst, ist die Seite codewars. Hier kannst du Übungen, also Katas, in sämtlichen Programmiersprachen absolvieren. Dadurch schulst du deine Problemlösungskompetenz, trainierst deine Skills als Entwickler:in und kannst die Lösungen von anderen sehen.

Meine Empfehlung

Welche der oben genannten Tools das richtige für dich ist, kannst nur du wissen.

Mir persönlich hilft es tatsächlich alle der genannten zu nutzen. Dadurch erhalte ich einen umfangreichen Überblick und kann dort in die Tiefe eintauchen, wo ich es für die jeweilige Situation benötige.

Fazit

Du hast nun einen Überblick über Go erhalten und kennst Möglichkeiten um zu starten.

Wenn du jetzt dein erstes Go Programm erstellen und ausführen willst, schau dir den Artikel Erste Schritte mit Go an.

Als weitere Programmiersprache kann ich Go nur wärmstens empfehlen; natürlich immer abhängig davon, was du damit erreichen willst.

Ob und wie ich mit Go als Neueinsteigerin zurecht gekommen wäre, kann ich ehrlich gesagt nicht sagen. Meine erste Programmiersprache war JavaScript und kurze Zeit später TypeScript. Die Einarbeitung in Go als weitere Programmiersprache fällt mir persönlich relativ einfach.

Wie ist das bei dir? Beherrscht du bereits andere Sprachen und möchtest Go als weitere Sprache lernen? Oder denkst du darüber nach, Go als Einsteigersprache zu nutzen?

Falls du Go als Einsteigersprache lernst, würde ich mich über einen Erfahrungsbericht von dir sehr freuen.

Quelle Hintergrund des Titelbilds: kostenlose Hintergrundfotos von .pngtree.com

Quelle Go Logo: https://go.dev/blog/go-brand

Was dir auch gefallen könnte...

WordPress Cookie Hinweis von Real Cookie Banner