Hacker News new | ask | show | jobs
by adamors 1545 days ago
I feel like this is an issue with all superset languages or however you want to call them and should be taken into account by anyone learning one of these.

You can't really learn Elixir without also learning _some_ Erlang, you can't really learn TypeScript without learning some Javascript, you can't really learn Clojure without picking up some Java. The platform/base language is abstracted away to some extent but not completely.

It's especially visible when trying to use libraries used in the platform language.

2 comments

> You can't really learn Elixir without also learning _some_ Erlang

I'd argue that you end up learning a good bit about OTP, Erlang's standard library, and some stuff about the VM but very little Erlang in practice. Although if you know about BEAM, and some of the standard library there isn't much "Erlang" to learn after that. It doesn't seem to leak into Elixir the way Java does in Clojure, and the surface area of Erlang is smaller than Java anyway.

If you use these superset languages day-to-day you will end up interfacing with the base/platform language at some point.

Just recently I had to figure out why the Elixir Kafka library didn't support something and I ended up using the wrapped Erlang library at the end. Without some Erlang knowledge I would have been completely lost.

I don’t exactly disagree, but what I mean is that in learning Elixir you’ll learn about the BEAM and by the time you need to peek under the hood, it’s just syntax that’s different mostly.
Yeah Erlang idioms are what make Elixir so powerful, but you basically don't have to touch actual Erlang. I've messed around, just because I felt like I should have some appreciation for the work Erlang developers put in, but the Elixir wrappers are good enough it's almost never necessary. Even if you need an Erlang library, you're just calling the functions and the docs are usually pretty good.
I've been happily using Clojure for about 9 years and hardly ever have I needed to dip into any Java code. That's not to say I can't grok Java if I need to. Compared with the monstrosity that is Gradle deps.edn is a breath of fresh air.