skip to main content
10.1145/3183895.3183902acmotherconferencesArticle/Chapter ViewAbstractPublication PagesrwdslConference Proceedingsconference-collections
research-article

A Task-Based DSL for Microcomputers

Published: 24 February 2018 Publication History

Abstract

The Internet of Things, IoT, makes small connected computing devices almost omnipresent. These devices have typically very limited computing power and severe memory restrictions to make them cheap and power efficient. These devices can interact with the environment via special sensors and actuators. Since each device controls several peripherals running interleaved, the control software is quite complicated and hard to maintain.
Task Oriented Programming, TOP, offers lightweight communicating threads that can inspect each other's intermediate results. This makes it well suited for the IoT. In this paper presents a functional task-based domain specific language for these IoT devices. We show that it yields concise control programs. By restricting the datatypes and using strict evaluation these programs fit within the restrictions of microcontrollers.

References

[1]
Adafruit. 2016. DHT-sensor-library. (2016). https://github.com/adafruit/DHT-sensor-library
[2]
Arduino.cc. 2015. Arduino LiquidCrystal Library. (2015). https://www.arduino.cc/en/Reference/LiquidCrystal
[3]
Emil Axelsson, Koen Claessen, Gergely DŐvai, ZoltĞn HorvĞth, Karin Keijzer, Bo LyckegŇrd, Anders Persson, Mary Sheeran, Josef Svenningsson, and AndrĞs Vajda. 2010. Feldspar: A domain specific language for digital signal processing algorithms. In MEMOCODE. IEEE, 169--178.
[4]
H. Barendregt, W. Dekkers, and R. Statman. 2013. Lambda Calculus with Types. Cambridge University Press.
[5]
Jacques Carette, Oleg Kiselyov, and Chung-chieh Shan. 2009. Finally Tagless, Partially Evaluated: Tagless Staged Interpreters for Simpler Typed Languages. J. Funct. Program. 19, 5 (Sept. 2009).
[6]
D-Robotics. 2010. DHT11 Humidity & Temperature Sensor. (2010). http://www.micro4you.com/files/sensor/DHT11.pdf
[7]
Trevor Elliott, Lee Pike, Simon Winwood, Pat Hickey, James Bielman, Jamey Sharp, Eric Seidel, and John Launchbury. 2015. Guilt Free Ivory. SIGPLAN Not. 50, 12 (Aug. 2015), 189--200.
[8]
M. Anton Ertl and David Gregg. 2003. The Structure and Performance of Efficient Interpreters. J. Instruction-Level Parallelism 5 (2003). http://www.jilp.org/vol5/v5paper12.pdf
[9]
Damien George. 2017. (2017). http://micropython.org/
[10]
Mark Grebe and Andy Gill. 2016. Haskino: A Remote Monad for Programming the Arduino. In Practical Aspects of Declarative Languages - 18th International Symposium, PADL 2016, St. Petersburg, FL, USA, January 18-19, 2016. Proceedings (Lecture Notes in Computer Science), Marco Gavanelli and John H. Reppy (Eds.), Vol. 9585. Springer, 153--168.
[11]
Caleb Helbling and Samuel Z. Guyer. 2016. Juniper: A Functional Reactive Programming Language for the Arduino. In Proceedings of the 4th International Workshop on Functional Art, Music, Modelling, and Design (FARM 2016). ACM, New York, NY, USA.
[12]
Jeff Hoefs. 2014. Firmata protocol. (2014). http://firmata.org/wiki/Main_Page
[13]
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes Filho. 1996. Lua -- an Extensible Extension Language. Softw. Pract. Exper. 26, 6 (June 1996), 635--652.
[14]
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes. 2006. Lua 5.1 Reference Manual. Lua.Org.
[15]
Jan Martin Jansen and John van Groningen. 2016. A Portable VM-based Implementation Platform for Non-strict Functional Programming Languages. In Proceedings of the 28th Symposium on the Implementation and Application of Functional Programming Languages (IFL 2016). ACM, New York, NY, USA.
[16]
Pieter Koopman and Rinus Plasmeijer. 2016. A Shallow Embedded Type Safe Extendable DSL for the Arduino. In Revised Selected Papers of the 16th International Symposium on Trends in Functional Programming - Volume 9547 (TFP 2015). Springer-Verlag New York, Inc., New York, NY, USA, 104--123.
[17]
Rinus Plasmeijer, Peter Achten, and Pieter Koopman. 2007. iTasks: executable specifications of interactive work flow systems for the web. In Proceedings of the ICFP'07, Ralf Hinze and Norman Ramsey (Eds.). ACM, Freiburg, Germany.
[18]
Rinus Plasmeijer, Bas Lijnse, Steffen Michels, Peter Achten, and Pieter Koopman. 2012. Task-oriented Programming in a Pure Functional Language. In Proceedings of the 14th Symposium on Principles and Practice of Declarative Programming (PPDP '12). ACM, New York, NY, USA, 195--206.
[19]
Rinus Plasmeijer, Marko van Eekelen, and John van Groningen. 2011. Clean language report (version 2.2). (2011). http://clean.cs.ru.nl/Documentation.
[20]
Ryan Suchocki and Dr. Sara Kalvala. 2014. Microscheme: Functional programming for the Arduino. In Proceedings of the 2014 Scheme and functional programming workshop, Jason Hemann and John Clements (Eds.). California Polytechnic State University, 21--29. http://www.schemeworkshop.org/2014/IndianaCSTR718.pdf
[21]
Gordon Williams. 2015. The Espruino project. (2015). http://www.espruino.com/

Cited By

View all
  • (2024)Modelling of Cyber-Physical Systems through Domain-Specific Languages: Decision, Analysis, DesignProceedings of the ACM/IEEE 27th International Conference on Model Driven Engineering Languages and Systems10.1145/3652620.3688348(1170-1179)Online publication date: 22-Sep-2024
  • (2024)Switching Mechanism for Update Timing of Time-Varying Values in an FRP Language for Small-Scale Embedded SystemsProceedings of the 2024 13th International Conference on Software and Computer Applications10.1145/3651781.3651789(45-54)Online publication date: 1-Feb-2024
  • (2023)Dynamic TopHat: Start and Stop Tasks at RuntimeProceedings of the 35th Symposium on Implementation and Application of Functional Languages10.1145/3652561.3652574(1-13)Online publication date: 29-Aug-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
RWDSL2018: Proceedings of the Real World Domain Specific Languages Workshop 2018
February 2018
70 pages
ISBN:9781450363556
DOI:10.1145/3183895
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

In-Cooperation

  • EPSRC: Engineering and Physical Sciences Research Council
  • Heriot-Watt University: Heriot-Watt University

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 24 February 2018

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

RWDSL2018

Acceptance Rates

RWDSL2018 Paper Acceptance Rate 7 of 9 submissions, 78%;
Overall Acceptance Rate 7 of 9 submissions, 78%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)13
  • Downloads (Last 6 weeks)2
