skip to main content
research-article

Djnn/Smala: A Conceptual Framework and a Language for Interaction-Oriented Programming

Authors Info & Claims
Published:19 June 2018Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle Scholar
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle Scholar
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle Scholar
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. Conal Elliott and Paul Hudak. 1997. Functional Reactive Animation. In International Conference on Functional Programming. 263--273. http://conal.net/papers/icfp97/ Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle Scholar
  20. D. Harel. 1987. Statecharts: A Visual Formalism for Complex Systems. Science of Computer Programming 8, 3 (June 1987), 231--274. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. H. Rex Hartson and Deborah Hix. 1989. Human-Computer Interface Development: Concepts and Systems for its Management. Comput. Surveys 21 (1989), 5--92. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. C. A. R. Hoare. 1978. Communicating Sequential Processes. Commun. ACM 21, 8 (1978), 666--677. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. R. J. K. Jacob. 1983. Using Formal Specifications in the Design of a Human-Computer Interface. Commun. ACM 26 (1983), 259--264. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. Ralph E. Johnson and Brian Foote. 1988. Designing Reusable Classes. Object-Oriented Programming 1, 2 (1988).Google ScholarGoogle Scholar
  29. Alan C. Kay. 1996. History of Programming languages-II. ACM, New York, NY, USA, Chapter The Early History of Smalltalk, 511--598. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Eric Lecolinet. 2003. A molecular architecture for creating advanced GUIs. In Proceedings of the ACM UIST. 135--144. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. Ingo Maier, Tiark Rompf, and Martin Odersky. 2012. Deprecating the Observer Pattern. Technical Report. EPFL.Google ScholarGoogle Scholar
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. Robin Milner. 1980. A Calculus of Communicating Systems. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Brad Myers. 1991. Separating application code from toolkits: Eliminating the spaghetti of callbacks. In Proceedings of the ACM UIST. Addison-Wesley, 211--220. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. Brad A. Myers. 1990. A new model for handling input. ACM Transactions on Office Information Systems (July 1990), 289--320. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Brad A. Myers et al. 1990. Garnet, Comprehensive Support for Graphical, Highly Interactive User Interfaces. IEEE Computer (Nov. 1990), 71--85. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. G. E. Pfaff (Ed.). 1985. User Interface Management Systems. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle Scholar
  42. Nicholas Rescher. 2000. Process Philosophy: A Survey of Basic Issues. University of Pittsburgh Press, Pittsburgh.Google ScholarGoogle ScholarCross RefCross Ref
  43. Wesley Salmon. 1984. Scientific Explanation and the Causal Structure of the World. Princeton University Press.Google ScholarGoogle Scholar
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. Johanna Seibt. 2009. Forms of emergent interaction in General Process Theory. Synthese 166 (2009), 479--512.Google ScholarGoogle ScholarCross RefCross Ref
  46. Johanna Seibt. 2013. Process Philosophy. In The Stanford Encyclopedia of Philosophy, Edward N. Zalta (Ed.).Google ScholarGoogle Scholar
  47. The Coq Development Team. 2018. The Coq Proof Assistant, version 8.8.0. (April 2018).Google ScholarGoogle Scholar
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  50. 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 ScholarGoogle Scholar
  51. Peter Wegner. 1997. Why Interaction Is More Powerful Than Algorithms. Commun. ACM 40, 5 (1997), 80--91. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Djnn/Smala: A Conceptual Framework and a Language for Interaction-Oriented Programming

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!