8 ms·
A History of Erlang (2007)
- deleted 7y ago[deleted]
- mycall 7y agoI don't understand why people don't like Erlang so much [1]. It has many excellent features and the runtime stability is unmatched. [1] https://www.codementor.io/blog/worst-languages-2019-6mvbfg3w9x https://www.codementor.io/blog/worst-languages-2019-6mvbfg3w...
- imglorp 7y agoAll true, plus other advantages, but I think there are some business requirements that prevent adoption. The syntax and runtime model are unfamiliar and there aren't enough users to get dependable critical hire biomass on a new project. Lots of management would rather have a lot of average, commoditized labor than a little rare, elite few. It's especially tragic because we keep repeating the same mistakes and discoveries over and over that OTP+Erlang solved ages ago. Eg most environments are still dinking around with clumsy hacks to help with GC and concurrency issues.
- cpach 7y ago“Lots of management would rather have a lot of average, commoditized labor than a little rare, elite few.” Very well put and probably very true.
- lostcolony 7y agoIt is. Management will invariably say "We want the best!", and they may even pay comparable to FAANG levels, but when it comes to language/runtime, it's "We need to be consistent" and "We need something we can hire for". Meaning even if management understands that a language/framework can be a competitive advantage, they will still be optimizing for lowest common denominator.
- rukittenme 7y agoI like erlang. But erlang's syntax doesn't do it any favors. Might as well use elixir. Still the beam. I also don't think the beam's benefits are necessary for the vast majority of software which makes it perma-niche. "Why use erlang when I can use python, a database, and a distributed task queue?" I also really like Elm so I was sad to see it in the poll position, but I also don't base my language choices off of someone's blog.
- PopeDotNinja 7y agoThe more I've played with Erlang, the more I've liked its syntax. What I don't like is dealing w/ strings in Erlang.
- salimmadjd 7y ago100%! I actually prefer it now over elixir. Once you get to use it and spend a few weeks working with it, it becomes so expressive and it feels so clean to read and understand.
- macintux 7y agoUnfamiliar syntax is not the same as bad syntax. Erlang’s syntax is much simpler than Elixir’s, and generally more concise.
- crusso 7y agoI guess it depends upon what you mean by "unfamiliar". Erlang's syntax is unnecessarily divergent from a lot of mainstream languages. So much so that it makes it more difficult for mainstream developers to get into. Elixir was modeled after Ruby for a reason. That reason was Ruby's very approachable and intuitive syntax.
- deleted 7y ago[deleted]
- lostcolony 7y ago
- WilliamEdward 7y agoIt's gaining a good track record because big industry giants are using it, but it's hard to force functional languages on people. The majority of people will learn OOP for a number of reasons unrelated to how good it is, while functional is becoming more like a niche artisanal craft.
- dnautics 7y ago> while functional is becoming more like a niche artisanal craft. Well, I mean most boot campers are being taught functional React, so, I think it's hard to justify calling it "niche and artisanal" anymore.
- johnmarcus 7y agoIn me experience using Phoenix, it takes an eternity to compile. I imagine that turns a lot of folks off to begin with.
- 1_player 7y agoEternity? My 50kloc Elixir project compiles about the same time as my 10kloc next.js/React project. I've never noticed any compilation issue on my machine, though it's a beefy one (and still JS takes ages)
- johnmarcus 7y agoTrue when you have all the dependencies already compiled. If you are working with it in Docker though, it needs to compile the whole shebang the first time you start it up. It usually took 3+ minutes to get the day started. And any time an additional library was added to config, had to be restarted again. As opposed to something like go, which compiles in seconds typically. Naturally, different folks will have different experiences depending on how it's used. For myself, the long compile time was a turn off.
- deleted 7y ago[deleted]
- 1_player 7y agoWhat a stupid list that is. Rust, Typescript, Elixir, Haskell, C not worth learning in 2019? If you know zero languages, yeah, go learn Javascript, Python or (ugh) Java. If you know one or more language, the ones listed above are definitely worth your time. You might find it a little hard to make a career out of knowing only Elm, but you might not grow very much professionally without widening your horizons a bit either.
- seagreen 7y agoI've had trouble getting into it because the ergonomics are so incredibly, wonderfully, art-project level rough. For example: $ erl Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [kernel-poll:false] Eshell V9.2 (abort with ^G) 1> 2 + 2 1> 2 + 2. * 2: syntax error before: 2 1> 2 + 2. 4 Note the trailing whitespace(!) after the last `2 + 2. `, necessary for the result to be printed. I was coming from Haskell which has its own very serious tooling and ergonomics problems. Trying Erlang made me realize things could be even worse. My internal model in my head of language designers/promoters is COMPLETELY wrong, I have absolutely no idea how people could spend time promoting languages with such strange tooling to a general audience with any expectation that it will work.[1] [1] Not to say that these languages/tools aren't awesome. Trailing whitespace matters semantically absolutely not at all. But if you're trying to promote a language with meaningful trailing REPL whitespace to a general 2020 audience there is some terrible mismatch between your expectations and your actual chance of success.
- moreoutput 7y agoWhat am I missing here? I see no meaningful white space when running the same logic. I would expect this from any language when expressions aren't properly terminated. Eshell V10.4 (abort with ^G) 1> 2+2 1> 2+2. * 2: syntax error before: 2 1> 2 + 2. 4 2>
- hope-striker 7y agoYep, GP mentions in another comment that they misinterpreted the error.[0] Anyway, Python replaces the prompt ">>> " with "... " if the input is mid-statement, and I suppose it would be nice if Eshell did the same thing. [0]: https://news.ycombinator.com/item?id=22799222 https://news.ycombinator.com/item?id=22799222
- seagreen 7y agoThis whole thread is going in my "Humility" file, not only did I misinterpret the error this one time, I've been messing around at the Erlang REPL putting a space after each command for absolutely no reason <headdesk>.
- callamdelaney 7y agoI actually find Erlangs syntax a breath of fresh air. Coming from Python, this may sound odd, but there's something soothing about it. I much prefer Erlangs syntax to Go, for example. I also much prefer Erlangs syntax to Elixir; I never liked ruby either, so there's perhaps no surprise there.
- thijsvandien 7y agoIt's unfortunate how Elixir splits the ecosystem in a way, simultaneously drawing attention to and away from Erlang. While it should be possible to use (compiled) Elixir code from Erlang—as once demonstrated by Joe Armstrong himself—it's far from pleasant compared to the inverse. At this point, I would be hesitant to use BEAM if I didn't like Elixir (still have to really try, though I can totally see the appeal of Erlang), because it's becoming harder and harder to ignore. To those of you that prefer Erlang, what's your opinion on this?
- waynesonfire 7y agoi completely agree.
- dudul 7y agoAgree. I like that it's very logical and consistent. The way periods and semi-colons sometimes seem a little like anarchy, but there is actually a strong reasoning behind it, very well explained in Joe's book. Elixir brings a lot to the ecosystem, but I personally find the syntax not as pleasant because of all the syntactic sugar that hides a lot of the "real" syntax.
- pjmlp 7y agoMe too, as former Prolog fanboy, I really don't get Elixir hype, other that it provided an escape route for those not wanting to deal with Rails, or its lack of performance due to MRI Ruby not having a solid JIT story and the alternative implementations not being as good running Rails.
- dnautics 7y agoI think this illustrates the power of elixir; You can't do this so easily (and certainly not as featurefully) in erlang: https://hexdocs.pm/zigler/Zigler.html https://hexdocs.pm/zigler/Zigler.html Other things I've done in Elixir that are way easier: implemented a multiverse registry that tracks supervised transient gen_statems in segregated test contexts (so a test only sees gen_statems that have been started in their caller context). Elixir has an opinionated way of tracking caller and ancestors in the supervision and temporal history that are crazy powerful. Thanks to erlang term format, it's also easy to send that information out of the vm (for example into chromedriver and back into the vm via http headers). It's become an accepted standard in the community, and the web drivers, database adapters, and dependency injection/mocking libraries consistently use them. Implemented a virtualization library that seamlessly launches virtual machines with a unified abstraction between locally launched vms and remotely launched vms (there's things that elixir has that make this easier and compile-time checked). It's also got 100% code coverage thanks to Elixir's powerful dependency injection and abstraction capabilities. Implemented compile-time checking of configuration settings that makes 100% sure I don't deploy broken configs to prod; they get stopped at the release stage. But also they get actively code highlighted at the TOML level in vscode, so I don't even have to wait to generate a release. It's dead easy to emit custom file/line information in Elixir's CompileError exception.