Reflects downloads up to 06 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Modelling of Cyber-Physical Systems through Domain-Specific Languages: Decision, Analysis, DesignProceedings of the ACM/IEEE 27th International Conference on Model Driven Engineering Languages and Systems10.1145/3652620.3688348(1170-1179)Online publication date: 22-Sep-2024
  • (2024)Switching Mechanism for Update Timing of Time-Varying Values in an FRP Language for Small-Scale Embedded SystemsProceedings of the 2024 13th International Conference on Software and Computer Applications10.1145/3651781.3651789(45-54)Online publication date: 1-Feb-2024
  • (2023)Dynamic TopHat: Start and Stop Tasks at RuntimeProceedings of the 35th Symposium on Implementation and Application of Functional Languages10.1145/3652561.3652574(1-13)Online publication date: 29-Aug-2023
  • (2023)Writing Internet of Things Applications with Task Oriented ProgrammingComposability, Comprehensibility and Correctness of Working Software10.1007/978-3-031-42833-3_1(3-52)Online publication date: 18-Oct-2023
  • (2023)Reducing the Power Consumption of IoT with Task-Oriented ProgrammingTrends in Functional Programming10.1007/978-3-031-21314-4_5(80-99)Online publication date: 1-Jan-2023
  • (2022)Could Tierless Languages Reduce IoT Development Grief?ACM Transactions on Internet of Things10.1145/35729014:1(1-35)Online publication date: 30-Nov-2022
  • (2021)Domain-Specific Languages for IoT: Challenges and OpportunitiesIOP Conference Series: Materials Science and Engineering10.1088/1757-899X/1067/1/0121331067:1(012133)Online publication date: 1-Feb-2021
  • (2020)Generating Next Step Hints for Task Oriented Programs Using Symbolic ExecutionTrends in Functional Programming10.1007/978-3-030-57761-2_3(47-68)Online publication date: 18-Aug-2020
  • (2019)Multitasking on Microcontrollers using Task Oriented Programming2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO)10.23919/MIPRO.2019.8756711(1587-1592)Online publication date: May-2019
  • (2019)A new view on parser combinatorsProceedings of the 31st Symposium on Implementation and Application of Functional Languages10.1145/3412932.3412938(1-11)Online publication date: 25-Sep-2019
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media