My perspective after working with Elixir (and Phoenix) in an actual manufacturing surroundings.
A couple of yr in the past I got here to an awesome firm, my colleagues are specialists and the surroundings is difficult however pleasant, and wonderful. I’m a chemist, I began working with code and scientific computing doing my thesis however I by no means labored on a giant productive mission.
After I arrived at this firm I began utilizing Elixir as a result of that’s how issues had been already executed, nothing particular, it’s a language that roughly resembles Ruby (which is a bit like Python) however has one other strategy, in Ruby all the pieces is an object, EVERYTHING, however in Elixir all the pieces is a operate, I used to be stepping into the world of purposeful programming.
1. Composition of features
It’s one thing that appears very summary, nearer to arithmetic than to computation, nevertheless, it’s one thing that appears, humanly, extra pure.
As an alternative of getting a variable with a number of strategies, you’ve got a sequence that injects the results of a operate to a different, an instance may very well be a path in categorical.js that might be written this manner:
It may very well be written just a little extra legibly:
On this case, the primary could be to make use of the get technique, then to permit the usage of cors, then an authentication operate and at last the operate that returns the data given the earlier steps.
2. Sample Matching
It is among the options of purposeful programming that JS has adopted all through its historical past, there’s not a lot to say about this professional, certainly in case you are on the lookout for a programming language like Elixir, you’ve got used or not less than heard of destructuring.
It’s a intelligent solution to declare variables, nevertheless, in Elixir it additionally works to pick a selected operate, for instance, we’ve got two features known as sum, one in every of them accepts 2 parameters and the opposite 3, Elixir is aware of which operate to name given the enter parameters, which permits to make use of it as an “if”.
Within the earlier features relying on what parameters we ship to the operate one or one other is executed, the earlier operate may be very primary, nevertheless, it permits us to see how highly effective this manner of constructing code is.
1. The Sample Matching
When it comes to improvement, it’s wonderful, nevertheless, in the case of debugging this can be very painful, though we are able to doc the features, the documentation solely makes the code extra verbose and tough to learn, this may be simpler if the language was typed.
2. The error messages
They’re merely horrible, one has to spend so much of time attempting to determine what the message desires to inform us, after a while it turns into intuitive however this makes it not a language appropriate for a newbie.
3. The neighborhood is nice however:
Normally, there’s little elixir data in productive environments, i.e. it’s tough to seek out somebody who already has good elixir or phoenix expertise.
4. The promise of resiliency, pace, and multiprocessing is not a differentiator.
These days instruments like Kubernetes,
gunicorn, and compiled languages like Go and Rust permit us to make use of concurrency and multiprocessing in a quite simple method (relying on what we’re going to do). This was an excellent differentiator of Elixir with respect to different languages like Ruby 10 years in the past, these days, I feel there are higher instruments to do what as soon as made it well-known.
5. Compiled however runs on a digital machine
The compiler is quick, very quick, nevertheless, it may very well be stricter concerning errors and warnings as in Rust or Go. Alternatively, I feel one of many benefits of a programming language being compiled is the portability of the bundle. On this case, it doesn’t matter since you want the Erlang digital machine to run Elixir. In the long run, you don’t handle the processes. Nonetheless, it makes the CI/CD course of extra advanced in sure senses.
It’s just like Java in that sense, solely much less sturdy and solely purposeful, nevertheless, it’s not an excellent differentiator as a result of there are languages like Scala or Clojure which can be purposeful, quick, and run on a digital machine.
I feel Elixir is nice to study purposeful programming since you don’t must battle with typing and different stuff. If you happen to come from Ruby or Python the syntax just isn’t actually an issue, you simply have to alter the mind-set, however it’s not that sophisticated.
It’s quick in manufacturing however it’s tough to debug and complex to deploy. It additionally has little or no data and few dependency updates, for instance, the Ecto drivers for SQLServer.
It doesn’t have any actual differentiator, there are a lot of programming languages that use the purposeful paradigm and that, as well as, are extra cherished by the neighborhood, with extra references and extra data obtainable.
Anyway, it by no means hurts to study one thing new, I feel Elixir is an effective problem to study.
If you happen to already know RubyOnRails and also you wish to do one thing very quick with the identical syntax I feel Phoenix is the choice. Normally I feel it’s a lot better than ROR and its syntax is refreshing, apart from, it has an identical configuration within the mission construction, I’m positive you’ll find it irresistible.