Abstract
The persistent difficulty to develop and maintain interactive software has unveiled the inadequacy of traditional imperative programming languages. In the recent years, several solutions have been proposed to enrich the existing languages with constructs dedicated to interaction. In this paper, we propose a different approach that takes interaction as the primary concern to build a new programming language. We present Djnn, a conceptual framework based on the concepts of process and process activation, then we introduce Smala a programming language derived from this framework. We propose a solution for the unification of the concepts of event and data-flow, and for the derivation of complex control structures from a small set of basic ones. We detail the syntax and the semantics of Smala. Finally, we illustrate through a real-size application how it enables building all parts of an interactive software. Djnn and Smala may offer designers and programmers usable means to think of interactions and translate them into running code.
- Kris Aerts. 1999. Visto: A More Declarative GUI Framework. In Computer-Aided Design of User Interfaces II, Proceedings of the Third International Conference of Computer-Aided Design of User Interfaces, October 21--23, 1999, Louvain-la-Neuve, Belgium, Jean Vanderdonckt and Angel R. Puerta (Eds.). Kluwer, 73--78. Google Scholar
Digital Library
- Philippe Antoine and St´ephane Conversy. 2017. Volta: the first all-electric conventional helicopter. In Proceedings of the More Electrical Aircraft Conference (MEA '17). ACM Press.Google Scholar
- Caroline Appert and Michel Beaudouin-Lafon. 2008. SwingStates: Adding state machines to Java and the Swing toolkit. Software: Practice and Experience 38, 11 (2008), 1149--1182. Google Scholar
Digital Library
- Engineer Bainomugisha, Andoni Lombide Carreton, Tom van Cutsem, Stijn Mostinckx, and Wolfgang de Meuter. 2013. A Survey on Reactive Programming. ACM Comput. Surv. 45, 4, Article 52 (Aug. 2013), 34 pages. Google Scholar
Digital Library
- Len Bass, R. Pellegrino, S. Reed, R. Seacord, R. Sheppard, and M. R. Szezur. 1991. The Arch Model: Seeheim Revisited. (April 1991). Presented at the CHI'91 User Interface Developers Workshop.Google Scholar
- Albert Benveniste and Paul Le Guernic. 1991. Synchronous programming with events and relations: the SIGNAL language and its semantics. Science of Computer Programming 16, 2 (1991), 103--149. Google Scholar
Digital Library
- G´erard Berry and Georges Gonthier. 1992. The ESTEREL synchronous programming language: design, semantics, implementation. Science of Computer Programming 19, 2 (1992), 87--152. Google Scholar
Digital Library
- Renaud Blanch and Michel Beaudouin-Lafon. 2006. Programming rich interactions using the hierarchical state machine toolkit. In Proceedings of the working conference on Advanced visual interfaces (AVI '06). ACM, 51--58. Google Scholar
Digital Library
- St´ephane Chatty. 1994. Extending a Graphical Toolkit for Two-handed Interaction. In Proceedings of the 7th Annual ACM Symposium on User Interface Software and Technology (UIST '94). ACM, New York, NY, USA, 195--204. Google Scholar
Digital Library
- St´ephane Chatty. 2012. A unified framework for control structures in interactive software. (Sept. 2012). https://hal.archives-ouvertes.fr/hal-01800741 . Working paper. First version authored in 2012, archived in HAL in 2018.Google Scholar
- St´ephane Chatty, Mathieu Magnaudet, and Daniel Prun. 2015. Verification of properties of interactive components from their executable code. In Proceedings of the 7th ACM SIGCHI Symposium on Engineering Interactive Computing Systems. 276--285. Google Scholar
Digital Library
- St´ephane Chatty, St´ephane Sire, Jean-Luc Vinot, Patrick Lecoanet, Alexandre Lemort, and Christophe Mertz. 2004. Revisiting Visual Interface Programming: Creating GUI Tools for Designers and Programmers. In Proceedings of the 17th Annual ACM Symposium on User Interface Software and Technology (UIST '04). ACM, New York, NY, USA, 267--276. Google Scholar
Digital Library
- Jean-Louis Cola¸co, Bruno Pagano, and Marc Pouzet. 2005. A conservative extension of synchronous data-flow with state machines. In Proc. of ACM EMSOFT'05. ACM, 173--182. Google Scholar
Digital Library
- B. Collignon, J. Vanderdonckt, and G. Calvary. 2008. Model-Driven Engineering of Multi-target Plastic User Interfaces. In Fourth International Conference on Autonomic and Autonomous Systems (ICAS'08). 7--14. Google Scholar
Digital Library
- St´ephane Conversy. 2014. Unifying Textual and Visual: a Theoretical Account of the Visual Perception of Programming Languages. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Splash Onward! '14). ACM Press, New York, NY, USA, 201--212. Google Scholar
Digital Library
- Antony Courtney. 2001. Frapp´e: Functional Reactive Programming in Java. In Practical Aspects of Declarative Languages: Third International Symposium, PADL 2001 Las Vegas, Nevada, March 11--12, 2001 Proceedings, I. V. Ramakrishnan (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 29--44. Google Scholar
Digital Library
- Pierre Dragicevic and Jean-Daniel Fekete. 2004. Support for Input Adaptability in the ICon Toolkit. In Proceedings of the Sixth International Conference on Multimodal Interfaces (ICMI'04). ACM Press, 212--219. Google Scholar
Digital Library
- Conal Elliott and Paul Hudak. 1997. Functional Reactive Animation. In International Conference on Functional Programming. 263--273. http://conal.net/papers/icfp97/ Google Scholar
Digital Library
- Nicholas Halbwachs, Paul Caspi, Pascal Raymond, and Daniel Pilaud. 1991. The Synchronous Data Flow Programming Language LUSTRE. Proc. IEEE 79, 9 (1991), 1305--1320.Google Scholar
- D. Harel. 1987. Statecharts: A Visual Formalism for Complex Systems. Science of Computer Programming 8, 3 (June 1987), 231--274. Google Scholar
Digital Library
- H. Rex Hartson and Deborah Hix. 1989. Human-Computer Interface Development: Concepts and Systems for its Management. Comput. Surveys 21 (1989), 5--92. Google Scholar
Digital Library
- C. A. R. Hoare. 1978. Communicating Sequential Processes. Commun. ACM 21, 8 (1978), 666--677. Google Scholar
Digital Library
- Christophe Hurter and St´ephane Conversy. 2008. Towards characterizing visualization. In Proceedings of the 15th conference on Design Specification and Verification of Interactive Systems (DSVIS 2008), Lecture Notes in Computer Science. Springer Verlag, 287--293.Google Scholar
Digital Library
- ISO 9241--210:2010 2010. Ergonomics of human-system interaction -- Part 210: Human-centred design for interactive systems. Standard. International Organization for Standardization, Geneva, CH.Google Scholar
- R.J.K. Jacob, L. Deligiannidis, and S. Morrison. 1999. A Software Model and Specification Language for Non-WIMP User Interfaces. ACM Transactions on Computer-Human Interaction 6, 1 (1999), 1--46. Google Scholar
Digital Library
- R. J. K. Jacob. 1983. Using Formal Specifications in the Design of a Human-Computer Interface. Commun. ACM 26 (1983), 259--264. Google Scholar
Digital Library
- Alan Jeffrey. 2013. Causality for Free!: Parametricity Implies Causality for Functional Reactive Programs. In Proceedings of the 7th Workshop on Programming Languages Meets Program Verification (PLPV '13). ACM, New York, NY, USA, 57--68. Google Scholar
Digital Library
- Ralph E. Johnson and Brian Foote. 1988. Designing Reusable Classes. Object-Oriented Programming 1, 2 (1988).Google Scholar
- Alan C. Kay. 1996. History of Programming languages-II. ACM, New York, NY, USA, Chapter The Early History of Smalltalk, 511--598. Google Scholar
Digital Library
- Eric Lecolinet. 2003. A molecular architecture for creating advanced GUIs. In Proceedings of the ACM UIST. 135--144. Google Scholar
Digital Library
- Mathieu Magnaudet and St´ephane Chatty. 2014. What Should Adaptivity Mean to Interactive Software Programmers?. In Proceedings of the 2014 ACM SIGCHI Symposium on Engineering Interactive Computing Systems (EICS '14). ACM, New York, NY, USA, 13--22. Google Scholar
Digital Library
- Ingo Maier, Tiark Rompf, and Martin Odersky. 2012. Deprecating the Observer Pattern. Technical Report. EPFL.Google Scholar
- Leo A. Meyerovich, Arjun Guha, Jacob Baskin, Gregory H. Cooper, Michael Greenberg, Aleks Bromfield, and Shriram Krishnamurthi. 2009. Flapjax: A Programming Language for Ajax Applications. In Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA '09). ACM, New York, NY, USA, 1--20. Google Scholar
Digital Library
- Robin Milner. 1980. A Calculus of Communicating Systems. Springer-Verlag. Google Scholar
Digital Library
- Brad Myers. 1991. Separating application code from toolkits: Eliminating the spaghetti of callbacks. In Proceedings of the ACM UIST. Addison-Wesley, 211--220. Google Scholar
Digital Library
- Brad Myers, Sun Young Park, Yoko Nakano, Greg Mueller, and Andrew Ko. 2008. How Designers Design and Program Interactive Behaviors. In Proceedings of IEEE VLHCC'08. IEEE Computer Society, 177--184. Google Scholar
Digital Library
- Brad A. Myers. 1990. A new model for handling input. ACM Transactions on Office Information Systems (July 1990), 289--320. Google Scholar
Digital Library
- Brad A. Myers et al. 1990. Garnet, Comprehensive Support for Graphical, Highly Interactive User Interfaces. IEEE Computer (Nov. 1990), 71--85. Google Scholar
Digital Library
- David Navarre, Philippe Palanque, Jean-Francois Jean-Fran¸cois Ladry, and Eric Barboni. 2009. ICOs: A model-based user interface description technique dedicated to interactive systems addressing usability, reliability and scalability. ACM TOCHI 16, 4 (Nov. 2009), 18:1--18:56. Google Scholar
Digital Library
- G. E. Pfaff (Ed.). 1985. User Interface Management Systems. Springer-Verlag. Google Scholar
Digital Library
- Trygve M. H. Reenskaug. 1979. Models - Views - Controllers. (December 1979). http://heim.ifi.uio.no/ ?trygver/1979/mvc-2/1979--12-MVC.pdf heim.ifi.uio.no/?trygver/1979/mvc-2/1979--12-MVC.pdf.Google Scholar
- Nicholas Rescher. 2000. Process Philosophy: A Survey of Basic Issues. University of Pittsburgh Press, Pittsburgh.Google Scholar
Cross Ref
- Wesley Salmon. 1984. Scientific Explanation and the Causal Structure of the World. Princeton University Press.Google Scholar
- Guido Salvaneschi, Gerold Hintz, and Mira Mezini. 2014. REScala: Bridging Between Object-oriented and Functional Style in Reactive Applications. In Proceedings of the 13th International Conference on Modularity (MODULARITY '14). ACM, New York, NY, USA, 25--36. Google Scholar
Digital Library
- Johanna Seibt. 2009. Forms of emergent interaction in General Process Theory. Synthese 166 (2009), 479--512.Google Scholar
Cross Ref
- Johanna Seibt. 2013. Process Philosophy. In The Stanford Encyclopedia of Philosophy, Edward N. Zalta (Ed.).Google Scholar
- The Coq Development Team. 2018. The Coq Proof Assistant, version 8.8.0. (April 2018).Google Scholar
- Sam Van den Vonder, Joeri De Koster, Florian Myter, and Wolfgang De Meuter. 2017. Tackling the Awkward Squad for Reactive Programming: The Actor-reactor Model. In Proceedings of the 4th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS 2017). ACM, New York, NY, USA, 27--33. Google Scholar
Digital Library
- Atze van der Ploeg. 2013. Monadic Functional Reactive Programming. In Proceedings of the 2013 ACM SIGPLAN Symposium on Haskell (Haskell '13). ACM, New York, NY, USA, 117--128. Google Scholar
Digital Library
- Peter Van Roy. 2009. Programming Paradigms for Dummies: What Every Programmer Should Know. In New Computational Paradigms for Computer Music, G. Assayag and A. Gerzso (Eds.). IRCAM/Delatour.Google Scholar
- Peter Wegner. 1997. Why Interaction Is More Powerful Than Algorithms. Commun. ACM 40, 5 (1997), 80--91. Google Scholar
Digital Library
Index Terms
Djnn/Smala: A Conceptual Framework and a Language for Interaction-Oriented Programming
Recommendations
A survey on reactive programming
Reactive programming has recently gained popularity as a paradigm that is well-suited for developing event-driven and interactive applications. It facilitates the development of such applications by providing abstractions to express time-varying values ...
Djnn: a process oriented programming language for interactive systems
EICS '17: Proceedings of the ACM SIGCHI Symposium on Engineering Interactive Computing SystemsThe most popular programming languages (Java, C++, Objective-C, Python, etc.) and toolkit (Qt, JavaFX, etc.), commonly used for building interactive systems, are still based on the paradigm of sequential programming originally built for computation. In ...
An empirical study on program comprehension with reactive programming
FSE 2014: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software EngineeringStarting from the first investigations with strictly functional languages, reactive programming has been proposed as THE programming paradigm for reactive applications. The advantages of designs based on this style over designs based on the Observer ...






Comments