The more I learn about Smalltalk, the more I realize what a foundational language it was. I'm not convinced it it a language that really deserves widespread use today. Newer languages have improved upon most of its features in one way or another. However, a lot of modern programming originated with Smalltalk. Here's a sampling:
Some of this is the language, a lot of it is the community. Things like XP, Unit Testing, Refactoring, and CRC cards are all obviously community creations. However, even some of what we usually consider language features come from the community. In Smalltalk a huge amount of what is enforced by languages today is done through convention. Smalltalk has objects and inheritance but there is no sense of an interface in the language. There is no support for abstract classes. Yet most of the design patterns originated in the world of Smalltalk.
Why is this? I'm not certain. At the time, all other languages (other than Simula) were procedural. Smalltalk was the only one that was object oriented. The world didn't really tune in to objects until at least a decade after Smalltalk took off. It's long been said that a programming language influences the way you think. Perhaps that is what happened. Maybe in order to come up with extreme programming, you need to be freed from the ways of procedural language.
Why do you think all of these inventions came from this relatively small community? I'd love to hear your thoughts.