# Is Go evolving in the wrong direction? Page: https://stenobird.com/podcast/go-time-golang-software-engineering/is-go-evolving-in-the-wrong-direction Text version: https://stenobird.com/podcast/go-time-golang-software-engineering/is-go-evolving-in-the-wrong-direction.md Podcast: [Go Time: Golang, Software Engineering](https://stenobird.com/podcast/go-time-golang-software-engineering) Published: 2024-06-18T21:30:00+00:00 Episode link: https://changelog.com/gotime/319 Audio file: https://op3.dev/e/https://cdn.changelog.com/uploads/gotime/319/go-time-319.mp3 Processing state: processed JSON: https://stenobird.com/v1/public/podcasts/go-time-golang-software-engineering/episodes/is-go-evolving-in-the-wrong-direction Duration seconds: 4429 ## Resource A debate on whether Go's recent feature additions, like generics and iterators, are introducing unnecessary complexity or essential evolution. The hosts also explore the implications of restricting package internals and the broader industry obsession with language competition. ## Highlights - Main idea: While generics and iterators increase language complexity, they provide necessary standardization for the ecosystem - Failure mode: Using Go for tasks requiring heavy canonicalization (like XML/SAML) can lead to brittle code and C-library dependencies - Practical takeaway: The upcoming restriction on 'go:linkname' will break existing hacks but enforces better encapsulation and long-term stability - Main idea: The debate over Go vs. Rust often misses the point; the focus should be on software correctness rather than language performance benchmarks - Practical takeaway: Avoid using common nouns for package names to prevent namespace collisions and ambiguity in the standard library ## Topics Go programming language, Generics, Software Engineering, Rust, Package Visibility, Software Complexity, API Design, Computer Science ## Chapters - 6:40 — The Complexity of Generics and Iterators: Evaluating whether the addition of generics and new iterator patterns adds too much cognitive load to the Go language. - 17:30 — When Not to Use Go: A discussion on the pitfalls of using Go for specific encoding tasks like canonical XML that often require C interop. - 40:25 — The End of go:linkname Hacks: Analyzing the upcoming changes to package visibility and how restricting internal access will impact the ecosystem. - 57:00 — Beyond the Rust vs. Go Rivalry: Critiquing the industry's focus on language replacement and advocating for a focus on fundamental engineering principles. - 1:08:05 — The Importance of Engineering Rigor: Reflecting on how language silos form and why critical thinking is more important than mastering specific syntax. ## Actions - request_transcript: `POST https://stenobird.com/v1/public/podcasts/go-time-golang-software-engineering/episodes/is-go-evolving-in-the-wrong-direction/transcription-requests` — Idempotently request low-priority transcript generation for this episode. - read_markdown: `GET https://stenobird.com/podcast/go-time-golang-software-engineering/is-go-evolving-in-the-wrong-direction.md` — Read the agent-friendly Markdown representation of this episode resource. A page view does not enqueue transcription. Agents should invoke `request_transcript` explicitly when they need this episode processed. ## Transcript Full transcripts are not published on public pages unless there is a clear rights basis.