Model-View-Controller was first described by Xerox PARC researchers working on the Smalltalk programming language in the late 1970s and early 1980s. Smalltalk was an object-oriented, dynamically typed, reflective programming language. Its first use was in the realm of educational learning, and it differed from mainframe data and control structures in that Smalltalk programs involved:
Windowed user interfaces
Object-oriented programming concepts
Passing of messages between object components
The ability to monitor and modify their own structure and behavior
In the Smalltalk world, the model knew nothing about the controllers or the views that worked with it. The model could be observed by the view and manipulated by the controller, but other than that, the model simply represented the problem domain. Whenever the model changed, it fired off messages to the views, so they could update themselves. Views themselves were subclasses of an existing View class that knew how to render what you wanted to render. For example, if you wanted to draw a rectangle or a circle, you'd subclass an existing class for the appropriate rendering. Controllers, in the Smalltalk world, were originally conceived as being very thin, providing a means of sending messages to the model.
This is not a book on Smalltalk, but Smalltalk's impact on modern computing in general and programming in particular can't be overstated. The Macintosh, Windows, and X Windows development efforts have ...