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.
4.3 KiB
4.3 KiB
type, entity_type, tags, created, modified, related, sources, confidence, confidence_base, provenance, summary
| type | entity_type | tags | created | modified | related | sources | confidence | confidence_base | provenance | summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| types/entity.md | technology |
|
2026-07-25 | 2026-08-29 |
|
0.95 | 0.95 | general | 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:
- Hausautomation - ha-core
- Deployment-Tools - gdeploy
- EDL-bezogene Tools - plugnburn-edl, andybalholm-edl
- Modulsysteme - BCDModule
- 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 kompilierengo test- Tests ausführengo fmt- Code formatierengo mod- Modul-Verwaltunggo doc- Dokumentationgo run- Kompilieren und ausführengodep- Abhängigkeits-Tool (älter)
Best Practices
- Formatierung: Immer
go fmtverwenden - Testen: Tests mit dem Testing-Paket schreiben
- Error Handling: Explizite Fehlerprüfung
- Nebenläufigkeit: Channels für Kommunikation verwenden
- 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