many updates
[phd-thesis.git] / intro / intro.tex
index 3eb6a34..6854812 100644 (file)
@@ -15,7 +15,7 @@
        \end{itemize}
 \end{chapterabstract}
 
-There are at least 13.4 billion devices connected to the internet at the time of writing.\footnote{\url{https://transformainsights.com/research/tam/market}, accessed on: \formatdate{13}{10}{2022}}
+There are at least 13.4 billion devices connected to the internet at the time of writing\footnote{\url{https://transformainsights.com/research/tam/market}, accessed on: \formatdate{13}{10}{2022}}.
 Each and every one of those devices senses, acts, or otherwise interacts with people, other computers, and the environment surrounding us.
 Even though there is a substantial variety among these devices, they have one thing in common: they are all computers to some degree and hence require software to operate.
 
@@ -38,15 +38,17 @@ This thesis describes the research carried out around taming these complex \gls{
 \Gls{TOP} is an innovative tierless programming paradigm for programming multi-tier interactive systems using a single declarative specification of the work that needs to be done.
 By utilising advanced compiler technologies, much of the internals, communication, and interoperation of the multi-tiered applications is automatically generated.
 The result of this compilation is a ready-for-work application.
-Unfortunately, because the abstraction level is so high, the hardware requirements are too excessive for a general purpose \gls{TOP} system to be suitable for the average edge device.
+For example, the \gls{TOP} system \gls{ITASK} can be used to program all layers of a distributed web application from a single source.
+Unfortunately, because the abstraction level is so high, the hardware requirements are too excessive for such systems to be suitable for the average edge device.
 
 This is where \glspl{DSL} are brought into play.
 \Glspl{DSL} are programming languages created with a specific domain in mind.
 Consequently, jargon does not have to be expressed in the language itself, but they can be built-in features.
 As a result, the hardware requirements can be drastically lower, even with high levels of abstraction.
 
-Using \gls{MTASK}, a novel domain-specific \gls{TOP} \gls{DSL} fully integrated with \gls{ITASK}, all layers of the \gls{IOT} can be orchestrated from a single source.
-\todo[inline]{uitbreiden}
+To bridge the gap between the \gls{IOT} edge devices, the \gls{MTASK} \gls{DSL} is used.
+\Gls{MTASK} is a novel programming language for programming \gls{IOT} edge devices using \gls{TOP}.
+As it is integrated with \gls{ITASK}, it allows for all layers of an \gls{IOT} application to be programmed from a single source.
 
 \section{Reading guide}
 The thesis is structured as a purely functional rhapsody.
@@ -54,7 +56,7 @@ On Wikipedia, a musical rhapsody is defined as follows \citep{wikipedia_contribu
 \begin{quote}\emph{%
        A \emph{rhapsody} in music is a one-movement work that is episodic yet integrated, free-flowing in structure, featuring a range of highly contrasted moods, colour, and tonality.}
 \end{quote}
-The three episodes in this thesis are barded by the introduction and conclusion (\cref{chp:introduction,chp:conclusion}).
+%The three episodes in this thesis are barded by the introduction and conclusion (\cref{chp:introduction,chp:conclusion}).
 \Cref{prt:dsl} is a paper-based---otherwise known as cumulative---episode providing insights in advanced \gls{DSL} embedding techniques for \gls{FP} languages.
 The chapters are readable independently.
 \Cref{prt:top} is a monograph showing \gls{MTASK}, a \gls{TOP} \gls{DSL} for the \gls{IOT}.
@@ -64,8 +66,8 @@ The chapter is readable independently.
 
 The following sections provide background material on the \gls{IOT}, \glspl{DSL}, and \gls{TOP} after which a detailed overview of the contributions is presented.
 Text typeset as \texttt{teletype} represents source code.
-Standalone source code listings are marked by the programming language used.
-Specifically for the \gls{FP} language \gls{CLEAN}, a guide tailored to \gls{HASKELL} programmers is available in \cref{chp:clean_for_haskell_programmers}.
+Standalone source code listings are marked by the programming language used, e.g.\ \gls{CLEAN}\footnotemark, \gls{HASKELL}, \gls{CPP}, \etc.
+\footnotetext{\Cref{chp:clean_for_haskell_programmers} contains a guide for \gls{CLEAN} tailored to \gls{HASKELL} programmers.}
 
 \section{\texorpdfstring{\Glsxtrlong{IOT}}{Internet of things}}\label{sec:back_iot}
 The \gls{IOT} is growing rapidly and it is changing the way people and machines interact with the world.
@@ -219,11 +221,13 @@ Firstly, edge devices can be seen as simple resources, thus accessed through the
 The second view is that edge devices contain miniature \gls{LSOC} systems in itself as well.
 In \gls{TOSD} the same can be applied.
 The individual components in the miniature systems, the tasks, the \glspl{SDS}, are connected to the main system.
-\todo[inline]{Is deze \P{} duidelijk genoeg?}
+%\todo[inline]{Is deze \P{} duidelijk genoeg?}
 
 \subsection{\texorpdfstring{\Gls{ITASK}}{ITask}}
 The concept of \gls{TOP} originated from the \gls{ITASK} framework, a declarative interactive systems language and \gls{TOP} engine for defining multi-user distributed web applications implemented as an \gls{EDSL} in the lazy pure \gls{FP} language \gls{CLEAN} \citep{plasmeijer_itasks:_2007,plasmeijer_task-oriented_2012}.
 From the structural properties of the data types, the entire user interface is automatically generated.
+Browsers are powering \gls{ITASK}'s perception layer.
+The framework is written using standard web techniques such as JavaScript, HTML, and CSS, \gls{ITASK} code running in the browser relies on an interpreter that operates on \gls{CLEAN}'s intermediate language \gls{ABC} \citep{staps_lazy_2019}.
 
 As an example, \cref{lst:enter_person,fig:enter_person} show the \gls{ITASK} code and the corresponding \gls{UI} for a simple task for entering information about a person and viewing the entered result after completion.
 From the data type definitions (\cref{lst:dt_fro,lst:dt_to}), using generic programming (\cref{lst:dt_derive}), the \glspl{UI} for the data types are automatically generated.
@@ -252,8 +256,9 @@ enterPerson
 \end{lstClean}
 
 \subsection{\texorpdfstring{\Gls{MTASK}}{MTask}}
-\todo[inline]{Describe problem with iTask for the IoT.}
-This thesis uses \gls{ITASK} in conjunction with \gls{MTASK}, an innovative \gls{TOP} language designed for defining interactive systems for \gls{IOT} edge devices \citep{koopman_task-based_2018}.
+\Gls{ITASK} seems an obvious candidate at first glance for extending \gls{TOP} to \gls{IOT} edge devices.
+However, \gls{IOT} edge devices are in general not powerful enough to run or interpret \gls{CLEAN}\slash\gls{ABC} code, they just lack the processor speed and the memory.
+To bridge this gap, \gls{MTASK} was developed, a \gls{TOP} system for \gls{IOT} edge devices that is integrated in \gls{ITASK} \citep{koopman_task-based_2018}.
 \Gls{ITASK} abstracts away from details such as user interfaces, data storage, client-side platforms, and persistent workflows.
 On the other hand, \gls{MTASK} offers abstractions for edge layer-specific details such as the heterogeneity of architectures, platforms, and frameworks; peripheral access; (multi) task scheduling; and lowering energy consumption.
 The \gls{MTASK} language is written in \gls{CLEAN} as a multi-view \gls{EDSL} and hence there are multiple interpretations possible.
@@ -264,7 +269,6 @@ This feather-light domain-specific \gls{OS} is written in portable \gls{C} with
 \Gls{MTASK} is seamlessly integrated with \gls{ITASK}: \gls{MTASK} tasks are integrated in such a way that they function as \gls{ITASK} tasks, and \glspl{SDS} in on the device can tether an \gls{ITASK} \gls{SDS}.
 Using \gls{MTASK}, the programmer can define all layers of an \gls{IOT} system as a single declarative specification.
 
-\todo[inline]{Is this example useful? I think it's too technical}
 \Cref{lst:intro_blink} shows an interactive \gls{MTASK}\slash{}\gls{ITASK} application for blinking \pgls{LED} on the microcontroller every user-specified interval.
 \Crefrange{lst:intro:itask_fro}{lst:intro:itask_to} show the \gls{ITASK} part.
 First \pgls{SDS} is defined to communicate the blinking interval, then the \gls{MTASK} is connected using \cleaninline{withDevice}.
@@ -274,7 +278,6 @@ It has its own tasks, \glspl{SDS}, and \gls{UOD}.
 This task first defines \gls{GPIO} pin 13 to be of the output type (\cref{lst:intro:declarePin}), followed by lifting the \gls{ITASK} \gls{SDS} to an \gls{MTASK} \gls{SDS} (\cref{lst:intro:liftsds}).
 The main expression of the program calls the \cleaninline{blink} function with an initial state.
 This function on \crefrange{lst:intro:blink_fro}{lst:intro:blink_to} first reads the interval \gls{SDS}, waits the specified delay, writes the state to the \gls{GPIO} pin and calls itself recursively using the inverse of the state.
-\todo[inline]{conclude}
 
 \begin{lstClean}[numbers=left,caption={\Gls{MTASK}\slash{}\gls{ITASK} interactive blinking.},label={lst:intro_blink}]
 interactiveBlink :: Task Int[+\label{lst:intro:itask_fro}+]
@@ -295,10 +298,13 @@ intBlink iInterval =
 \end{lstClean}
 
 \subsection{Other \texorpdfstring{\glsxtrshort{TOP}}{TOP} languages}
-While \gls{ITASK} conceived \gls{TOP}, it is not the only \gls{TOP} language and engine.
-Some \gls{TOP} languages and systems arose from Master's and Bachelor's thesis projects (e.g.\ \textmu{}Task \citep{piers_task-oriented_2016} and LTasks \citep{van_gemert_task_2022}) or were created to solve a practical problem (e.g.\ Toppyt \citep{lijnse_toppyt_2022} and hTask \citep{lubbers_htask_2022}).
-Furthermore, \gls{TOPHAT} is a fully formally specified \gls{TOP} language designed to capture the essence of \gls{TOP} formally \citep{steenvoorden_tophat_2019}.
-It is also possible to translate \gls{TOPHAT} code to \gls{ITASK} to piggyback on the \gls{TOP} engine it offers \citep[\citesection{G.3}]{steenvoorden_tophat_2022}.
+While \gls{ITASK} conceived \gls{TOP}, it is not the only \gls{TOP} system.
+Some \gls{TOP} systems arose from Master's and Bachelor's thesis projects.
+For example, \textmu{}Task \citep{piers_task-oriented_2016}, a \gls{TOP} language for modelling non-interruptible embedded systems in \gls{HASKELL}, and LTasks \citep{van_gemert_task_2022}, a \gls{TOP} language written in the dynamically typed programming language {LUA}.
+Some \gls{TOP} languages were created to solve a practical problem.Toppyt \citep{lijnse_toppyt_2022} is a general purpose \gls{TOP} language written in \gls{PYTHON} used to host frameworks for modelling C2 systems, and hTask \citep{lubbers_htask_2022}, a vessel for experimenting with asynchronous \glspl{SDS}.
+Finally there are \gls{TOP} languages with strong academic foundations.
+\Gls{TOPHAT} is a fully formally specified \gls{TOP} language designed to capture the essence of \gls{TOP} formally \citep{steenvoorden_tophat_2019}.
+Such a formal specification allows for symbolic execution, hint generation, but also the translation to \gls{ITASK} for actually performing the work\citep[\citesection{G.3}]{steenvoorden_tophat_2022}.
 
 \section{Contributions}\label{sec:contributions}
 This section provides a thorough overview of the relation to publications and the scientific contributions of the episodes and chapters.
@@ -311,23 +317,21 @@ This episode is a paper based episodes on these techniques.
 While supervising \citeauthor{amazonas_cabral_de_andrade_developing_2018}'s \citeyear{amazonas_cabral_de_andrade_developing_2018} Master's thesis, focussing on an early version of \gls{MTASK}, a seed was planted for a novel deep embedding technique for \glspl{DSL} where the resulting language is extendible both in constructs and in interpretation using type classes and existential data types.
 Slowly the ideas organically grew to form the technique shown in the paper.
 The related work section is updated with the research found only after publication.
-\Cref{sec:classy_reprise} was added after publication and contains a (yet) unpublished extension of the embedding technique for reducing the required boilerplate.
+\Cref{sec:classy_reprise} was added after publication and contains a (yet) unpublished extension of the embedding technique for reducing the required boilerplate at the cost of requiring some advanced type system extensions.
 
 \Cref{chp:first-class_datatypes} is based on the paper \emph{First-Class Data Types in Shallow Embedded Domain-Specific Languages} \citep{lubbers_first-class_2022}.
-It shows how to inherit data types from the host language in \glspl{EDSL} using metaprogramming.
-It does so by providing a proof-of-concept implementation using \gls{HASKELL}'s metaprogramming system: \glsxtrlong{TH}.
+It shows how to inherit data types from the host language in \glspl{EDSL} using metaprogramming by providing a proof-of-concept implementation using \gls{HASKELL}'s metaprogramming system: \glsxtrlong{TH}.
 Besides showing the result, the paper also serves as a gentle introduction to using \glsxtrlong{TH} and contains a thorough literature study on research that uses \glsxtrlong{TH}.
 %The research in this paper and writing the paper was performed by me, though there were weekly meetings with Pieter Koopman and Rinus Plasmeijer in which we discussed and refined the ideas.
 
 \subsection{\nameref{prt:top}}
-This is a monograph compiled from the following papers and revised lecture notes on \gls{MTASK}, the \gls{TOP} system used to orchestrate the \gls{IOT}.
-It provides a gentle introduction to the \gls{MTASK} system elaborates on \gls{TOP} for the \gls{IOT}.
+This is a monograph compiled from the following papers and revised lecture notes on \gls{MTASK}.
+It provides a gentle introduction to all aspects of the \gls{MTASK} system and \gls{TOP} for the \gls{IOT}.
 
 \begin{itemize}
        \item \emph{A Task-Based \glsxtrshort{DSL} for Microcomputers} \citep{koopman_task-based_2018}.
-
-               This is the initial \gls{TOP}/\gls{MTASK} paper.
-               It provides an overview of the initial \gls{TOP} \gls{MTASK} language and shows first versions of a pretty printer, an \gls{ITASK} simulation and a \gls{C} code generation view.
+               This is the initial \gls{TOP}\slash{}\gls{MTASK} paper.
+               It provides an overview of the initial \gls{TOP} \gls{MTASK} language and shows first versions of some of the interpretations.
        \item \emph{Task Oriented Programming for the \glsxtrlong{IOT}} \citep{lubbers_task_2018}.
                
                This paper was an extension of my Master's thesis \citep{lubbers_task_2017}.
@@ -335,39 +339,39 @@ It provides a gentle introduction to the \gls{MTASK} system elaborates on \gls{T
                While the language was a lot different from later versions, the integration mechanism is still used in \gls{MTASK} today.
 %              \paragraph{Contribution}
 %              The research in this paper and writing the paper was performed by me, though there were weekly meetings with Pieter Koopman and Rinus Plasmeijer in which we discussed and refined the ideas.
-       \item \emph{Multitasking on Microcontrollers using Task Oriented Programming} \citep{lubbers_multitasking_2019}.\footnote{%
+       \item \emph{Multitasking on Microcontrollers using Task Oriented Programming} \citep{lubbers_multitasking_2019}\footnote{%
                This work acknowledges the support of the ERASMUS+ project ``Focusing Education on Composability, Comprehensibility and Correctness of Working Software'', no. 2017--1--SK01--KA203--035402
-               }
+               }.
 
-               This paper was a short paper on the multitasking capabilities of \gls{MTASK} in contrast to traditional multitasking methods for \gls{ARDUINO}.
+               This paper is a short paper on the multitasking capabilities of \gls{MTASK} comparing it to traditional multitasking methods for \gls{ARDUINO}.
 %              \paragraph{Contribution}
 %              The research in this paper and writing the paper was performed by me, though there were weekly meetings with Pieter Koopman and Rinus Plasmeijer.
-       \item \emph{Simulation of a Task-Based Embedded Domain Specific Language for the Internet of Things} \citep{koopman_simulation_2018}.\footnotemark[\value{footnote}]
+       \item \emph{Simulation of a Task-Based Embedded Domain Specific Language for the Internet of Things} \citep{koopman_simulation_2018}\footnotemark[\value{footnote}].
 
-               These revised lecture notes are from a course on the \gls{MTASK} simulator was provided at the 2018 \gls{CEFP}/\gls{3COWS} winter school in Ko\v{s}ice, Slovakia.
+               These revised lecture notes are from a course on the \gls{MTASK} simulator was provided at the 2018 \gls{CEFP}\slash{}\gls{3COWS} winter school in Ko\v{s}ice, Slovakia.
 %              \paragraph{Contribution}
 %              Pieter Koopman wrote and taught it, I helped with the software and research.
-       \item \emph{Writing Internet of Things Applications with Task Oriented Programming} \citep{lubbers_writing_2019}.\footnotemark[\value{footnote}]
+       \item \emph{Writing Internet of Things Applications with Task Oriented Programming} \citep{lubbers_writing_2019}\footnotemark[\value{footnote}].
 
-               These revised lecture notes are from a course on programming in \gls{MTASK} provided at the 2019 \gls{CEFP}/\gls{3COWS} summer school in Budapest, Hungary.
+               These revised lecture notes are from a course on programming in \gls{IOT} systems using \gls{MTASK} provided at the 2019 \gls{CEFP}\slash{}\gls{3COWS} summer school in Budapest, Hungary.
 %              \paragraph{Contribution}
 %              Pieter Koopman prepared and taught half of the lecture and supervised the practical session.
 %              I taught the other half of the lecture, wrote the lecture notes, made the assignments and supervised the practical session.
        \item \emph{Interpreting Task Oriented Programs on Tiny Computers} \citep{lubbers_interpreting_2019}.
 
-               This paper shows an implementation for \gls{MTASK} for microcontrollers in the form of a compilation scheme and informal semantics description.
+               This paper shows an implementation for \gls{MTASK} for microcontrollers.
 %              \paragraph{Contribution}
 %              The research in this paper and writing the paper was performed by me, though there were weekly meetings with Pieter Koopman and Rinus Plasmeijer.
        \item \emph{Reducing the Power Consumption of IoT with Task-Oriented Programming} \citep{crooijmans_reducing_2022}.
 
-               This paper shows how to create a scheduler so that devices running \gls{MTASK} tasks can go to sleep more automatically.
+               This paper shows how to create a scheduler so that devices running \gls{MTASK} tasks can go to sleep more automatically and how interrupts are incorporated in the language.
 %              \paragraph{Contribution}
 %              The research was carried out by \citet{crooijmans_reducing_2021} during his Master's thesis.
 %              I did the daily supervision and helped with the research, Pieter Koopman was the formal supervisor and wrote most of the paper.
-       \item \emph{Green Computing for the Internet of Things} \citep{lubbers_green_2022}.\footnote{
-               This work acknowledges the support of the Erasmus+ project ``SusTrainable---Promoting Sustainability as a Fundamental Driver in Software Development Training and Education'', no. 2020--1--PT01--KA203--078646}
+       \item \emph{Green Computing for the Internet of Things} \citep{lubbers_green_2022}\footnote{
+               This work acknowledges the support of the Erasmus+ project ``SusTrainable---Promoting Sustainability as a Fundamental Driver in Software Development Training and Education'', no. 2020--1--PT01--KA203--078646}.
 
-               These revised lecture notes are from a course on sustainable \gls{IOT} programming in \gls{MTASK} provided at the 2022 SusTrainable summer school in Rijeka, Croatia.
+               These revised lecture notes are from a course on sustainable \gls{IOT} programming with \gls{MTASK} provided at the 2022 SusTrainable summer school in Rijeka, Croatia.
 
 %              \paragraph{Contribution}
 %              These revised lecture notes are from a course on sustainable programming using \gls{MTASK} provided at the 2022 SusTrainable summer school in Rijeka, Croatia.
@@ -378,18 +382,18 @@ It provides a gentle introduction to the \gls{MTASK} system elaborates on \gls{T
 \paragraph{Contribution:}
 The original imperative predecessors the \gls{MTASK} language and their initial interpretations were developed by Pieter Koopman and Rinus Plasmeijer.
 I continued with the language; developed the byte code interpreter, the precursor to the \gls{C} code generation interpretation; the integration with \gls{ITASK}; and the \gls{RTS}.
-The paper of which I am first author are written by me.
+The paper of which I am first author are solely written by me.
 
 \subsection{\nameref{prt:tvt}}
 \Cref{prt:tvt} is based on a journal paper that quantitatively and qualitatively compares traditional \gls{IOT} architectures with \gls{IOT} systems using \gls{TOP} and contains a single chapter.
-This chapter is based on the journal paper: \emph{Could Tierless Programming Reduce IoT Development Grief?} \citep{lubbers_could_2022}.\footnote{This work is an extension of the conference article: \emph{Tiered versus Tierless IoT Stacks: Comparing Smart Campus Software Architectures} \citep{lubbers_tiered_2020}.\footnotemark{}}
-\footnotetext{This paper was partly funded by the Radboud-Glasgow Collaboration Fund.}
+This chapter is based on the journal paper: \emph{Could Tierless Programming Reduce IoT Development Grief?} \citep{lubbers_could_2022}\footnote{This work is an extension of the conference article: \emph{Tiered versus Tierless IoT Stacks: Comparing Smart Campus Software Architectures} \citep{lubbers_tiered_2020}\footnotemark.}.
+\footnotetext{This paper was partly funded by the 2019 Radboud-Glasgow Collaboration Fund.}
 
 It compares programming traditional tiered architectures to tierless architectures by showing a qualitative and a quantitative four-way comparison of a smart-campus application.
 
 \paragraph{Contribution:}
 Writing the paper was performed by all authors.
-I created the server application, the \gls{CLEAN}/\gls{ITASK}/\gls{MTASK} implementation (\glsxtrshort{CWS}) and the \gls{CLEAN}/\gls{ITASK} implementation (\glsxtrshort{CRS})
+I created the server application, the \gls{CLEAN}\slash{}\gls{ITASK}\slash{}\gls{MTASK} implementation (\glsxtrshort{CWS}) and the \gls{CLEAN}\slash{}\gls{ITASK} implementation (\glsxtrshort{CRS})
 Adrian Ramsingh created the \gls{MICROPYTHON} implementation (\glsxtrshort{PWS}), the original \gls{PYTHON} implementation (\glsxtrshort{PRS}) and the server application were created by \citet{hentschel_supersensors:_2016}.
 
 \input{subfilepostamble}