Synchronous Programming: Overview

  • Abdoulaye Gamatié


This chapter gives an overview of synchronous programming through the presentation of the main existing languages together with their associated tools. As a complement to what was said in the previous chapter on the synchronous model, the objectives and foundations of the synchronous approach are first recalled in Sects. 2.1 and 2.2, respectively. Then, the synchronous imperative languages are presented in Sect. 2.3. The synchronous declarative languages are introduced in Sect. 2.4. Finally, further synchronous languages are briefly mentioned in Sect. 2.5.


Global Clock Declarative Language Imperative Language Automatic Code Generation Synchronous Model 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    André C (2003) Computing SyncCharts reactions. In: Synchronous Languages, Applications, and Programming (SLAP’03), Electronic Notes in Theoretical Computer Science, Porto, Portugal 88:3–19Google Scholar
  2. 2.
    Antoniotti M, Ferrari A (2000) Jester, a reactive java extension proposal by Esterel hosting.
  3. 3.
    Benveniste A, Caspi P, Edwards SA, Halbwachs N, Le Guernic P, de Simone R (2003) The synchronous languages 12 years later. Proceedings of the IEEE 91(1):64–83CrossRefGoogle Scholar
  4. 4.
    Benveniste A, Le Guernic P, Jacquemot C (1991) Synchronous programming with events and relations: the Signal language and its semantics. Science of Computer Programming, Elsevier North-Holland Inc, Amsterdam, The Netherlands 16(2):103–149MATHGoogle Scholar
  5. 5.
    Berry G (1992) Esterelon hardware. In: Mechanized reasoning and hardware design, Prentice-Hall Inc, Upper Saddle River, NJ, pp 87–104Google Scholar
  6. 6.
    Berry G (2000) The foundations of Esterel. In proof, language and interaction: essays in honour of Robin Milner, MIT Press, Cambridge, pp 425–454Google Scholar
  7. 7.
    Berry G, Sentovich E (2001) Multiclock Esterel. In: Proceedings of the 11th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods (CHARME’01), Springer-Verlag, London, pp 110–125Google Scholar
  8. 8.
    Boussinot F (1991) Reactive-C: An extension of C to program reactive systems. Software Practice and Experience 21(4):401–428CrossRefGoogle Scholar
  9. 9.
    Boussinot F, de Simone R (1991) The Esterellanguage. Another look at real time programming, Proceedings of the IEEE 79:1293–1304Google Scholar
  10. 10.
    Caspi P, Pouzet M (1996) Synchronous Kahn networks. In Proceedings of the first ACM SIGPLAN International Conference on Functional Programming (ICFP’96), Philadelphia, Pennsylvania, pp 226–238Google Scholar
  11. 11.
    Dennis JB (1974) First version of a data flow procedure language. In: Programming Symposium, LNCS 19, Springer, London, UK, pp 362–376Google Scholar
  12. 12.
    Gonthier G (1988) Sémantique et modèles d’exécution des langages réactifs synchrones: application à Esterel. PhD thesis, Université d’Orsay, Paris, France (document in French)Google Scholar
  13. 13.
    Halbwachs N (1993) Synchronous programming of reactive systems. Kluwer Academic Publications, Norwell, NAMATHGoogle Scholar
  14. 14.
    Halbwachs N, Caspi P, Raymond P, Pilaud D (1991) The synchronous dataflow programming language Lustre. Proceedings of the IEEE 79(9):1305–1320CrossRefGoogle Scholar
  15. 15.
    Halbwachs N, Lagnier F, Ratel C (1992) Programming and verifying real-time systems by means of the synchronous data-flow programming language Lustre. In: IEEE Transactions on Software Engineering, Special Issue on the Specification and Analysis of Real-Time Systems 18(9):785–793Google Scholar
  16. 16.
    Halbwachs N, Raymond P, Ratel C (1991) Generating efficient code from data-flow programs. In: Proceedings of the 3rd International Symposium on Programming Language Implementation and Logic Programming, Passau (Germany)Google Scholar
  17. 17.
    Harel D (1987) Statecharts : A visual formalism for complex systems. Science of Computer Programming 8(3):231–274MATHCrossRefMathSciNetGoogle Scholar
  18. 18.
    Harel D, Naamad A (1996) The Statemate semantics of Statecharts. ACM Transactions on Software Engineering and Methodology 5(4):293–333CrossRefGoogle Scholar
  19. 19.
    Henzinger TA, Horowitz B, Kirsch CM (2001) Embedded control systems development with Giotto. In: Proceedings of The ACM Workshop on Languages, Compilers, and Tools for Embedded Systems (LCTES’2001), The Workshop on Optimization of Middleware and Distributed Systems (OM’2001), Snowbird, Utah, USAGoogle Scholar
  20. 20.
    Kahn G (1974) The semantics of simple language for parallel programming. In: Proceedings of the IFIP Congress, Information Processing ’74, North-Holland Publishing Company, pp 471–475Google Scholar
  21. 21.
    Lamport L (1978) Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, ACM, New York, 21(7):558–565MATHGoogle Scholar
  22. 22.
    Lavagno L, Sentovich E (1999) Ecl: A specification environment for system-level design. In: Proceedings of the 36th Design Automation Conference, New Orleans, Louisana, pp 511–516Google Scholar
  23. 23.
    Le Guernic P, Talpin J-P and Le Lann J-C (2003) Polychrony for system design. Journal for Circuits, Systems and Computers 12(3):261–304CrossRefGoogle Scholar
  24. 24.
    Maraninchi F (1991) The Argos language: graphical representation of automata and description of reactive systems. In: IEEE Workshop on Visual Languages, Kobe, JapanGoogle Scholar
  25. 25.
    Potop-Butucaru D, de Simone R (2003) Optimizations for faster execution of Esterel programs. In: First ACM and IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE’03), Mont Saint-Michel, France, pp 285–315Google Scholar
  26. 26.
    Schneider K (2009) The synchronous programming language Quartz. Internal report, Department of Computer Science, University of Kaiserslautern, Kaiserslautern, GermanyGoogle Scholar
  27. 27.
    Eureka Synchron Project (1995) The common formats of synchronous languages: the declarative code DC. In Deliverable of the Eureka Synchron ProjectGoogle Scholar
  28. 28.
    von der Beeck M (1994) A comparison of Statecharts Variants. In: Langmaack H, de Roever WP, Vytopil J (eds) Formal Techniques in Real-Time and Fault-Tolerant Systems, Third International Symposium, vol 863 of LNCS, Springer Verlag, Lübeck, Germany, pp 128–148Google Scholar
  29. 29.
    Wadge WW, Ashcroft EA (1985) Lucid, the dataflow programming language. Academic Press Professional Inc, San DiegoMATHGoogle Scholar

Copyright information

© Springer-Verlag New York 2010

Authors and Affiliations

  1. 1.CNRS - UMR 8022 (LIFL)INRIA Lille - Nord Europe Parc scientifique de la Haute BorneVilleneuve d’AscqFrance

Personalised recommendations