Data, context and interaction: Difference between revisions

Content deleted Content added
History: NPOV: don't try to create vague impressions about DCI's role on object-oriented design developments.
Line 81:
Trygve felt it was important to create program structures about which one can reason, and started socializing these ideas as early as 2000. By 2006 he had a working design model, and his discovery in 2008 of Schärli's work on [[Traits (computer science)|Traits]] provided the keystone that would provide natural programming language expression of these ideas. He prototyped the ideas in the Baby programming environment, written in Squeak. Jim Coplien joined Trygve on this effort in about 2007 and by mid-2008 had a prototype running in [[C++]]. Steen Lehmann, Rickard Öberg and Niclas Hedhman accelerated adaptating these ideas to [[Ruby (programming language)|Ruby]] and [[Java (programming language)|Java]] over the next year or so with the Qi4j framework.<ref name="Qi4j" /> Many additional language adaptations followed a session at the JaOO conference in Denmark in September 2008. In 2010 the language Marvin was created by Rune Lund-Søltoft. It was the first language build with native support for DCI. Marvin was mainly meant as a proof of concept to show the case the idea of "injection less DCI". Most of the previous implementations altered the role player objects in a way that would be visible outside of the context. James Coplien created the trygve, the first language build from the ground up to support DCI..
 
Different approaches taken for the evolution of object-oriented programming, both on a language and [[programming pattern|pattern]] level, agree to various degrees with DCI:
Many key advances in the past twenty years of object-orientation exhibit components of DCI. While no one of them fully provides the DCI computational model, the overlap suggests{{according to whom|date=February 2016}} that the problems addressed by DCI are longstanding and fundamental.
* [[Mixin]]s were a way of encapsulating code for specific what-the-system-does functionality in closed form; however, there is no consistent mechanism to link multiple mixins into a unit at the level of a [[use case]]. Mixins are very close to the concept of Role in DCI.{{citation needed|date=February 2016}}
* [[Multiple dispatch]] was an early attempt to more fully separate an algorithm from the objects that were involved in its execution, but it lacked DCI's separation of common recurring algorithms from the code fragments that could individually be localized to individual objects. DCI conceptually leads to broader re-use of a single algorithm in closed form across many sets of objects of widely heterogeneous types. DCI's Context object acts like an explicit, intelligence dispatcher that is analogous to the dispatching mechanisms of languages with multiple dispatch.{{citation needed|date=February 2016}}