ABSTRACT
Programming distributed embedded systems gives rise to a number of challenges. The distributed nodes are typically resource constrained, requiring expert systems programming skills to manage the limited power, communication bandwidth, and memory and computation constraints. The challenge of raising the level of abstraction of programming such systems without incurring too high of an execution performance penalty is thus an important one.
In this paper we present a framework and domain specific language, to enable programming of such systems at a global network level --- macroprogramming. Our framework, D'Artagnan, enables the compilation, analysis, transformation and interpretation of high-level descriptions of stream processing applications in which information is received and processed in real-time. D'Artagnan, is a functional macroprogramming language embedded in Haskell, hiding where possible low-level detail, but allowing the developer to add hints and information to enable more efficient compilation to different target architectures.
- E. Axelsson, K. Claessen, G. Dévai, Z. Horváth, K. Keijzer, B. Lyckegård, A. Persson, M. Sheeran, J. Svenningsson, and A. Vajdax. Feldspar: A domain specific language for digital signal processing algorithms. In Formal Methods and Models for Codesign (MEMOCODE), 2010 8th IEEE/ACM International Conference on, pages 169--178, July 2010. Google ScholarDigital Library
- G. Berry and G. Gonthier. The esterel synchronous programming language: Design, semantics, implementation. Science of computer programming, 19(2):87--152, 1992. Google ScholarDigital Library
- S. Bhatti, J. Carlson, H. Dai, J. Deng, J. Rose, A. Sheth, B. Shucker, C. Gruenwald, A. Torgerson, and R. Han. Mantis os: An embedded multithreaded operating system for wireless micro sensor platforms. Mobile Networks and Applications, 10(4):563--579, 2005. Google ScholarDigital Library
- P. Bjesse, K. Claessen, M. Sheeran, and S. Singh. Lava: Hardware design in haskell. In Proceedings of the Third ACM SIGPLAN International Conference on Functional Programming, ICFP '98, pages 174--184, New York, NY, USA, 1998. ACM. Google ScholarDigital Library
- Q. Cao, T. Abdelzaher, J. Stankovic, and T. He. The liteos operating system: Towards unix-like abstractions for wireless sensor networks. In Information Processing in Sensor Networks, 2008. IPSN'08. International Conference On, pages 233--244. IEEE, 2008. Google ScholarDigital Library
- H. Cha, S. Choi, I. Jung, H. Kim, H. Shin, J. Yoo, and C. Yoon. Retos: resilient, expandable, and threaded operating system for wireless sensor networks. In Information Processing in Sensor Networks, 2007. IPSN 2007. 6th International Symposium on, pages 148--157. IEEE, 2007. Google ScholarDigital Library
- K. Claessen and G. J. Pace. An embedded language framework for hardware compilation. In Designing Correct Circuits '02, Grenoble, France, Apr. 2002.Google Scholar
- K. Claessen and D. Sands. Observable Sharing for Functional Circuit Description. Springer Berlin Heidelberg, Berlin, Heidelberg, 1999.Google ScholarCross Ref
- A. Dunkels, B. Gronvall, and T. Voigt. Contiki-a lightweight and flexible operating system for tiny networked sensors. In Local Computer Networks, 2004. 29th Annual IEEE International Conference. IEEE, 2004. Google ScholarDigital Library
- A. Eswaran, A. Rowe, and R. Rajkumar. Nano-rk: an energy-aware resource-centric rtos for sensor networks. In Real-Time Systems Symposium, 2005. RTSS 2005. 26th IEEE International. IEEE, 2005. Google ScholarDigital Library
- R. Gummadi, O. Gnawali, and R. Govindan. Macro-programming wireless sensor networks using kairos. In International Conference on Distributed Computing in Sensor Systems. Springer, 2005. Google ScholarDigital Library
- N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous data flow programming language lustre. Proceedings of the IEEE, 79(9):1305--1320, 1991.Google ScholarCross Ref
- C.-C. Han, R. Kumar, R. Shea, E. Kohler, and M. Srivastava. A dynamic operating system for sensor nodes. In Proceedings of the 3rd international conference on Mobile systems, applications, and services, pages 163--176. ACM, 2005. Google ScholarDigital Library
- P. Hudak. Modular domain specific languages and tools. In Software Reuse, 1998. Proceedings. Fifth International Conference on, Jun 1998. Google ScholarDigital Library
- N. Kothari, R. Gummadi, T. Millstein, and R. Govindan. Reliable and efficient programming abstractions for wireless sensor networks. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '07, pages 200--210, New York, NY, USA, 2007. ACM. Google ScholarDigital Library
- D. Leijen and E. Meijer. Domain specific embedded compilers. In Proceedings of the 2Nd Conference on Domain-specific Languages, DSL '99, pages 109--122, New York, NY, USA, 1999. ACM. Google ScholarDigital Library
- P. Levis and D. Culler. MatÉ: A tiny virtual machine for sensor networks. In Proceedings of the 10th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS X, pages 85--95, New York, NY, USA, 2002. ACM. Google ScholarDigital Library
- P. Levis, D. Gay, and D. Culler. Active sensor networks. In Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation-Volume 2, pages 343--356. USENIX Association, 2005. Google ScholarDigital Library
- P. Levis, S. Madden, J. Polastre, R. Szewczyk, K. Whitehouse, A. Woo, D. Gay, J. Hill, M. Welsh, E. Brewer, et al. Tinyos: An operating system for sensor networks. In Ambient intelligence. Springer, 2005.Google ScholarCross Ref
- S. R. Madden, M. J. Franklin, J. M. Hellerstein, and W. Hong. Tinydb: an acquisitional query processing system for sensor networks. ACM Transactions on database systems (TODS), 30(1):122--173, 2005. Google ScholarDigital Library
- G. Mainland. Why it's nice to be quoted: quasiquoting for haskell. In Proceedings of the ACM SIGPLAN workshop on Haskell workshop, pages 73--82. ACM, 2007. Google ScholarDigital Library
- G. Mainland, G. Morrisett, and M. Welsh. Flask: Staged functional programming for sensor networks. In Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming, ICFP '08, pages 335--346, New York, NY, USA, 2008. ACM. Google ScholarDigital Library
- M. Mernik, J. Heering, and A. M. Sloane. When and how to develop domain-specific languages. ACM computing surveys (CSUR), 37(4), 2005. Google ScholarDigital Library
- L. Mottola and G. P. Picco. Programming wireless sensor networks: Fundamental concepts and state of the art. ACM Comput. Surv., 43(3):19:1--19:51, Apr. 2011. Google ScholarDigital Library
- R. Newton, G. Morrisett, and M. Welsh. The regiment macroprogramming system. In Proceedings of the 6th International Conference on Information Processing in Sensor Networks, IPSN '07, pages 489--498, New York, NY, USA, 2007. ACM. Google ScholarDigital Library
- R. R. Newton, L. D. Girod, M. B. Craig, S. R. Madden, and J. G. Morrisett. Design and evaluation of a compiler for embedded stream programs. In Proceedings of the 2008 ACM SIGPLAN-SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems, LCTES '08, pages 131--140, New York, NY, USA, 2008. ACM. Google ScholarDigital Library
- G. J. Pottie and W. J. Kaiser. Wireless integrated network sensors. Communications of the ACM, 43(5):51--58, 2000. Google ScholarDigital Library
- M. Sheeran. Hardware design and functional programming: a perfect match. J. UCS, 11(7):1135--1158, 2005.Google Scholar
- R. Sugihara and R. K. Gupta. Programming models for sensor networks: A survey. ACM Transactions on Sensor Networks (TOSN), 4(2):8, 2008. Google ScholarDigital Library
- Y. Yao and J. Gehrke. The cougar approach to in-network query processing in sensor networks. ACM Sigmod record, 31(3):9--18, 2002. Google ScholarDigital Library
Recommendations
Layout-sensitive language extensibility with SugarHaskell
Haskell '12: Proceedings of the 2012 Haskell SymposiumProgrammers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
Layout-sensitive language extensibility with SugarHaskell
Haskell '12Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell standard provides syntactic sugar for some scenarios (e.g., do notation for monadic code), authors of Haskell compilers provide syntactic sugar for more ...
A framework for extensible languages
GPCE '13: Proceedings of the 12th international conference on Generative programming: concepts & experiencesExtensible programming languages such as SugarJ or Racket enable programmers to introduce customary language features as extensions of the base language. Traditionally, systems that support language extensions are either (i) agnostic to the base ...
Comments