And how to over come those weakness?
It tends not to be that great for computationally intensive calculations, aka ray tracing, crypto. Not that great for extensive complicated dbase queries, low level programming (device drivers etc). Marginally passable for machine learning (mostly limited by lack of libraries).
Use another programming language … seriously. There is no reason to limit yourself to just one programming language / platform / database.
I can think of two:
Not being able to work well in distributed systems that are more than… 200, I think? But seriously, most languages and tech stacks can’t even get that far. Kubernetes is trying hard but they have a plethora of other issues to overcome as well so I personally wasn’t very impressed by it. So in this case, I don’t know… optimize?
Erlang and Elixir are not good at hardcore number crunching. There is no way around that. However, you can always use NIFs or Ports to directly interface with other, lower-level, languages – like C/C++, Go, Rust etc.
As @tty said, don’t limit yourself to just one language. As much as we the programmers love the dream of The One Language To Rule Them All™, it simply doesn’t exist.
That being said, in my 2.5 years with Elixir I found that it can serve most of my personal and professional needs – and where it can’t, there are plenty of others happy to fill the void.
To be clear, it can go over 200, but not out of the box. Out of the box I would push it up to 60 at best. But I wouldn’t sweat about it because most languages do not go past 1 out of the box.
However I’m hoping these would change in a year or two given:
Zandra Norman - Scaling Distributed Erlang (ElixirConfEu 2016)
This work is stalled at the moment. Currently, to go higher than that I’d bet on Partisan. Even with a full mesh cluster it uses smarter tricks than standard erlang (more than one connection per machine as an example).
It has a hex package and since OTP 19 or 20 (if I am not mistaken) we can override default distribution mechanism of the node.
Tip: it has a hex package.
Tip 2: don’t trust a word of what I say cause I’ve never run this in production
Every system has some places it is week. In some cases the correct tool will not be Erlang/Elixir and that is OK. Honestly If you can’t say where is this tool not useful you don’t know enough about it.