comments ms
[phd-thesis.git] / intro / intro.tex
index c0a43b7..edf9850 100644 (file)
@@ -39,7 +39,7 @@ In a traditional setting, an \gls{IOT} engineer has to program each device and t
 This results in semantic friction, which makes programming and maintaining \gls{IOT} systems a complex and error-prone process.
 
 This dissertation describes the research carried out around orchestrating these complex \gls{IOT} systems using \gls{TOP}.
-\Gls{TOP} is an innovative tierless programming paradigm for interactive multi-layered systems\todo{tierless introductie mist een beetje}.
+\Gls{TOP} is an innovative tierless programming paradigm for interactive multi-layered systems.
 By utilising advanced compiler technologies, much of the internals, communication, and interoperation between the tiers or layers of the applications are automatically generated.
 The compiler generates an application controlling all interconnected components from a single declarative specification of the required work.
 For example, the \gls{TOP} system \gls{ITASK} is used to program all layers of multi-user distributed web applications from a single source specification.
@@ -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.
+Using \glspl{DSL}, hardware requirements can be drastically lowered, even while maintaining a high abstraction level for the specified domain.\todo{why?}
 
 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}.
@@ -71,7 +71,7 @@ The chapters can be read independently of each other.
 Hence, the chapters in this episode are best read in order.
 It introduces \gls{IOT} edge device programming, shows the complete \gls{MTASK} language, provides details on how \gls{MTASK} is integrated with \gls{ITASK}, shows how the byte code compiler is implemented, presents a guide for green computing with \gls{MTASK}, and ends with a conclusion and overview of future and related work.
 \Cref{prt:tvt} consists of a single chapter that is based on a journal article.
-The chapter provides a qualitative and quantitative comparison of traditional tiered \gls{IOT} programming  and tierless programming using a real-world application.
+The chapter provides a qualitative and quantitative comparison of traditional tiered \gls{IOT} programming and tierless programming using a real-world application.
 The chapter is readable independently.
 
 The following sections in this prelude provide background material on the \gls{IOT}, \glspl{DSL}, and \gls{TOP} after which a detailed overview of the contributions is presented.
@@ -274,7 +274,6 @@ As an example, \cref{lst:todo,fig:todo} show the code and \gls{UI} for an intera
 The user modifies a shared to-do list through an editor directly or using some predefined actions.
 Furthermore, in parallel, the length of the list is shown to demonstrate \glspl{SDS}.
 Using \gls{ITASK}, complex collaborations of users and tasks are described on a high level.
-In this way, the \gls{ITASK} system is a tierless system taking care of both the presentation and application layer (see \cref{fig:iot-layers}).
 
 \cleaninputlisting[float=p,firstline=6,lastline=22,tabsize=3,numbers=left,caption={The code for a shared to-do list in \gls{ITASK}.},label={lst:todo}]{lst/sharedlist.icl}
 
@@ -295,7 +294,7 @@ Special combinators (e.g.\ \cleaninline{@>>} at \cref{lst:todo_ui}) are used to
 
 \subsection{The mTask system}
 The work for \gls{IOT} edge devices can often be succinctly described by \gls{TOP} programs.
-Software on microcontrollers is usually composed of smaller basic tasks, are interactive, and shares data with other components or the server.
+Software on microcontrollers is usually composed of smaller basic tasks, is interactive, and shares data with other components or the server.
 The \gls{ITASK} system seems an obvious candidate for bringing \gls{TOP} to \gls{IOT} edge devices.
 However, an \gls{ITASK} application contains many features that are not needed on \emph{edge devices} such as higher-order tasks, support for a distributed architecture, a multi-user web server, and facilities to generate \glspl{GUI} for any user-defined type.
 Furthermore, \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 memory.
@@ -367,6 +366,19 @@ Such a formal specification allows for symbolic execution, hint generation, but
 %The engine is the software or hardware that executes these specifications as a ready-for-work application.
 %Defining comparable semantics for the \gls{MTASK} language is in progress \citep{antonova_mtask_2022}.
 
+\subsection{Tierless programming}
+Both \gls{ITASK} and \imtask{} are so called tierless systems.
+Tierless programming is an entirely different development paradigm compared to traditional, tiered, programming.
+In tiered programming, every component\slash{}tier is separately developed, possibly in different programming languages and programming paradigms, and integrated in the system as a whole.
+On the one hand, it is an advantage to be able to choose the most suitable programming language for the specific tier.
+But on the other, it increases the amount of integration work that needs to be done and it may increase the semantic friction between the tiers.
+In contrast, tierless programming languages synthesise all tiers of a software stack from a single high-level specification.
+Hence, reducing the semantic friction, increasing the maintainability costs, and reducing the possibility for runtime errors.
+The term tierless programming originated from the web programming system Links \citep{cooper2006links}.
+In Links, code for each tier simultaneously checked by the compiler, and compiled to HTML and JavaScript for the web client and to SQL on the server to interact with the database system.
+The \gls{ITASK} system is a tierless system taking care of both the presentation and application layer (see \cref{fig:iot-layers}).
+When \gls{ITASK} is used in conjunction with \gls{MTASK}, all layers of an \gls{IOT} system can be programmed from a single source and hence they are a tierless \gls{IOT} system.
+
 \section{Contributions}%
 \label{sec:contributions}
 This section provides a thorough overview of the relation between the scientific publications and the contents of this thesis.
@@ -383,7 +395,7 @@ This paper-based episode is based on the following papers:
        \item \emph{First-\kern-1ptClass Data Types in Shallow Embedded Domain-Specific Languages} \citep*{lubbers_first-class_2022}\label{enum:first-class} is the basis for \cref{chp:first-class_datatypes}.
                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}.
                The chapter also serves as a gentle introduction to, and contains a thorough literature study on \glsxtrlong{TH}.
-               The paper was published at the \ifl{} 2022 in Kopenhagen, Denmark.
+               The paper was published at the \ifl{} 2022 in Copenhagen, Denmark.
 \end{enumerate}
 
 \paragraph{Contribution:}