I love to watch Alan Kay videos so I reviewed his Oopsla talk titled The Computer Revolution Hasn't Happened Yet.
In this video, Alan Kay talks about his vision of object oriented programming and how to design scalable systems.
00:00:40
Title slide.
00:00:50
Alan Kay starts the talk.
00:02:40
25th anniversary of Smalltalk.
00:05:10
Doing with images makes symbols.
00:05:52
Arrogance in computer science is measured in nano-Dijkstras.
00:06:58
Dijkstra once wrote a paper with the title On the Fact That the Atlantic Has Two Sides. Alan wrote a rebuttal paper called On the Fact That Most of the Software Is Written on One Side of the Atlantic.
00:08:50
Debugging goes on in math as well, not just programming.
00:09:09
In programming, there has to be some exquisite blend between beauty and practicality. There's no reason to sacrifice either one of those and people who are willing to sacrifice either one of those don't really get what computing is all about.
00:10:35
When I made up the term object oriented, I did not have C++ in mind.
00:13:06
Programs in the 60s were quite small and had a lot in common with their mathematical antecedents. One way of thinking about the semantics of math that is based on logic is as interlocking gears. If everything fits together and is compatible at the end, you get the final turning of the shaft.
00:13:42
Analogy of the programs of the 60s is a dog house. You can make a dog house out of anything.
00:16:42
In OOP, as complexity starts becoming more important, architecture is always going to dominate material (code).
00:18:07
Progress in a fixed context is always a form of optimization.
00:19:15
Creative new ideas are outside of the fixed context plane.
00:19:40
Emotional response to terrific ideas comes in three forms.
00:21:05
When you specialize, you're putting yourself into a mental state where optimization is the only thing you can do. You have to learn many different things in order to switch to other contexts.
00:22:35
Earliest known form of data abstraction going back to pre 1961.
00:23:50
HTML and the Internet has gone back to the dark ages because it presupposes that there should be a browser that understands its formats. This has to be one of the worst ideas since MSDOS. HTML is what happens when physicists decide to play with computers.
00:24:20
Browser wars either demonstrates a non-understanding of how to build complex systems or an attempt to gather territory.
00:26:10
Ivan Sutherland's Sketchpad was the first object-oriented system.
00:27:30
Simula was the first object-oriented programming language.
00:27:55
The choice when you're faced with something new is either take this technological advance and decide that this is a better way of doing the stuff you're doing now and continue on the path you're going, and stay in the same plane, or decide that this is not a better new thing but almost a new thing. With the latter approach, there's a chance of gaining some incredible leverage than simply optimizing what can't be optimized very much.
00:28:40
Was Simula a better old thing or almost a new thing? (todo: find the answer)
00:29:38
James D. Watson made an assay of the Ecoli bacteria in 1965.
00:30:31
In an Ecoli bacteria, 120 million components of the total size of 120GB interact with each other in an informational way.
00:33:40
An Ecoli bacteria is 1/500th the size of cells in our bodies, which have 60 billion components and there are 10^12 or 10^13 cells in our body.
00:35:05
Compared to molecules, computers are slow, small, and stupid. How do we get them to realise their destiny?
00:36:10
How do we build computers so that they scale by a factor of trillion like cells?
00:37:20
Comparing a cell to an object oriented system, the membrane is there to keep most things out as much as it's there to keep certain things in. (What does that mean?)
00:38:10
Japanese have the word "ma" that is the stuff in-between the objects, it's the stuff we don't see. (What does that mean?)
00:39:40
Make objects to be whole computers rather than partitioning up your design space and give users access to limited functionality. This is what all programming languages get wrong.
00:41:00
People doing time sharing systems and Unix had figured this out. What you want to give a person on a time sharing system is an environment that is just like the physical computer itself. The biggest problem is that creating a process takes thousands of bytes so you can't have something very small, such as the number 3 to be a virtual machine.
00:43:15
Every object should be a virtual server and have a URL and an IP.
00:44:07
It's easy to construct software but it's hard to grow software. A baby grows 6 inches a year and you don't need to take it down for maintenance but you can't grow Boeing 474 as its design is fixed.
00:45:10
How many people here still use a language that forces you compile and reload to make changes?
00:45:30
Edit, compile, reload is a dead end for building complex systems because much of the building of complex systems will go to trying to understand what the possibilities for interoperability is with things that already exist.
00:46:20
Arpanet, after becoming the Internet, since the day it started running in 1969 to this day has expanded by a factor of 100,000,000, and as far as I can tell there's not a single atom in the Internet today that was in the original Arpanet, and there's not a single line of code in the Internet today that was in the original Arpanet. The Internet is a system that has expanded by 100 million, has changed every atom and every bit, and has never stopped. This is the metaphor we absolutely must apply to smaller projects. When you think programming is small, that's why your programs are so big.
00:48:00
The other greatest language of the 60s along with Simula with as many profound or more profound insights is Lisp. In Lisp's programming manual, on page 13, there's a half page of code which is the reflective model of Lisp written in itself. It's the Maxwell's equations of programming.
00:49:00
How could a programming language possibly survive all the changes, modifications, adaptations, and interoperability requirements without a meta-system and without being able to load new things at runtime? It represents a real failure of people to understand what the larger picture is and is going to be.
00:50:10
The more the language can see its own structures, the more liberated you can be from the tyranny of a single implementation. This is one of the most critical things that very few people are worrying about in a practical form.
00:51:30
It's unlikely that one or more large companies will be able to capture the Internet as it's too big and people are going to be sophisticated enough to realize that a solution from one company is neither called for nor possible.
00:52:10
The whole point of not being able to see inside an object is that any object oriented language can internalize its own local pointers to objects in the world, regardless of where they were made. Semantic interoperability is possible immediately by just taking this stance.
00:53:30
Objects will need to discover what they can do and that will lead to a universal interface language that allows an interchange of deep information of what objects can do.
00:54:05
The Art of Metaobject Protocol is the best book written in the last 10 years but it's hard to read.
00:55:20
Abstract data types in the 1970s made people stay in the pink plane as it was just an improvement of assignment-centered way of thinking about programming.
00:57:20
I don't know who discovered water, but it wasn't a fish! Here fish is us and water is our belief structures, as our context.
00:57:50
If you had to pick one cause of particular difficulty in programming and also general difficulty in the human race, it's taking single points of view and commiting to them like they are religions.
00:58:15
Every idea goes through three states. First, it's denounced as an idea of mad man, then later it's remarked as being totally obvious the whole time, and the last stage is when the original denouncers claim to have invented it. This is when the idea gets in its religious stage.
00:58:50
When Smalltalk came out of Xerox Parc it quit changing because it went commercial. Before that Smalltalk was a great vehicle for bootstrapping the next set of ideas about how to do systems building and creating new versions of itself.
01:00:00
We don't know how to design systems yet so let's not make what we don't know into religion. We have to have our systems let us get to the next levels of abstraction as we come to them.
01:01:00
Squeak gives the world a bootstrapping mechanism for creating something much better than Smalltalk. When you fool around Squeak, think of how you can obsolete itself by using its own mechanisms for getting the next version of itself.
01:01:30
Look for the blue thoughts.
01:03:30
The way to stay with the future as it moves is to always play your systems more grand than they seem right now.
Reviewed by team Browserling
This Alan Kay video was reviewed by me and my team at Browserling. We watch new videos every week to get better at programming and improve our product. Browserling itself is an online cross-browser testing service powered by alien technology. Check it out!
Secret message: If you love my video reviews, then I love you, too! Use coupon code VIDEOLING to get a discount at my company.