If you've never heard of Alan Kay, you've at least heard of his famous quotes. For example, this statement from 1971:
The best way to predict the future is to invent it.
The best way to predict the future is to invent it.
Alan has a very bright career in computer science. He received
In our
About software development
Alan Kay believes that the computer revolution is yet to come (
the problem is weak, poorly scalable ideas and tools, laziness, lack of knowledge, etc.
This situation is well described
What Andy giveth, Bill taketh away
Andy gave, Bill took
Andy Grove, CEO of Intel, and Bill Gates, then CEO of Microsoft.
Improving the current state of development was the goal of the research project
In his eye-opening report
Alan considers the Internet, TCP/IP protocols, LISP interpreters,
He calls the Internet (TCP/IP) one of the few large-scale software projects that has been properly designed, and its level of complexity is in balance with the level of complexity (complication vs. complexity). With less than 20 lines of code, this project runs like a living, dynamic system capable of supporting billions of nodes, and has never been shut down since it was first launched in September 1969. We just stopped considering the Internet as a normal software project created by people:
The Internet is so well designed that many view it as a natural resource, like the Pacific Ocean, rather than a product of human labor. When was the last time we saw technology that was so stable, crisp and error-free? By comparison, the Web is bullshit. The web was created by amateurs.
About object-oriented programming
The first thing that interested me was his
I thought of objects as something like biological cells, and/or individual computers on a network that can only communicate through messages.
and experience in mathematics:
My experience in mathematics made me understand that each object can have several algebras, they can be combined into families, and this can be very useful.
Ideas for late binding and powerful LISPa meta features:
The second phase is understanding LISPa and using that understanding to create nicer, smaller, and more powerful structures and later binding.
And soon Alan began to support the idea that dynamic languages are
Late-binding makes it easier to incorporate ideas that come later in the development process into a project (compared to earlier-binding systems like C, C++, Java, etc.)
And the potential for changes on the go and faster iterations:
One of the key ideas is that the system must continue to work during testing and especially during changes. Even major changes should be incremental and take no more than a split second.
which is missing in
If you're using early-binding languages, as most do, then you're locking yourself into what you've already written. It's not easy to reformulate.
Surprisingly, his thoughts on OOP were limited to this:
OOP for me is messages, local hold and protection, state hiding and late binding of everything. This can be done in Smalltalk and LISP.
And nothing about inheritance. This is not the OOP
I'm sorry that a long time ago I used the term "object" for this topic because it causes a lot of people to focus on the lesser of the ideas.
The big idea that modern statically typed OO languages lack:
The big idea is "messages"
He believes that the focus should be on messages, loose coupling, and module interaction, and not on the internals of an object:
The key to creating good scalable systems is to work out how modules communicate, not to work out their internal properties and behavior.
Static-typed languages seem to him
I'm not against types, but I don't know of any type system that doesn't cause pain. So I still like dynamic typing.
Several popular languages today use Smalltalk's message passing ideas, late binding, and the construct
Destroy everything and create something better
Alan has an interesting theory about the development of computer science:
It seems to me that there is only one type of computer science, and that science is like building bridges. Someone builds bridges, and someone destroys them and creates new theories. And we need to keep building bridges.
About LISP
Alan Kay considers Lisp
the best programming language of all time
And that every graduate in computer science should study it:
Most people getting degrees in CS don't understand the importance of Lisp. Lisp is the most important idea in computer science.
About the right atmosphere and context
He often recalls the unique atmosphere in
Point of view gives 80 IQ points.
Alan Kay says:
The ARPA/PARC story demonstrates how a combination of vision, modest funding, the right context and process can magically produce new technologies that not only impact civilization, but create tremendous value for society.
And it is true.
- Laser printers
- Object Oriented Programming / Smalltalk
- Personal computers
- Ethernet / distributed computing
- GUI / computer mouse / WYSIWYG
And in
PS
Source: habr.com