5 ms·
One sort-of exception is Erlang (and anything else that runs on the BEAM vm, like Elixir). It doesn't match Alan Kay's vision exactly, because the message passi
by Rendello 5y ago
One sort-of exception is Erlang (and anything else that runs on the BEAM vm, like Elixir). It doesn't match Alan Kay's vision exactly, because the message passing is done a bit differently (for example it's asynchronous), but creator Joe Armstrong called it something like "the best of functional programming and OOP".
If you come from C++, Java, or other "OOP" languages, and look at Erlang, it's completely different than what you expect. In Erlang, the "objects" are less like mutable structs and more like functional mini-programs that can create new programs, pass messages, and fail as you would expect.
To get some perspective on both of their perspectives, here's "Joe Armstrong interviews Alan Kay":
https://www.youtube.com/watch?v=fhOHn9TClXY https://www.youtube.com/watch?v=fhOHn9TClXY
- Lammy 5y ago> for example it’s asynchronous Ruby also lets you build programs like this as of 3.0, using Ractor#send / Ractor::receive https://docs.ruby-lang.org/en/master/doc/ractor_md.html#label-Communication+between+Ractors https://docs.ruby-lang.org/en/master/doc/ractor_md.html#labe... It’s still pretty new so a lot of the Gem ecosystem hasn’t caught up yet (e.g. C extensions need to be explicitly opted-in as Ractor-safe), but I built a new “MIME::Types” library replacement with it recently and have enjoyed very few teething issues: https://github.com/okeeblow/DistorteD/blob/NEW%E2%80%85SENSATION/CHECKING%20YOU%20OUT/lib/checking-you-out/ghost_revival.rb#L363 https://github.com/okeeblow/DistorteD/blob/NEW%E2%80%85SENSA...
- dllthomas 5y ago> Joe Armstrong called it something like "the best of functional programming and OOP". Though IIUC Armstrong only started doing that after others pointed out that it was OOP.