By Jim Coplien
Though it’s called "object-oriented," C++ programming tends to be rooted in classes rather than objects. And while you can do OO programming in C++ if you work hard enough, some languages like Java make it almost impossible. While it’s likely that Dahl and Nygaard understood real OO, their Simula 67 language was limited in its expression of those ideas. Alan Kay later made the OO vision more concrete, named it, and even reduced much of it to practice around 1970. However, as Smalltalk evolved it became increasingly class-oriented. At one point Kay said that they should burn all the Smalltalk tapes and move on, but the world had fallen in love with itself and its preoccupation with classes. While a few object-oriented languages like JavaScript survived, most languages took the class direction.
Kay’s Vivarium started to take OO in the direction of emergent system behavior. While suitable for social phenomenæ like the Internet, it gives pause when considering Tony Hoare’s admonition: "I conclude that there are two ways of conntructing a software design: 1. Make it so simple that there are obviously no deficiencies 2. Make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” We’re still stuck with writing programs to deliver to the mental models of businesses and their stakeholders. While Kay took the emergent path, MVC took a human-centric path.
The open sourced trygve language is the world’s first attempt to create a language that faithfully implements the Data-Context-and-Interaction (DCI) paradigm pioneered by Trygve Reenskaug (inventor of MVC, too) and Jim Coplien (who proposed a bit of OO thinking in his Advanced C++ 25 years ago). In this talk we’ll give a glimpse of what OO is all about and talk a bit about how trygve supports it.