From: Mart Lubbers Date: Wed, 7 Jun 2023 13:45:49 +0000 (+0200) Subject: process todos X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=c1e9f44c6c6537823e7c84f8bfa60078c562e50f;p=phd-thesis.git process todos --- diff --git a/bib/other.bib b/bib/other.bib index 2b7145c..6313892 100644 --- a/bib/other.bib +++ b/bib/other.bib @@ -2250,3 +2250,10 @@ Publisher: {ACM}}, date = {2014-04}, file = {Nelson et al. - 2014 - Tierless Programming and Reasoning for Software-De.pdf:/home/mrl/.local/share/zotero/storage/3AXEWJ4I/Nelson et al. - 2014 - Tierless Programming and Reasoning for Software-De.pdf:application/pdf}, } +@report{de_roos_2020, + author = {de Roos, Colin}, + title = {Custom Type Errors for Class-Based Embedded DSLs}, + institution = {Radboud University}, + year = {2020}, + type = {Research Intership Report}, +} diff --git a/bib/self.bib b/bib/self.bib index 0ae5b7e..f63d1cc 100644 --- a/bib/self.bib +++ b/bib/self.bib @@ -211,6 +211,7 @@ @inproceedings{lubbers_deep_2022, location = {Cham}, title = {Deep Embedding with Class}, + doi = {10.1007/978-3-031-21314-4_5}, isbn = {978-3-031-21314-4}, abstract = {The two flavours of {DSL} embedding are shallow and deep embedding. In functional languages, shallow embedding models the language constructs as functions in which the semantics are embedded. Adding semantics is therefore cumbersome while adding constructs is a breeze. Upgrading the functions to type classes lifts this limitation to a certain extent.}, pages = {39--58}, @@ -223,6 +224,7 @@ } @inproceedings{crooijmans_reducing_2022, + doi = {10.1007/978-3-031-21314-4_5}, location = {Cham}, title = {Reducing the Power Consumption of {IoT} with Task-Oriented Programming}, isbn = {978-3-031-21314-4}, diff --git a/intro/intro.tex b/intro/intro.tex index edf9850..0e85faa 100644 --- a/intro/intro.tex +++ b/intro/intro.tex @@ -50,7 +50,7 @@ This is where an additional \glspl{DSL} must play its part. \Glspl{DSL} are programming languages tailored to a specific domain. Consequently, jargon is not expressed in terms of the language itself, but is built into the language. Furthermore, the \gls{DSL} can eschew language or system features that are irrelevant for the domain. -Using \glspl{DSL}, hardware requirements can be drastically lowered, even while maintaining a high abstraction level for the specified domain.\todo{why?} +Using \glspl{DSL}, hardware requirements can be drastically lowered, even while maintaining a high abstraction level for the specified domain. To incorporate the plethora of edge devices in the orchestra of a \gls{TOP} system, the \gls{MTASK} system is used. The \gls{MTASK} language is a novel programming language for programming \gls{IOT} edge devices using \gls{TOP}. diff --git a/thesis.tex b/thesis.tex index 814365b..74532d6 100644 --- a/thesis.tex +++ b/thesis.tex @@ -10,13 +10,6 @@ % To show hboxes even when in non-draft mode %\setlength{\overfullrule}{20pt} -% Just for the todonotes, can go when it's finished -\usepackage{todonotes} -\setuptodonotes{ - backgroundcolor=white, - linecolor=black, -} - % Document info \title{\mytitle\texorpdfstring{\\[2ex]}{---}\smaller\mysubtitle} \author{Mart Lubbers} @@ -150,6 +143,4 @@ %\label{chp:index} %\printindex -\listoftodos% - \end{document} diff --git a/top/finale.tex b/top/finale.tex index bfd6917..5a6776f 100644 --- a/top/finale.tex +++ b/top/finale.tex @@ -33,8 +33,7 @@ Besides the usual \gls{FP} constructs, it contains basic tasks, task combinators It integrates seamlessly into \gls{ITASK}, a \gls{TOP} system for interactive web applications. In \gls{ITASK}, abstractions are available for the gritty details of interactive web applications such as program distribution, web applications, data storage, and user management. The \gls{MTASK} system abstracts away all technicalities specific to edge devices such as communication, abstractions for sensors and actuators, interrupts and (multi) task scheduling. -When \gls{MTASK} is used together with \gls{ITASK}, all layers of the \gls{IOT} application are programmed from a single declarative specification.\todo{is this demonstrated anywhere in the thesis? -Could you point to an example (perhaps in a paper not in the thesis)} +When \gls{MTASK} is used together with \gls{ITASK}, all layers of the \gls{IOT} application are programmed from a single declarative specification (see e.g.\ \cref{sec:home_automation}). Any device equipped with the \gls{MTASK} \gls{RTS} can be used in the system and dynamically receive tasks for execution. This domain-specific \gls{OS} only is uploaded once, hence saving precious write cycles on the program memory. @@ -253,7 +252,7 @@ Recent approaches in interactive editors for programming language source code su If the editor produces correct \gls{MTASK} code by construction, much of the problems could be avoided. In the same respect, as \gls{MTASK} is a tagless-final \gls{EDSL} and uses \gls{HOAS}, the error messages are complex and larded with host language features. Much research has gone into simplifying these error messages by translating them to the \gls{DSL} domain, see for example the work by \citep{serrano_type_2018}. -De Roos briefly investigated these methods in their research internship.\todo{cite? but how} +\Citet{de_roos_2020} briefly investigated these methods in their research internship. A future directions could be to extend these findings and apply more \gls{EDSL} error message techniques on \gls{MTASK} as well. \subsection{Language features} @@ -269,7 +268,7 @@ However, it should be possible to make abstractions over an increasing number of For example, the pin mode could be made a type parameter of the \gls{GPIO} pins, or interrupt handling could be made safer by incorporating the capabilities of the devices in order to reduce run-time errors. \subsection{Scheduling} -The scheduling in \gls{MTASK} works quite well, but it is not real time.\todo{mention evaluation} +The scheduling in \gls{MTASK} works quite well, but it is not real time. There is a variant of \gls{FRP} called \gls{PFRP} that allows for real-time operation \citep{belwal_variable_2013}. Furthermore, an alternative to reducing the energy consumption by going to sleep is stepping down the processor frequency. So called \gls{DVFS} is a scheduling technique that slows down the processor in order to reach the goals as late as possible, reducing the power consumption. diff --git a/top/int.tex b/top/int.tex index 3c70a28..304ac65 100644 --- a/top/int.tex +++ b/top/int.tex @@ -235,7 +235,8 @@ The following section contains an elaborate example using all integration functi \vspace{\fill} \newpage -\section{Home automation} +\section{Home automation}% +\label{sec:home_automation} This section presents an interactive home automation program (\cref{lst:example_home_automation}) to illustrate the dynamic integration of the \gls{MTASK} language and the \gls{ITASK} system. All layers of \gls{IOT} systems are used in this application. The presentation layer consists of an automatically generated web interface for the user to control which tasks are sent to a device for execution. diff --git a/top/lang.tex b/top/lang.tex index 2e1b0de..243733e 100644 --- a/top/lang.tex +++ b/top/lang.tex @@ -371,7 +371,7 @@ The most rudimentary non-interactive basic tasks in the task language of \gls{MT They lift the value from the \gls{MTASK} expression language to the task domain either as a stable or unstable value. There is also a special type of basic task for delaying execution. The \cleaninline{delay} task---parametrised by a number of milliseconds---yields an unstable value while the time has not passed. -Once the specified time has passed, the exact time the task overshot the target time is yielded as a stable task value.\todo{unclear?} +Once the specified time has passed, the time the task overshot the target time is yielded as a stable task value. See \cref{sec:repeat} for an example task using \cleaninline{delay}. \begin{lstClean}[label={lst:basic_tasks},caption={Non-interactive basic tasks in \gls{MTASK}.}] @@ -698,7 +698,6 @@ The language uses an enriched lambda calculus as a host language, providing addi Terms in the language are just interfaces and can be interpreted by one or more interpretations. When using the byte code compiler, terms in the \gls{MTASK} language are type checked at compile time but are constructed and compiled at run time. This facilitates tailor-making tasks for the current work requirements. -\todo{would be nice to see an example of this} \input{subfilepostamble} \end{document}