Wahlprogramm 1: Go
Im ersten Wahlprogramm wird zunächst die Programmiersprache Go gelernt. In vier Blöcken sollen die folgenden Bereiche der Sprache erkundet werden:
- Go 1: Variablen, Datentypen und formatierte Ausgabe
- Go 2: Strukturen, Slices und Maps
- Go 3: Kontrollstrukturen: Verzweigungen und Schleifen
- Go 4: Funktionen definieren und aufrufen
Zu diesen Theorieteilen gibt es eine Übungssammlung.
Hierzu ist folgende Arbeitsweise sinnvoll:
- Überfliegen Sie den jeweiligen Theorieteil auf der Modulwebseite.
- Lesen Sie die Aufgabenstellung im Repository durch.
- Kehren Sie bei Unklarheiten zum Theorieteil auf der Modulwebseite zurück.
Nach der Einführung in die Programmiersprache Go folgen weitere Themenblöcke:
- HTTP-Monitoring mit
meow
- Migration der
meow
-Konfiguration vom Dateisystem auf Redis
🗃️ Ergebnissicherung
In diesem Wahlprogramm wird Quellcode bearbeitet. Darum sollen die erarbeiteten Aufgaben mit Git verwaltet werden:
- Erstellen Sie einen Fork vom Repository (jetzt: Übungssammlung, später: meow).
- Klonen Sie Ihren persönlichen Fork.
- Erstellen Sie einen Commit mindestens nach dem Lösen einer Aufgabe.
- Pushen Sie den Commit auf ihr öffentliches Repository.
- Erstellen Sie zwischendurch einen Pull Request um eine Rückmeldung zu erhalten.
Falls dieses Vorgehen Schwierigkeiten bereitet, gibt die Lehrperson gerne auskunft.
Am Ende des Moduls wird Ihre Arbeit anhand der bearbeiteten Repositories bewertet. Diese Bewertung fliesst nicht in die Modulnote, aber in die Prädikate ein.
Warum Go?
Warum soll im Modul 346 Go als Programmierspracahe zum Einsatz kommen? Dafür sprechen eine Menge Gründe. Go wurde als Programmiersprache für Serveranwendungen konzipiert. Cloud Native Go hebt Merkmale von Go hervor, die es für Cloud-Anwendungen besonders geeignet macht:
- Lesbarkeit: einfache Lesbarkeit aufgrund der wenigen (25) Schlüsselwörter und konsequenten, automatischen Formatierung des Quellcodes
- Nebenläufigkeit: mächtige und sichere Nebenläufigkeit mittels Communicating Sequential Processes (CSP) auf Basis leichtgewichtiger Goroutines und Channels
- Stabilität: stabiler (und schlanker) Sprachkern mit Garantie der Kompatibilität von bestehendem Quellcode in zukünftigen Versionen
- Kompilierung: schnelle Kompilierzeiten und plattformübergreifende Kompilierung (Cross Compilation) ohne Zusatzwerkzeuge
- Sicherheit: Memorysicherheit, statische Typisierung und Garbage Collection
- Performance: hohe Performance bei geringem Speicherbedarf
- Standardbibliothek: umfassende Standardbibliothek, u.a. mit einem Package für HTTP-Server und -Clients
- Skalierbarkeit: kleinste Serveranwendungen in < 20 Zeilen Code, grössere Projekte mit > 500'000 Zeilen Code (z.B. Kubernetes)
- Lernbarkeit: in wenigen Stunden gelernt, in einigen Wochen gemeistert
- Verbreitung: viele Libraries, gute Lernmaterialien, grosse Community, viel Support
Go ist eine relativ junge Sprache, ist aber im Cloud-Bereich schon sehr prominent vertreten, u.a. durch die folgenden Projekte:
- Container
- Docker & Podman
- Kubernetes & OpenShift
- Serverdienste
- etcd
- CoreDNS
- Observability
- Prometheus
- Grafana
Siehe auch die CNCF-Landscape. Sehr viele der dort aufgelisteten Projekte wurden in Go umgesetzt.