“Every system is a distributed system” has become a common catchphrase among distributed system theoreticians and distributed database vendors…and they’re right. What hasn’t become common are actionable discourse about what this concretely implies for real-world systems, and how it differs from the status quo. Drawing inspiration from and parallels with some of the lessons learned from our collective migration towards functional programming languages and data-orientation, I will attempt to provide part of one such discourse.
Facebook's React is an interesting approach to UI programming in the browser that does away with manual DOM manipulation all together, and more closely resembles classic UI programming. Combine this approach with the immutable data structures of Clojurescript, and we're really getting somewhere.
In this talk I will explore the path to fully functional UI programming in the browser through React, Clojurescript, Om (React for Clojurescript) and other tools.
Nygaard and Dahl invented Simula’s classes and objects to master complex problems. Alan Kay coined the term ‘object orientation’ with its networks of communicating objects to facilitate simple and powerful mental models. His goal was to make computers and programming comprehensible to everybody. Mainstream programmers missed the importance of communication in Kay’s OO and misused the term. Their much weaker approach is better called ‘class orientation’.
I have extended Kay’s original OO with explicit concepts and code that specify how objects interact at runtime. With the DCI (Data-Context-Interaction) paradigm, programmers can reason about their code, new team members get quickly up to speed, maintainers lead a better and more productive life. The DCI Context is a new abstraction that supplements the commen class. While a class says everything about the inside of an object and nothing about the objects surrounding it, a DCI Context says everything about a network of communicating objects and nothing about their insides. The class is great for describing autonomous objects such as the domain objects in the Data part of DCI. The DCI Context is great for describing how use cases are realized by networks of communicating objects. Communication is now a first-class citizen of programming!
Trygve Reenskaug is professor II emeritus of informatics at the University of Oslo. His retirement project is a new programming paradigm that separates the code for system behavior from the code for system state.
Trygve has been a programmer since 1957. He has extensive teaching and speaking experience including keynotes, talks and tutorials. An important part of his career has been software engineering R&D for industrial strength software products. His firsts include end user programming, structured design, and data base oriented architecture from 1960; object oriented applications from 1973; Model-View-Controller in 1979; OOram role modeling method and tool from 1983; and the premier book on role modeling in 1995.