tobleron

tobleron

If any of you knows a resource (website, docs, articles) where I can access to see a comparison of how both of these ecosystems works, it would be great.

Delving into NodeJS a bit, I feel like there is a lot of similarities:

  1. npm ↔ hex
  2. Chrome V8 (Javascript → C++ → machine code) ↔ Erlang Runtime (Elixir → Erlang → machine code)
  3. As far as my research can tell both ecosystems can run asynchronous code but would love to read more resources about this topic if exists.
  4. NodeJS speed depends on asynchronous processing whereas Erlang depends on ultra lightweight synchronous processing (optionally asynchronous).

One thing I am trying to get my head around is a missing layer. NodeJS is not a framework, but isn’t it doing a lot of the work that a phoenix web server is doing, or is it more fair to compare Elixir with NodeJS and Phoenix with ExpressJS?

The purpose of the comparison is not to see what is superior as obviously the use cases may be different, but it’s more like to understand where they are similar and where they are different. I am just brainstorming with you!

Showing Posts 1 to 3

mythicalprogrammer

mythicalprogrammer

Chrome V8 doesn’t goes from javascript to C++ to machine code. It compiles directly to machine code according to the wikipedia.

As far as my research can tell both ecosystems can run asynchronous code but would love to read more resources about this topic if exists.

NodeJS runs on one giant event loop last time I check. I believe there is a threading library API over yonder. So the programmers themselves are doing to “thread logic” when they do async stuff and catching all those error and weird logic cases.

Erlang you can just create bunch of Erlang’s processes. The whole concurrency concept is built into the language unlike Javascript so it’s pretty nice to write logic in Erlang/Elixir. The actor model that Erlang/Elixir uses is imo easier to reason with and easier to mentally model than NodeJS async style. But then again you’re asking in an Elixir forum…

One thing I am trying to get my head around is a missing layer. NodeJS is not a framework, but isn’t it doing a lot of the work that a phoenix web server is doing, or is it more fair to compare Elixir with NodeJS and Phoenix with ExpressJS?

NodeJS is just this technology that enable programmer to do javascript backend using V8. It also push for this async style concurrency paradigm.

You can compare Javascript to Elixir (they’re both languages).

Phoenix to ExpressJS (web framework).

NodeJS’s concurrency model (Async) to Elixir/Erlang’s concurrency model (Actor Model).

V8 vs BEAM VM I guess.

You can read about Erlang/Elixir’s VM here: Distributed Systems Chair

It’s a paper what makes Erlang’s VM unique and why it’s suited for concurrency.


For an overview of Erlang’s/Elixir’s Concurrency model try this:

hauleth

hauleth

As it was said earlier V8 do not translate JS to C++ but rather uses its’ own internal representation that then is converted to the machine code. This is called JIT.

This isn’t true either, at least not in general case. IIRC Erlang do not have JIT compiler right now (but there is work in progress to allow that) and it always interpreted intermediate language which is low-level description of instructions, something like WASM. However there is HiPE compiler that is ahead-of-time compiler of Erlang code to native code which enables performance boost but with cost (barrier between HiPE and non-HiPE code is slow and it disables few Erlang features).

Node/V8 cannot process data in parallel within single VM instance, BEAM does that natively. It is worth remembering that Node/V8 is single-threaded environment that runs big event loop (kqueue/epool/etc.).

Yes, in Node everything depends how few cycles you spend in the JS and instead you will allow everything to spend in wait. BEAM in that manner do not care that much as it allows you to run things in parallel when possible.


Comparison to be fair should be made between:

  • V8/NodeJS vs BEAM as an virtual machine - and to make it even more fair it should be Nx NodeJS + IPC (where N is the amount of CPU cores available) vs BEAM, or NodeJS vs BEAM with 1 scheduler enabled.
  • Elixir vs JavaScript/NodeJS - as a language and a “standard library”
  • Phoenix vs ExpressJS/whatever other web framework there is
tobleron

tobleron OP

Wow, this topic seems more complex than I thought, but I am thankful for all your detailed responses!

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
dillonoconnor
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New
thiagogsr
** (ArgumentError) expected :max_attempts to be a positive integer, got: {:@, [line: 10, column: 19], [{:max_attempts, [line: 10, column:...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
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
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews