X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=back%2Fsummary.tex;fp=back%2Fsummary.tex;h=65279553df72c47e7ce71508438be01dd33af274;hb=29cb219e56ad3b238d81be2f71205120f689375e;hp=96f77a98fc48addbd54530717b85d9c10d417617;hpb=ed3041263afe2ea88dc234a46f3b00d63493b8a8;p=phd-thesis.git diff --git a/back/summary.tex b/back/summary.tex index 96f77a9..6527955 100644 --- a/back/summary.tex +++ b/back/summary.tex @@ -6,34 +6,37 @@ \input{subfileprefixsmall} \chapter{Summary}% \label{chp:summary}% +\glsresetall% %\begin{center} %\noindent% -The number of computers around us is growing exponentially. -With it, the systems in which they operate are becoming increasingly complex. -Many of these computers are so called \emph{edge devices}, operating in \glsxtrfull{IOT} systems. -Within these orchestras of computers, they perform the role of interacting with the outside world using sensors and actuators. -These specialised computers designed for embedded applications are often powered by microcontrollers and therefore have little memory, unhurried processors, no \glsxtrshort{OS} and slow communication. -On the other hand, they are cheap, tiny, and energy efficient. -Programming \glsxtrshort{IOT} systems is complex because they are dynamic, interactive, distributed, collaborative, multi-user, multi-tiered, and multitasking. -This is impeded even more due to the computers in each tier having vastly different hardware and software characteristics; using different programming languages; and operating in different abstraction levels, causing semantic friction. +The number of computers around us is growing exponentially, thus increasing the complexity of the systems in which they operate as well. +Many of these computers are \emph{edge devices} operating in \gls{IOT} systems. +Within these orchestras of computers, they interact with their environment using sensors and actuators. +Edge devices usually use cheap microcontrollers designed for embedded applications, and therefore have little memory, unhurried processors, no \gls{OS}, and slow communication but are tiny and energy efficient. +Programming \gls{IOT} systems is complex since they are dynamic, interactive, distributed, collaborative, multi-tiered, and multitasking. +This is impeded even more by semantic friction that arises through different hardware and software characteristics between the tiers. -\Glsxtrfull{TOP} is a declarative programming paradigm %with roots in functional programming -that allows interactive collaborative workflows to be specified for the work that needs to be done. -From this declarative specification, a ready-for-work computer program the interoperation is generated. -The main building blocks of \glsxtrshort{TOP} programs are tasks, an abstract representation of work that needs to be done. -During execution, the current value of a task is observable and other tasks can act upon it. -Tasks are combined and transformed to create compound tasks, allowing the modelling of many collaboration patterns. -Tasks running on edge devices can intuitively be built from the same \glsxtrshort{TOP} concepts as the interactive collaborative applications \glsxtrshort{TOP} was originally designed for, albeit with domain-specific primitives such as sensor and actuator access. -However, it is not straightforward to run \glsxtrshort{TOP} systems on edge devices due to the severe hardware constraints. - -In this dissertation I show how to orchestrate complete \glsxtrshort{IOT} systems using \glsxtrshort{TOP}. -First, I present advanced \glsxtrfull{DSL} embedding techniques that make the creation of a \glsxtrshort{DSL} such as \gls{MTASK} possible. -Then \glsxtrshort{MTASK} is shown, a \glsxtrshort{TOP} \glsxtrshort{DSL} for \glsxtrshort{IOT} edge devices. -\gls{MTASK} is embedded in \gls{ITASK}, a general-purpose \glsxtrshort{TOP} language mostly used to program interactive web applications. -All aspects of the \gls{MTASK} system are shown: the design of the language, details on the implementation, the integration with \gls{ITASK}, and a detailed overview of the green computing facilities. -Using \gls{MTASK} in conjunction with \gls{ITASK}, entire \glsxtrshort{IOT} systems are programmed from a single source, paradigm, high abstraction level, and type system. -Consequently, many problems such as semantic friction, maintainability, robustness, interoperation safety are mitigated. +A solution is found in \gls{TOP}, a declarative programming paradigm. +In \gls{TOP}, the main building blocks are tasks, an abstract representation of work. +During execution, the task's current value, is observable and other tasks can act upon it. +Tasks can be combined and transformed to create compound tasks, allowing the modelling of many collaboration patterns. +From this declarative description of the work, a ready-for-work computer system is generated that guides the user in doing the work. +An example of a \gls{TOP} system is \gls{ITASK}, a language for describing interactive web applications. +Programming edge devices would benefit from \gls{TOP} as well. +However, it is not straightforward to run \gls{TOP} systems on resource-constrained edge devices. +This dissertation shows 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 to allow tasks to be tailor-made for the work that needs to be done. +The compiled task is sent to the device for interpretation. +For a device to be used in an \gls{MTASK} system, it needs to be programmed once with a lightweight domain-specific \gls{OS}. +This \gls{OS} executes tasks in an energy efficient way and automates all communication 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, paradigm, high abstraction level, and type system. +The dissertation concludes with a comparison between tierless programming and traditional tiered programming. +We show that many problems such as semantic friction, maintainability, robustness, and interoperation safety are mitigated when using tierless programming. %This is a summary of 350--400 words. %\end{center} \end{document}