What are Go and Elixir good for? What are the pros and cons of these programming languages? This cheatsheet is supposed to answer some important question while evaluation a new language.

GO Elixir
Pros
  • Statically typed
  • Garbage collected CPU and memory usage are generally very small
  • Excellent parallel processing performance
  • Great standard library
  • Single binary for distribution -> ridiculously easy deployment
  • Has a vibrant and growing community
  • Dynamically typed (strong typing with type inference), functional
  • Very expressive and extensible
  • Immutable and concurrent data structures
  • Mature, powerful and scalable Erlang OTP
  • Great development and testing tools, e.g. mix
  • Excellent parallel processing performance
  • Great documentation
  • Awesome community
Cons / Tradeoffs
  • Bad support for generic programming
  • Bad language extensibility
  • Shared memory by communicating
  • Poor concurrent data structures
  • Possible data races, leaking goroutines
  • Multi-core processing requires additional amount of work
  • Managing dependencies is controversial
  • Okayish documentation
  • Not that fast in performance or computation critical applications
  • Community still works on standards and conventions
  • Deployment is not easy compared to other languages and sometimes confusing for newbies
  • Erlang's legacy
What is it good for?
  • Performance intensive applications
  • Command line interfaces
  • Daemons
  • Microservices
  • Infrastructure tools
  • Services that run for long periods of time
  • Highly concurrent, real-time or distributed systems
  • Monoliths (e.g. Umbrella apps)
  • Microservices
  • Web applications