bk99.de entertain the web since 1997

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

Read the original article

Search the Web Archive