3 ms·
For those who actually want to learn languages which are "fundamentally changing how you think about software", I'd recommend the Lisp family and APL family.
by userbinator 1y ago
For those who actually want to learn languages which are "fundamentally changing how you think about software", I'd recommend the Lisp family and APL family.
- zwnow 1y agoI'd also throw Erlang/Elixir out there. And I really wished Elm wasn't such a trainwreck of a project...
- matu3ba 1y agoWhat is the most optimal Erlang/Elixir you can think of regarding standardized effect systems for recording non-determinism, replaying and reversible computing? How comparable are performance numbers of Erlang/Elixir with Java and wasm?
- zwnow 1y agoI'd recommend asking the Elixir community about this as I didn't even understand your question. I am by no means a professional with Erlang/Elixir. I threw it out there because these language force you to think differently compared to common OOP languages.
- 59nadir 1y agoNo need to include Elixir here; none of the important bits that will change how you view software come from Elixir, it's just a skin on top of Erlang (+ some standard library wrappers) and that's it.
- zwnow 1y agoI'd argue more people use Elixir over Erlang at this point. Sure its just an abstraction on top of Erlang, but people learn through Elixir nowadays, not through Erlang.
- 59nadir 1y agoIf you want to learn the actual mind changing aspects of the BEAM, clearly learning the simpler, smaller language with a more direct route to the juice is the way to go. Hence Erlang, not Elixir. I learned Elixir first back in 2015, and then learned Erlang, and have had the pleasure of using both in production. When all was said and done I really think Erlang was better, especially over a long enough time frame. As a general point I'd like to state that I don't think it really matters what "people" do when you're learning for yourself. In the grand scheme of things approximately no one uses the BEAM, but this doesn't mean that learning how to use it is somehow pointless.
- fuzztester 1y ago>actual mind changing aspects of the BEAM What are those aspects? newb to this area.
- 59nadir 1y agoA few key things: - Leaning on a pre-emptive scheduler to maintain order even in the presence of ridiculous amounts of threads ("processes" on the BEAM) running - Using supervision trees to specify how and when processes and their dependents should be restarted - Using `gen_server` processes as a standard template for how a thread should be running There's more to mine from using the BEAM, but I think the above are some of the most important aspects. The first two I've never found to be fully replicated anywhere other than in OTP/BEAM. You don't need them, but once you're bought into the BEAM they're incredibly nice to have.
- fuzztester 11mo agoThanks.
- miki123211 1y agoAm I correct that you can essentially "learn APL without learning APL" by just learning Numpy / Pytorch? I looked at array languages briefly, and my impression was that"ooh this is just Numpy but weirder."
- veqq 1y agoNot even close. While Numpy has many similar operations, it lacks the terseness, concepts like trains and forks etc. Modern APL style doesn't use... control flow (neither recursion nor loops nor if...) and often avoids variables (tacit/point-free style).
- benji-york 1y agoYou might enjoy this video: https://www.youtube.com/watch?v=a9xAKttWgP4 https://www.youtube.com/watch?v=a9xAKttWgP4
- pjmlp 1y agoAnd Prolog as well.
- fuzztester 1y agoAnd Forth. And 6502 assembly. ;) And SNOBOL. And Icon. And ...