omerss2311

omerss2311

As a developer with experience in many languages, Elixir feels very attractive to me because of its (and in general the OTP platform’s) uniqueness. However, so far it feels like I’m missing something. Every thread about this talks about mass concurrency, but that just isn’t that useful? Like I genuinely haven’t found a use for it outside of (very) big data analysis and networking. I feel like I’m missing something though? Like I look at the documentation for OTP and for Elixir, and it feels like it has huge potential but I can’t seem to find a use for it. Any thoughts?

Showing Posts 1 to 10

jhogberg

jhogberg

Erlang Core Team

@ferd wrote a wonderful take on it a few years back, it talks mostly about Erlang, but all of it is applicable to Elixir. :slight_smile:

15
Post #1
dominicletz

dominicletz

Creator of Elixir Desktop

My personal Nr#1 strength of Elixir is that you will be able to write production grade software in less lines of code than any other language. This means you will spend less time to create and maintain it, spend less money as a company to push a feature out and create less bugs for your customers.

The functional nature and process isolation do help here a ton and protect your from a whole class of bugs, while at the same time enabling the “let it crash” way of error handling which again saves you code as it let’s you focus on implementing the “happy path” and deliver value to your customers first.

Compare this with other scalable options, such as Java, Golang, Rust – These are amazing languages but you will spend significant time digging through technicalities to make the borrow checker happy in Rust, or have the correct error handling in Golang or write class boilerplate in Java.

Just my 2 cents.

16
Post #2
mayel

mayel

Many apps don’t really take direct advantage of that, but benefit greatly in the libraries they use, eg. Bandit, NimblePool (used by Req/Finch), Phoenix Channels, LiveView, Oban…

10
Post #3
gregvaughn

gregvaughn

If you dig into the history of Erlang, a primary requirement was fault tolerance. Those phone network devices had to keep running even if one call has an error. Processes and their memory isolation (and supervisors (and hardware redundancy)) were used toward that goal. Concurrency was kind of a happy side effect (especially given CPUs of the 80’s and 90’s).

In my opinion processes should be thought of primarily as a way of controlling the “blast radius” of an unexpected error, and secondarily as a wonderful concurrency primitive that is easy to reason about.

19
Post #4
jhogberg

jhogberg

Erlang Core Team

Sort of. If I recall correctly, concurrency was a requirement from the start to keep response times fair and reduce the risk of a small part of the system locking everything else up – such as a single phone call accidentally going into an infinite loop somehow. That it enabled the parallel execution of concurrent processes later on is a very happy accident :slight_smile:

13
Post #5
sodapopcan

sodapopcan

I think this is just trying to appeal to all the folks who believe their startup will hit Google-scale in a year (or ever) that seem to be prevalent in our industry :slight_smile: (Rather, that is why there may seem to be such a focus on it)

Elixir is quite useful beyond the concurrency. It’s a really just a nice language and really-well suited for the web (and now beyond!). It’s hard to beat = as a match operator! One of the coolest things about Erlang is that it didn’t come from academia—it was developed to solve a concrete business problem that looks a lot like how the web ended up looking. You could kind of call it a DSL for writing client/server applications :slight_smile: It also doesn’t suffer from the “If you aren’t using the heavy-weight features then there is no point” thing.

fmn

fmn

hey @ omerss2311!

Every thread about this talks about mass concurrency, but that just isn’t that useful?

I think it’s one of the hottest topics in programming languages world, as well as the one with which same world struggles… (which might seem hilarious, because fairly long time passed since first general purpose, multi-core/CPU systems started to appear.)

Async, non-blocking, parallel or multiprocessing, threads, green threads - you will see it everywhere pretty much: in fairly small or medium sized web apps, backends, different sort of ETLs, server software, client-side JS…

Random example: Goroutines - used so often it’s probably easier to find software with them than without. Take a look at Helm.

Many languages did not addressed the subject originally, in early iterations of their design, or did, but used dated standards/approach, and results more often than not… Are causing lots of discussions and/or friction :slight_smile:

Take a look at Rust surveys or community discussions, initiatives - super hard to get it right, async API is kind of rough and complex to consume.

OK, where i am going with that?

Enter… Erlang/OTP and new generation of programming languages built on top of both.

Naive but obligatory disclaimer :slight_smile:: pretty much all the things i am writing are personal opinion/anecdote, and here comes another one: i never encountered language or framework in which topic would be so easy to jump at, and incorporate into your software, without so many foot guns. i can’t really express how amazing it feels to me (and how many people ignore it, not even taking a look, because “meh, no static typing”).

… there is plenty more obviously, however this time i wanted to chime in reg. this, particular subject.

dimitarvp

dimitarvp

Is that an actual question, or is it a claim disguised as a question?

While I agree with the others that there is more to Erlang/Elixir and OTP than just being transparently concurrent and parallel, I believe it has to be restated that this is extremely valuable in a civilization where one of the most popular languages – Python – is still having a council of elders bickering whether or not to remove the global interpreter lock… while tech like Erlang/Elixir, Golang, Rust, OCaml and others are delivering super-parallel software today. Which is honestly hilarious to watch, I’ve been to their discussion boards and it gave me several good laughs.

So in case you were actually asking a question, my response would be “is that not quite a lot of value proposition already”?

Sebb

Sebb

Elixir is a very pragmatic and simple functional language.
It is imo the only functional language for blue-collar-coders like me.
I tried them all and failed. (Erlang is also easy but I could not live with the syntax).

Note: functional languages are a good thing (for most problems).

windexoriginal

windexoriginal

Besides OTP/BEAM there are definite advantages to Elixir/Erlang:

  • Powerful pattern matching
  • Immutability
  • A macro system
  • Functional style

If you prefer macros can remain in the background, but, like OTP, they are used to implement features that make Elixir enjoyable to work with.

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 92995 915
New
caslu
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
GES233
I’m posting this in response to Jose’s recent tweet (Cr. link) : People are sleeping on Elixir for a coding harness: Hot-code swappi...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
durvia
Anyone running long-lived stateful processes on BEAM? We’re building an AI agent runtime and would love to compare notes. We’re a small ...
New
AstonJ
This might be a bit disturbing for some but it’s happening - computers running on living human neurons. They’ve made them smart enough t...
New

Other Trending Topics Top

marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews