As a Python person, I’m looking into Elixir now for concurrency reasons (not for ML), and I have to say this article is pretty poor.
It makes a lot of naive claims about Python, and then fails to explain what Elixir actually does. Maybe it’s this one sentence:
This is where Nx, Axon and friends step in and provide a functional Elixir API for building up your computational graphs in a high-level language that will then be executed using XLA on either CPU or GPU as highly optimized code
OK show me how that works?
The rest of the article boils down to “I am not familiar with the Python ecosystem and don’t want to be”.
And I totally get that – it is complex and patchy. But he also says the equivalents in Erlang/Elixir are either outright MISSING, or also nascent.
I support diversity of languages in the ML ecosystem, but this is article is really unconvincing.
As the article mentions, Python and Elixir are the same in almost every dimension – including being poor at raw number crunching. The big difference Elixir is functional and thus can be executed efficiently in a concurrent way, with separate task-based GC on the Erlang VM.
But I’d say this is a difference that doesn’t matter much for ML, where you’re mostly gluing together native code and GPU code, which is highly parallel. Or at least the author needs to justify it.
As far as I understand, the Erlang VM didn’t even have dictionaries until the 2010’s, and is historically poor at string processing, I think using the Haskell-like linked-list representation. Although I think Elixir moves away from that.
Those issues alone would make Elixir/Erlang poor for ML, which is 90% data cleaning code.
So it seems like Elixir is worse than Python for ML along all dimensions except one that doesn’t really matter – concurrency. ML code is more massively parallel than concurrent.
As a Python person, I’m looking into Elixir now for concurrency reasons (not for ML), and I have to say this article is pretty poor.
It makes a lot of naive claims about Python, and then fails to explain what Elixir actually does. Maybe it’s this one sentence:
OK show me how that works?
The rest of the article boils down to “I am not familiar with the Python ecosystem and don’t want to be”.
And I totally get that – it is complex and patchy. But he also says the equivalents in Erlang/Elixir are either outright MISSING, or also nascent.
I support diversity of languages in the ML ecosystem, but this is article is really unconvincing.
As the article mentions, Python and Elixir are the same in almost every dimension – including being poor at raw number crunching. The big difference Elixir is functional and thus can be executed efficiently in a concurrent way, with separate task-based GC on the Erlang VM.
But I’d say this is a difference that doesn’t matter much for ML, where you’re mostly gluing together native code and GPU code, which is highly parallel. Or at least the author needs to justify it.
As far as I understand, the Erlang VM didn’t even have dictionaries until the 2010’s, and is historically poor at string processing, I think using the Haskell-like linked-list representation. Although I think Elixir moves away from that.
Those issues alone would make Elixir/Erlang poor for ML, which is 90% data cleaning code.
So it seems like Elixir is worse than Python for ML along all dimensions except one that doesn’t really matter – concurrency. ML code is more massively parallel than concurrent.