5 ms·
After programming in elixir/erlang for ~8 years (for fun and professionally), I have to agree. I've had to dig into the "why" of BEAM a number of times, and I c
by rozap 4y ago
After programming in elixir/erlang for ~8 years (for fun and professionally), I have to agree. I've had to dig into the "why" of BEAM a number of times, and I can't remember ever being disappointed. The decisions that they make might be frustrating at the time ("why does passing a shared sub-binary through a process prevent it from being GC'd") but I always come away from the docs with the understanding of how the design decision was the right one in the context of the larger system, which is very pleasant. They just took a handful of requirements around concurrency and fault tolerance, and all decisions logically followed from those. BEAM is not good at everything, but it is good at the things it wants to be good at, which is refreshing.
- 2c2c2c 4y agowhat are the things it is good at?
- lmm 4y agoPresumably, concurrency and fault-tolerance?
- weatherlight 4y agoconcurrency, general purpose computing, excellent developer ergonomics and tooling. Great community.
- alberth 4y ago> general purpose computing As a huge Erlang fan, I’m not certain I’d say “general purpose computing” is a strength of it though.
- anko 4y agoserver side computing is probably my take - it does handle more than that, eg. nerves but server side computing is the big win.
- weatherlight 4y agoPython and Ruby are general purpose computer programing languages. Is there anything they do extremely well that erlang/elixir, can't? From the following: https://www.erlang.org/faq/introduction.html https://www.erlang.org/faq/introduction.html 1 What is Erlang 1.1 In a nutshell, what is Erlang? Erlang is a general-purpose programming language and runtime environment. Erlang has built-in support for concurrency, distribution and fault tolerance.
- julienmarie 4y agoAmazing for: - Web -> Phoenix ( https://www.phoenixframework.org/ https://www.phoenixframework.org/ ) - Parallel data processing (like scrapers, ETLs, etc...) -> GenStage / Flow / Broadway ( https://hexdocs.pm/gen_stage/GenStage.html https://hexdocs.pm/gen_stage/GenStage.html ) - IOT -> Nerves ( https://www.nerves-project.org/ https://www.nerves-project.org/ ) Soon: Mobile Apps -> Elixir Desktop ( https://github.com/elixir-desktop/desktop https://github.com/elixir-desktop/desktop ) ML -> NX ( https://github.com/elixir-nx https://github.com/elixir-nx )
- insane_dreamer 4y agoanother example of Erlang for concurrency -> MQTT server (i.e., https://github.com/emqx/emqtt https://github.com/emqx/emqtt)
- cr4nberry 4y agoWhat kind of product would warrant the cost/benefit of using erlang? Where did you use it? Just curious
- thejosh 4y agoFor Elixir, I really like it for webapps and services. - Ecto (data mapping) is fantastic, really glad they separated the SQL part - Oban is fantastic (job processing) - Liveview is really good. (frontend framework that uses websockets to build realtime apps that doesn't require writing JS (uses JS under the hood though)).
- h0l0cube 4y agoAdd to that the sensible date and time primitives baked into the language as well as the super powerful and ergonomic cldr library for i18n.
- hartem_ 4y agoErlang is really good for programming highly-scalable and fault tolerant distributed systems. It was designed by Ericsson (large Telco manufacturer from Sweden) for running on Telco equipment that has extremely stringent uptime and availability requirements.
- yetihehe 4y agoI'm working on iot cloud to which you can connect millions of devices (to single server) and it's very easily extensible to different device protocols (we make a driver for each device to expose all of them in unified way). Erlang is perfect here, because it can easily support lots of connections with low latency and you don't need to restart anything when you make changes, which makes development much easier.
- lliamander 4y agoThings I would use Erlang for: - embedded systems (network switches, control systems) - middleware (databases, message brokers) - generic web services Why I would use it: - it has a lot of operational support tools to remotely monitor and debug a running production application built into the runtime. - it's not necessarily the fastest language, but it's pretty fast for many things. The thing is, if you program in idiomatic erlang from the start, your application will naturally scale well without having to do anything, and will even handle overload gracefully. - Erlang and Elixir are both well designed and expressive languages with few flaws and intelligently made tradeoffs. It's an enjoyable experience.
- PrayagS 4y ago> After programming in elixir/erlang for ~8 years Are Elixir and Erlang very similar? Do they belong to the same family?
- owyn 4y agoElixir compiles to bytecode for the Erlang VM (BEAM). I would put it in the same relationship category as Clojure and Java or Kotlin and Java. Different language but there's a lot of synergy in the libraries/ecosystem/etc. If something goes wrong in your Elixir application it would be a really good idea to understand Erlang and BEAM.
- macintux 4y agoI can't speak to Kotlin, but Clojure : Java :: Elixir : Erlang doesn't seem like a great analogy. Clojure and Java have very different philosophies, while Elixir has virtually identical semantics to Erlang.
- transfire 4y agoKotlin : Java :: Elixir :: Erlang Clojure : Java :: LFE : Erlang