Comparison Cheat Sheet: Elixir vs Go

What are Go and Elixir good for? What are the pros and cons of these programming languages? This cheat sheet 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