\documentclass[../thesis.tex]{subfiles}

\input{subfilepreamble}

\begin{document}
\input{subfileprefixsmall}
\ifSubfilesClassLoaded{\chapter*{Summary}}{\chapter{Summary}}%
\label{chp:summary}%
\glsresetall%
%\begin{center}
%\noindent%
The number of computers around us is growing exponentially, compounding the complexity of the systems in which they operate.
Many of these computers are \emph{edge devices} operating in \gls{IOT} systems.
Within these orchestrations of computers, they interact with the environment using sensors and actuators.
Edge devices often use low-cost microcontrollers designed for embedded applications.
They have little memory, unhurried processors, and are slow in communication but are also small and energy efficient.
Programming \gls{IOT} systems is complex since they are dynamic, interactive, distributed, collaborative, multi-tiered, and multitasking in nature.
The complexity is increased further by semantic friction that arises through different hardware and software characteristics between tiers.

A solution is found in \gls{TOP}.
%A solution is found in the declarative programming paradigm \gls{TOP}.%, a declarative programming paradigm.
In \gls{TOP}, the main building blocks are tasks, an abstract representation of work.
During execution, the current value of the task is observable, and other tasks can act upon it.
Collaboration patterns can be modelled by combining and transforming tasks into compound tasks.
From this declarative description of the work, a ready-for-work computer system is generated that guides all operators in doing the work.
An example of a \gls{TOP} system is \gls{ITASK}, a language which describes interactive web applications.
Programming edge devices benefits from \gls{TOP} as well.
However, it is not straightforward to run \gls{TOP} systems on resource-constrained edge devices.

This dissertation demonstrates how to orchestrate complete \gls{IOT} systems using \gls{TOP}.
%
First, I present advanced \gls{DSL} embedding techniques.
Then \gls{MTASK} is shown, a \gls{TOP} \gls{DSL} for \gls{IOT} edge devices, embedded in \gls{ITASK}.
Tasks are constructed and compiled at run time.
This allows tasks to be tailor-made for the current work requirements.
The compiled task is sent to the device for interpretation.
For a device to be used in an \gls{MTASK} system, it must to be programmed once with a lightweight domain-specific \gls{OS}.
This \gls{OS} executes tasks in an energy-efficient way and automates all communications and data sharing.
All aspects of the \gls{MTASK} system are shown: example applications, language design, implementation details, integration with \gls{ITASK}, and green computing facilities.
When using \gls{MTASK} in conjunction with \gls{ITASK}, entire \gls{IOT} systems are programmed tierlessly from a single source, language, paradigm, high abstraction level, and type system.
Many problems such as semantic friction; maintainability and robustness issues; and interoperation safety are mitigated when using tierless programming.
%This is a summary of 350--400 words.
%\end{center}
\end{document}
