4 ms·
If you're interested in E and Object Capabilities (ocaps) in general, I highly recommend reading this essay: https://web.archive.org/web/20190423063056/http://
by anaphor 7y ago
If you're interested in E and Object Capabilities (ocaps) in general, I highly recommend reading this essay:
https://web.archive.org/web/20190423063056/http://habitatchronicles.com/2017/05/what-are-capabilities/ https://web.archive.org/web/20190423063056/http://habitatchr...
I found it really enlightening, and it isn't an exaggeration to say that learning about ocaps kind of changed the entire way I look at building or using software.
To my knowledge, E (and similar languages like Monte and Pony), are basically the embodiment of what Object-Oriented Programming was supposed to be.
You may have heard about how the actor model is really OOP in its purest form, because it's really all about passing messages between isolated objects or processes. The creator of Erlang (Joe Armstrong) even said something about how Erlang was at its heart really object-oriented[1].
This is what languages like E, Monte, and Pony are trying to encapsulate and design the entire language around. This idea of isolating everything, and controlling access purely by controlling how references to other pieces of data are shared amongst said isolated processes.
Why is this so important?
Because we're building programs more and more to be distributed. Users expect that they will be able to easily and securely share things with each other, and be able to collaborate in a distributed way. This is exactly what tools like google drive, slack, twitter, and so on are all trying to do, and most of them do it badly in my humble opinion. Nobody wants to spend hours managing permissions and access roles on a whole suite of services.
The model that languages like E are built on solves that problem and makes it trivial to manage access and permissions at a ridiculously fine-grained level.
[1] https://www.infoq.com/interviews/johnson-armstrong-oop/ https://www.infoq.com/interviews/johnson-armstrong-oop/
Salient quote from above
> Then, my thesis supervisor said "But you're wrong, Erlang is extremely object oriented". He said object oriented languages aren't object oriented. I might think, though I'm not quite sure if I believe this or not, but Erlang might be the only object oriented language because the 3 tenets of object oriented programming are that it's based on message passing, that you have isolation between objects and have polymorphism.
- abecedarius 7y agoThat's a great intro. I also blame E for teaching me to appreciate objects. (Or rather, from hanging out in the cluster of related mailing lists back when it was in development.) I'd long held the opinion that OO programming had its uses but was kind of ugly and arbitrary and overhyped, especially compared to functional programming -- on opinion that's more popular nowadays. There's still a need for a really good accessible book on these ideas; Mark Miller's PhD thesis is not going to be it, worthwhile as it is.