upvote
That is just wrong.

> You need Beam and the Elixir. I find that really weird, because I'm used to just the language like in Python, Java, C, Rust. Not something underneath it, too

The beam is a VM. You get that Java requires a VM too right? It’s called JVM for a reason. And Python requires an interpreter.

> There is no debugger. The way to debug Elixir is to print stuff to the console, like 40 years ago.

That is false. https://www.erlang.org/doc/apps/debugger/debugger_chapter.ht... and you have observer. And you have a lot of other debugging tools. I hear Java has a good one and maybe it’s better (I never used it) but it’s not true there exist no debuggers for the beam.

reply
Almost nobody uses it though, which is too bad, especially since multi-head functions sometimes make it difficult to follow the execution path.

I'd like to do step by step but I cannot plug the debugger to VScode from inside a docker container.

reply
No one I know wears the shoes I like to wear, which is too bad, because that means I can't enjoy them as much now.
reply
I meant that it doesn't get much love from the community, it's pretty clear it's not used much, that's why things like `dbg` gets added to the language.
reply
I've used it, but I've very rarely needed to do so.
reply
People use it.
reply
Some do, but the DX was bad last time I tried, I did not find a way to use it with my setup.
reply
deleted
reply
Java has the JVM the same way that Elixir has Beam/OTP/...
reply
And CPython runs Python bytecode, which is basically running in a Python virtual machine.

I am not sure what GP is objecting to.

reply
> I am not sure what GP is objecting to.

Elixir always felt like it would be a solid functional systems programming language, so not having a compiled backend is a genuine downside.

reply
Read again...

Here's what you need to do for elixir:

Download and run the Erlang installer Download and run the Elixir installer

Here for Java: Download and run the Java SDK

And for Python: Download and run the Python installer

reply
If you're going to try and use this analogy, you need to compare Elixir to Kotlin or Scala or Clojure rather than Java. Elixir is a language written for the BEAM which was created for Erlang. The BEAM happened to be useful VM for these other languages such as Elixir, Gleam, LFE, & Luerl.
reply
No, I don't. I'm not writing gleam etc for the same reasons.
reply
If you don't want to then fair enough :) that said if your problem is just installation, some of the gleam people realized it can be tricky and made a nice guide for various operating systems and package managers: https://gleam.run/install/

Note this includes installing erlang as well

While it is multiple steps, the frustration is a much more one time thing compared to the problems and frustrations you'd have using a language or its ecosystem for a long time or big project

reply
For Java you need a JRE and JDK depending on whether you're just running or also building. That they are bundled (for Windows) is slightly convenient, but they're not bundled on Linux so what you're saying is OS dependent
reply
JRE or JDK, not "and". The JDK is a superset of the JRE.
reply
Thank you, appreciate the correction
reply
> Download and run the Erlang installer Download and run the Elixir installer

No, you just install the elixir package from a package manager. Windows not including a proper one by default is not a fault of the language.

reply
Is your issue something with the runtime itself, or just the difficulty of installing it?
reply
I think the issue is "I have to install two things instead of one thing" which is a pretty weird way to judge a programming language.

I guess we know how he feels about TypeScript.

reply
To use Python/Java you have to download and install an OS. (Though some versions might run on bare metal)
reply
Here's what you need for Java:

Download SDKMan/Jenv

Install the version(s) of Java you need for your projects

Make sure your JAVA_HOME environment variable is set

Ensure your IDEs locate the correct Java home

Compared to all that, Elixir's two installers are trivial.

And if you have a competent package manager, you can just tell it to get Elixir and it'll handle Erlang for free.

reply
No you don't. The process is exactly the same for Java.
reply
Nah, I work on a team that has multiple microservices written over the years in different versions of Java. "Just click the installer" is not sufficient. That's why programs like jenv, SDKman, nvm, and others even exist (and are popular). Your lack of real-world experience is showing.
reply
LOL LaCk oF eXpErIeNcE. Bro all you have to do is open intellij and it will prompt you to install the correct version of Java.
reply
Don't tell OP this - he doesn't want to install multiple things. You'll scare him away from Java.
reply
Java is ugly anyway
reply
If you're used to Java, Elixir is like `javac`, Beam is like `java`. Mix is like a (way better) version of Gradle. You need elixir to compile your app, you only need the Beam to run it. Once you've built your project, you don't need Elixir anymore exactly like java/javac. C and rust compile to machine code so don't have a runtime dep, but otherwise they still require you to have a compiler at build time, just like elixir.
reply
I genuinely needed that laugh. Thank you
reply
You make me laugh as well, all is good.
reply
But then you have all the Erlang libraries for free which is huge. And you add to them the Elixir libraries and that gives you a lot of stuff, just like you get with languages with rich libraries e.g. Java, Ruby, ... I find it reassuring.
reply
To be fair, there is more than just print debugging. You have access to tools like red(x)bug https://github.com/nietaki/rexbug, the Elixir-LS project has Debug Adapter Protocol support. And in my opinion, the REPL (and decent software architecture) makes it easy to investigate your code by just running the functions as needed (even if your live production system if you want).
reply