From these slides:
- Steal from mathematics
- Types are not classes
- Functions are things
- Composition everywhere
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.
It’s an odd failing of incredibly smart people that their needs are the same as everyone else’s. It seems to be very common (maybe dumb people make the same mistake as well, but you just don’t notice it as much)
On the Erlang mail list, four years ago, Erlang creator Joe Armstrong posted this:
In Concurrency Oriented (CO) programming you concentrate on the concurrency and the messages between the processes. There is no sharing of data.
[A program] should be thought of thousands of little black boxes all doing things in parallel – these black boxes can send and receive messages. Black boxes can detect errors in other black boxes – that’s all.
Erlang uses a simple functional language inside the [black boxes] – this is not particularly interesting – any language that does the job would do – the important bit is the concurrency.
On the Squeak mail list in 1998, Alan Kay had this to say:
…Smalltalk is not only NOT its syntax or the class library, it is not even about classes. I’m sorry that I long ago coined the term “objects” for this topic because it gets many people to focus on the lesser idea.
The big idea is “messaging” – that is what the kernal of Smalltalk/Squeak is all about… The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be. Think of the internet – to live, it (a) has to allow many different kinds of ideas and realizations that are beyond any single standard and (b) to allow varying degrees of safe interoperability between these ideas.
If you focus on just messaging – and realize that a good metasystem can late bind the various 2nd level architectures used in objects – then much of the language-, UI-, and OS based discussions on this thread are really quite moot.
Of course, being the industrious hackerz that they are, they could just write this damn thing from scratch using an uber-powerful language that’s supposed to make them 100 times more productive than the lame-ass language they’re forced by their pointy-haired boss to use, right? Wrong. Libraries. Libraries. Libraries. For most programming tasks, if the appropriate libraries aren’t available, then there is no plausible way that you could just ‘roll your own’ from scratch. Even uber-hackerz must stoop down to using whatever inferior language has the appropriate libraries for their programming task.
Again, here are the 4 words I would use when describing the essence of Computer Science, in order of significance:
- Automating Abstractions
- Implementing Automated Abstractions
- Efficiently Implementing Automated Abstractions
Note that I purposely didn’t use either the word ‘computer’ or ‘science’ in my summaries, since I don’t think they properly embody the essence of the field.
Which sort of Linux user is systemd good for, exactly? The desktop/workstation user? That battle is over – the future Linux desktop/workstation users are the ones who are comfortable with the command line, and that market will neither grow nor shrink, it will remain the niche that it is. And they don’t need systemd. The average joe? There is no hope and that was never clearer than it is today. People who need a real computer use Mac, Windows, or perhaps Chromebook. People who don’t use a tab. And, incidentally, Chromebooks and most tabs run Linux – but they don’t run systemd and don’t need to.
C is to developers what Latin and Ancient Greek are to linguists.
“Linus has this bad habit of fixing security holes quietly,” said Cox. “This is a bad idea as some people read all the kernel patches to find the security holes.”