Welcome to the pages of
Trygve M. H. Reenskaug

Trygve's picture

The first Norwegian computer, Nusse, started doing useful work in 1953. It was outdated by the time I got to write my first programs on it in 1957. Next computer was the Swedish FacitEDB that for a short time was the world's fasted computer. My team used it to create Autokon, a CAD/CAM system for shipbuilding. Development started in 1960 and it was first deployed at Stord Verft in 1963. It had a database-centric architecture and a form of end user programming. Autokon was probably the first software-as-a-product and it was bought by most of the world's major shipyards running on their different computers. There is no trace of this project here because I have transferred all my documentation to the Norwegian Museum of Science and Technology.

PP - Personal Programming

Every person and every thing will be connected through a global communication network to form a single, global machine. Its center is nowhere because the machine is globally distributed without a physical center. Its center is everywhere because every user perceives themselves as being in the center of a global machine that is ready obey their Personal Program.

I am in my 88th year. My great great grandfather planted an apple tree when he was 93. He was very particular about the kind of apples he wanted. His family pointed out that it would be 10 years before his chosen tree would give its first fruit. My great great grandfather could not see the relevance of this argument. So I follow a family tradition when I happily continue working with PP. I will post any results as they appear. Just in case.

SRE - Squeak Reverse Engineering

Squeak is an open-source Smalltalk programming system with fast execution environments for all major platforms. It is a universe of objects and nothing but objects. They are under the control of a Smalltalk virtual machine that is a combination of an interpreter and a runtime system. Smalltalk includes functionality that is normally found in IDEs, applications, programming languages with their compilers, and operating systems. The universe of objects includes objects that represent a variety of things such as applications, numbers, strings, dictionaries, text editors, classes, compilers, stack frames, methods, and graphical elements. A Smalltalk object has a unique and immutable identify; its oop. An object encapsulates state and behavior; state in its instance variables and behavior in its methods. The SRE tools are used to analyze the living universe by documenting various projections of the complex object structure in the universe of objects.

DCI - A new Role Based Paradigm for specifying collaborating objects

The BabyUML project started with the need for a new programming paradigm and the assumption that this paradigm could be based on UML. This assumption did not prove fruitful, and there was no UML left when the project reached its goal in 2008. The new DCI programming paradigm had been developed and is illustrated with several examples together with an experimental BabyIDE interactive programming environment. This marked the fulfillment of the BabyUML goal and the beginning of the maturation of the DCI paradigm. The early results are very promising and a growing community centered around its mailing list at squeak-dev@lists.squeakfoundation.org is taking DCI forward. James Coplien (COPE) has a DCI experimental programming language he calls trygve (Thank you, Jim). Controlled experiments show that this language leads to significantly more readable code when compared to Java. Other initiatives have applied DCI to real-life projects with similar results.

BabyUML - A New Discipline of Programming

The BabyUML project has been succeeded by the DCI project with its BabyIDE programming tool.

I want increased confidence in my programs. I want my own and other people's programs to be more readable. I want a new discipline of programming that augments my thought processes. I create and explore a possible discipline in my BabyUML project. I select, simplify and twist UML and other constructs to demonstrate how they help bridge the gap between the objects running in my computer and me as a programmer. The key is to let my code explicitly specify three important aspects of my programs: What are the objects, how are they linked, and how do they collaborate to realize their goals. The goal was to close the chasm between the compile time classes and the runtime objects.

The BabyUML project is completed. The expected legacy from UML did not materialize. The new results have their roots in OOram and Traits; there is almost no trace of UML. It is time to move on to a new project. It is called the BabyIDE project.

A study of a UML-VM

The UML definition document specifies a set of well-formed object structures. Each of these structures is a valid UML model. I wanted to see at least a few of these objects and implemented a rudimentary UML Virtual Machine. Somewhat to my surprise, the objects were very similar to Java, Smalltalk, and XML objects describing the same phenomenon.

UML Static Infrastructure

I created some package and class inheritance diagrams for my own use. I keep a large print on my office wall. It is covered with a plastic sheet so that I can use it as a whiteboard. I find it very useful and it was well worth the effort to create it.

OORAM Role Modeling

Roles represent objects that interact to achieve some purpose. For thirty years I have tried to get them into the into the main stream, but have not succeeded. I believe the reason is that mainstream programming languages are class oriented rather than object oriented. So why model in terms of objects when you cannot code them? And why model at all when you cannot keep model and code synchronized?

My current project, BabyUML, binds all together into a composite code using different languages to code different aspects of the systems: algorithms coded as classes + declaration of semantic model + coding of object interaction as role models/collaborations.

See almost any of the documents in this site or read my book about role models. It is now out of print, but you can download a draft version here 1996/book/book11d.pdf

MVC: Model-View-Controller

I created the Model-View-Controller pattern as an obvious solution to the general problem of giving users control over their information as seen from multiple perspectives. MVC has created a surprising amount of interest. Some texts even use perverted variants for the opposite purpose of making the computer control the user. I have collected some relevant papers including my original technical note from Xerox PARC.


Prokon: Distributed Components Mapping

The goal of most of my work throughout my career has been to create systems that optimally combine human insights, experience and imagination with the computer's speed, accuracy and capability for managing large sets of data. The perspective has been to view the enterprise as a sociotechnical system and to firmly anchor the computers with their data and programs in the line organization rather than in some staff function such as an EDP department. The logical consequence is an IS architecture of distributed communicating components.


Old documents sorted by year

This web site has existed for many years and evolved whimsically, like many a long lived application program. I have reorganized it and collected some documents and talks from 1970 and onwards in this page. Older stuff from 1960 and onwards is lost forever.

Read .PDF documents with Adobe Acrobat Reader. Download from the Adobe web site here.