Go combines closeness to the system with simple concurrency
Summary
Google releases Go as a compiled open source systems tool with garbage collection, fast builds and built-in concurrency primitives. Go was publicly announced in November 2009. Robert Griesemer, Rob Pike and Ken Thompson designed the language.
Ideas
- Goroutines model many independent flows with little management overhead.
- Channels pass values and synchronise communicating processes.
- Static typing catches errors before execution.
- Type inference reduces repetition without dynamic typing.
- A simple grammar speeds up parsers, tools and builds.
- A standard library covers networking, file and cryptography tasks.
Insights
- Language design can map operational problems directly onto simple primitives.
- Fast toolchains change the willingness to make small, frequent changes.
- Few language features make shared conventions in large teams easier.
- Concurrency becomes more manageable when communication rather than shared memory is in the foreground.
Facts
- Go compiles to native machine code.
- The implementation was released as free software.
Recommendations
- Only use goroutines with clear termination and error propagation.
- Measure blocked channels and queues under realistic load.
- Format source code automatically with the standard tools.
References
Links to the original source and the Web Archive open in a new tab.