For the past 20 years programmers have been happy solving problems through the methods and data of classes. Though they call it object-oriented programming there are few of them who ever think in objects, and fewer who actually write objects. Even design is dominated by class diagrams, whether informally written on whiteboards or cast in UML, and nary an object diagram is ever seen. The distinctions are crucially important, as Alan Kay named object-orientation for theobjects that represent the operational models that our brains combine to solve problems. Problem-solving is about understanding a network of interacting objects. Yet with contemporary polymorphism we can’t even say much about the makeup of an object’s neighbor (by design!), let alone what it’s going to do when we send it a message. The trygve programming language strives to restore a more fully object-oriented mindset by expressing how processing flows through a network of cooperating objects. You can read these flows in the source code, which means that you can reason about use cases and system state in an object world, rather than focus on isolated object state in a class world. Thus, trygve programs can more fully express the business mental models that we deliver for value in use cases. Code that is understandable is less likely to have bugs and is more likely to be maintainable than code whose distribution across classes defies comprehension.
This talk will give a brief introduction to the Data, Context and Interaction (DCI) paradigm behind trygve and will illustrate its power through the trygve language. Attendees are invited (for fun) to download the trygve environment from GitHub (jcoplien / trygve) and play with it before (or after) the seminar. Joint work with Trygve Reenskaug, Prof. Emeritus, University of Oslo. Jim Coplien is an early C++ guy and, though he was one of Denmark’s first Certified Scrum Trainers and continues to do a lot of Scrum work, he still writes code.