Technische Artikel

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