O'Reilly logo

Professional CodeIgniter® by Thomas Myer

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

1.3. A Brief History of MVC

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required