18ae28f918
Chemenu kompiliert Rohnotizen zu einem verlinkten, quellengebundenen Wiki: raw/ -> types/ + tools/ -> kb/ -> reports/. Was mechanisch ist, macht tools/wikitool; was Urteil braucht, macht ein Agent unter Contracts, deren Grenzen in Code durchgesetzt sind statt im Prompt. Dieser Commit ist der Startpunkt der oeffentlichen Historie. Die vorherige Entwicklung fand in einer privaten Instanz statt und ist nicht Teil dieses Repositorys; ihre Erzaehlung steht vollstaendig in CHANGES.md, das mit 44 Eintraegen von 0.1.0 bis 2.1.0 erhalten geblieben ist. Der mitgelieferte Korpus ist ein Testbett und eine Demo: 170 Seiten ueber den Stack selbst - Gates, Lint, Versionierung, Suche, das Wiki-Muster. Er dokumentiert das Werkzeug mit den eigenen Mitteln des Werkzeugs. Lizenz: AGPL-3.0 fuer den Stack (tools/, types/), CC-BY-4.0 fuer die Inhalte. Die Grenze zwischen beiden ist der Dateiplan, den dist export berechnet - siehe NOTICE.
136 lines
4.3 KiB
Markdown
136 lines
4.3 KiB
Markdown
---
|
|
type: types/entity.md
|
|
entity_type: technology
|
|
tags: [programming-language, compiled, backend, systems]
|
|
created: 2026-07-25
|
|
modified: 2026-08-29
|
|
related: [ha-core, gdeploy, plugnburn-edl, BCDModule, goresponsiveness, hacs-e3dc]
|
|
sources: []
|
|
confidence: 0.95
|
|
confidence_base: 0.95
|
|
provenance: general
|
|
summary: Quelloffene Programmiersprache von Google für Systemprogrammierung und Backend-Dienste, mit eingebauter Nebenläufigkeit über Goroutines und Channels.
|
|
---
|
|
# Go
|
|
|
|
**Typ:** Technology (Programming Language)
|
|
|
|
## Beschreibung
|
|
|
|
Go (häufig als Golang bezeichnet) ist eine Open-Source-, statisch typisierte, kompilierte Programmiersprache, die von Google entwickelt wurde. Sie ist für die Erstellung einfacher, schneller und zuverlässiger Software konzipiert.
|
|
|
|
Go ist besonders gut geeignet für Systemprogrammierung, Backend-Services und nebenläufige Anwendungen aufgrund seiner integrierten Unterstützung für Nebenläufigkeit (Goroutines und Channels), schnelle Kompilierung und effiziente Laufzeit.
|
|
|
|
## Kerndaten
|
|
|
|
- **Typ:** Programmiersprache
|
|
- **Paradigma:** Prozedural, nebenläufig
|
|
- **Erste Erscheinung:** 2009
|
|
- **Entworfen von:** Robert Griesemer, Rob Pike, Ken Thompson bei Google
|
|
- **Lizenz:** BSD-ähnlich
|
|
- **Website:** https://golang.org
|
|
- **Aktuelle stabile Version:** 1.22+ (Stand 2026)
|
|
|
|
## Beziehungen
|
|
|
|
- **Verwendet von:** [[ha-core]], [[gdeploy]], [[plugnburn-edl]], [[BCDModule]], [[goresponsiveness]], [[hacs-e3dc]]
|
|
- **Konkurriert mit:** Rust, Java, C++, Python (für Backend)
|
|
- **Beeinflusst von:** C, Pascal, Oberon
|
|
- **Beeinflusst:** Viele moderne Sprachen
|
|
|
|
## Schlüsselfunktionen
|
|
|
|
### Sprachfunktionen
|
|
|
|
- **Statische Typisierung** - Typsicherheit mit Typinferenz
|
|
- **Nebenläufigkeit** - Goroutines (leichte Threads) und Channels
|
|
- **Garbage Collection** - Automatische Speicherverwaltung
|
|
- **Interfaces** - Implizite Implementierung (Duck Typing)
|
|
- **Pakete** - Modulare Organisation
|
|
- **Tooling** - Built-in Build-, Test-, Format- und Dokumentations-Tools
|
|
|
|
### Leistung
|
|
|
|
- Schnelle Kompilierung
|
|
- Effiziente Ausführung (native Binärdateien)
|
|
- Niedrige Latenz
|
|
- Gut für CPU-intensive und I/O-intensive Aufgaben
|
|
|
|
### Ökosystem
|
|
|
|
- **Pakerverwaltung:** Go Modules (seit Go 1.11)
|
|
- **Standardbibliothek:** Umfangreich und gut konzipiert
|
|
- **Pakete von Drittanbietern:** Wachsendes Ökosystem auf pkg.go.dev
|
|
|
|
## Anwendungsfälle
|
|
|
|
Basierend auf der Repository-Struktur wird Go verwendet für:
|
|
|
|
1. **Hausautomation** - [[ha-core]]
|
|
2. **Deployment-Tools** - [[gdeploy]]
|
|
3. **EDL-bezogene Tools** - [[plugnburn-edl]], [[andybalholm-edl]]
|
|
4. **Modulsysteme** - [[BCDModule]]
|
|
6. **Performance-Testing** - [[goresponsiveness]]
|
|
|
|
## Vor- und Nachteile
|
|
|
|
### Vorteile
|
|
|
|
- Schnelle Kompilierung und Ausführung
|
|
- Exzellente Standardbibliothek
|
|
- Integrierte Unterstützung für Nebenläufigkeit
|
|
- Einfache Syntax
|
|
- Starkes Tooling-Ökosystem
|
|
- Plattformübergreifende Kompilierung
|
|
- Gut für Microservices und CLI-Tools
|
|
|
|
### Nachteile
|
|
|
|
- Weniger flexibel als dynamisch typisierte Sprachen
|
|
- Keine Generics (bis Go 1.18)
|
|
- Error Handling kann verbose sein
|
|
- Begrenzte Meta-Programmierungsfunktionen
|
|
|
|
## Lernressourcen
|
|
|
|
- **Offiziell:** https://golang.org/doc
|
|
- **Tour:** https://go.dev/tour/
|
|
- **Effective Go:** https://go.dev/doc/effective_go
|
|
- **Blog:** https://go.dev/blog/
|
|
|
|
## Toolchain
|
|
|
|
- `go build` - Pakete und Abhängigkeiten kompilieren
|
|
- `go test` - Tests ausführen
|
|
- `go fmt` - Code formatieren
|
|
- `go mod` - Modul-Verwaltung
|
|
- `go doc` - Dokumentation
|
|
- `go run` - Kompilieren und ausführen
|
|
- `godep` - Abhängigkeits-Tool (älter)
|
|
|
|
## Best Practices
|
|
|
|
1. **Formatierung:** Immer `go fmt` verwenden
|
|
2. **Testen:** Tests mit dem Testing-Paket schreiben
|
|
3. **Error Handling:** Explizite Fehlerprüfung
|
|
4. **Nebenläufigkeit:** Channels für Kommunikation verwenden
|
|
5. **Interfaces:** Kleine, fokussierte Interfaces entwerfen
|
|
|
|
## Historie
|
|
|
|
- [2009] - Erste öffentliche Veröffentlichung
|
|
- [2012] - Go 1.0 veröffentlicht
|
|
- [2015] - Go 1.5 mit Self-Hosting-Compiler
|
|
- [2018] - Go 1.11 mit Modulen
|
|
- [2020] - Go 1.15 mit verbessertem Linker
|
|
- [2022] - Go 1.18 mit Generics
|
|
- [2026-07-25] - Entity-Seite erstellt
|
|
|
|
## Siehe auch
|
|
|
|
- [[ha-core]] - Verwendet Go für E3DC-Integration
|
|
- [[gdeploy]] - Go-basiertes Deployment-Tool
|
|
- [[Rust]] - Alternative Systemsprache
|
|
- [[Python]] - Alternative Skriptsprache
|
|
- Systems Programming concept
|