From: Mart Lubbers Date: Thu, 9 Mar 2023 10:04:32 +0000 (+0100) Subject: manuscript X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=1241585df879e6723b374239bcc724cc5867621c;p=phd-thesis.git manuscript --- diff --git a/appx/mtask_aux.tex b/appx/mtask_aux.tex index fffec62..3edf747 100644 --- a/appx/mtask_aux.tex +++ b/appx/mtask_aux.tex @@ -65,7 +65,7 @@ class LightSensor v where \subsection{Motion detection sensor} The \gls{MTASK} language supports motion sensing using a \gls{PIR} sensor through a type class that only contains macros. \gls{PIR} sensors detect motion by the \gls{IR} reflection through a number of Fresnel lenses and communicates through a digital \gls{GPIO} pin. -Therefore, a \gls{PIR} is nothing more than a \cleaninline{DPIN} according to \gls{MTASK} but for uniformity, a type class is available (see \cref{lst:mtask_pir}). +Therefore, a \gls{PIR} is nothing more than a \cleaninline{DPin} according to \gls{MTASK} but for uniformity, a type class is available (see \cref{lst:mtask_pir}). \begin{lstClean}[label={lst:mtask_pir},caption={\Gls{PIR} sensor interface in \gls{MTASK}.}] :: PIR :== DPin diff --git a/back/acknowledgements.tex b/back/acknowledgements.tex index d8afe9a..50bed14 100644 --- a/back/acknowledgements.tex +++ b/back/acknowledgements.tex @@ -3,73 +3,74 @@ \input{subfilepreamble} \begin{document} -\input{subfileprefix} +\input{subfileprefixsmall} \ifSubfilesClassLoaded{\chapter*{Acknowledgements}}{\chapter{Acknowledgements}}% \label{chp:acknowledgements} -%\begin{center} While the research and writing carried out for this thesis was mostly done by me, it could not have been done without the support of many others. First of all I would like to thank Rinus Plasmeijer, Pieter Koopman, and Jan Martin Jansen for the supervision, I learned a lot from you, not only regarding academia but in many other aspects of life as well. -The BEST people, Adrian Ramsingh, Jeremy Singer, and Phil Trinder for the fruitful collaboration, and the memorable trip to Glasgow. -The \gls{3COWS}/SusTrainable group, for offering a platform for the various summer schools I had the opportunity to teach; and not to mention the countless meetings, dinners, and drinks we had. +The BEST people, Adrian Ramsingh, Jeremy Singer, and Phil Trinder for the fruitful collaboration and memorable trip to Glasgow. +The entire \gls{3COWS}/SusTrainable group, for offering a platform for the various summer schools I had the opportunity to teach; and not to mention the countless meetings, dinners, and drinks we had. The Royal Dutch Navy, in particular Teun de Groot and Ton van Heusden, for trusting me by funding the project. -\ldots -%All the colleagues and others that I had the privilege of sharing an office with, meeting in conferences, interact with in the department, or work with in some other way: -%Arjan Oortgiese, -%Bas Lijnse, -%Ellie Kimenai, -%Fok Bolderheij, -%Hans-Nikolai Vie\ss{}mann, -%Ingrid Berenbroek, -%John van Groningen, -%Jurri\"en Stutterheim, -%László Domoslai, -%Marie-José van Diem, -%Markus Klinik, -%Peter Achten, -%Ralf Hinze, -%Simone Meeuwsen, -%Sjaak Smetsers, -%Steffen Michels, -%Sven-Bodo Scholz, -%Tim Steenvoorden. -%% -%The many students that allowed me to (co) supervise them in their theses: -%Arjen Nederveen, -%Colin de Roos, -%Dave Artz, -%Elina Antonova -%Erin van der Veen, -%Gijs Alberts, -%Haye B\"ohm, -%Matheus Amazonas Cabral de Andrade, -%Michel de Boer, -%Sjoerd Crooijmans, -%Willem de Vos. -% -%I give special thanks to my mentors: -%Jos Baack, Francisco Torreira, Franc Grootjen, Louis Vuurpijl, and Larry Caruthers. -% -%And of course my friends and acquaintances that supported me throughout the process. -%Pieter Wolfert and Anouk Neerincx; -%Chris Kamphuis and Maudy Bijen; -%Koen Dercksen and Michelle Everard; -%Jules Kruijswijk en Nadia Klijn; -%George Gregoire; -%\selectlanguage{russian}Александер Барков\selectlanguage{british}; -%Tim Hirschler; -%Emma Lindahl; -%Truman Crandell; -%Annerieke Wessels; -%Camil Staps. -% -%\selectlanguage{dutch} -%Als laatste wil ik diegene bedanken die het dichtst bij mij staan. -%Elvira, Rosalie en Liselotte voor hun tomeloze geduld en ondersteuning wanneer dat nodig was. -%Mijn ouders in het bijzonder voor hun liefde en vertrouwen. -%Mijn oma, broers, schoonfamilie en alle andere familieleden die op wat voor manier dan ook bijgedragen hebben. -%\selectlanguage{british} +The manuscript committee, Sven-Bodo Scholz, Gabrielle Keller, Mary Sheeran, for reading this work carefully. -%\end{center} -\input{subfilepostamble} +All colleagues and others that I had the privilege of sharing an office with, meeting in conferences and summer schools, interact with in the department, or work with in some other way: +Anett Fekete, +Arjan Oortgiese, +Bas Lijnse, +Ellie Kimenai, +Fok Bolderheij, +Hans-Nikolai Vießmann, +Ia Mgvdliashvili, +Ingrid Berenbroek, +John van Groningen, +Jurriën Stutterheim, +László Domoslai, +Marie-José van Diem, +Markus Klinik, +Máté Cserép, +Peter Achten, +Ralf Hinze, +Simone Meeuwsen, +Sjaak Smetsers, +Steffen Michels, +Sven-Bodo Scholz, +Tim Steenvoorden, and everyone else from department. + +The many students that allowed and trusted me to (co) supervise them in their theses: +Arjen Nederveen, +Colin de Roos, +Dave Artz, +Elina Antonova, +Erin van der Veen, +Gijs Alberts, +Haye Böhm, +Matheus Amazonas Cabral de Andrade, +Michel de Boer, +Sjoerd Crooijmans, +Willem de Vos. + +I give special thanks to my mentors: +Jos Baack for getting me to graduate high school, Francisco Torreira for sparking my love for academia, and Larry Caruthers for giving me valuable practical experience. + +All friends that supported me in real life or through pen throughout the process: +Pieter and Anouk; +Chris and Maudy; +Koen and Michelle; +Alba; +\foreignlanguage{russian}{Александер}; +Annerieke; +Camil and Devika; +Emma; +George; +Jules and Nadia; +Tim; +and Truman. + +\begin{otherlanguage}{dutch} +Mijn ouders bedank ik voor hun tomeloze liefde en vertrouwen. +Mijn oma, broers, schoonfamilie en alle andere familieleden die op wat voor manier dan ook bijgedragen hebben. +Als laatste wil ik diegenen bedanken die het dichtst bij mij staan: Elvira, Rosalie en Liselotte. +Bedankt voor jullie onmisbare en oneindige geduld, ondersteuning en liefde wanneer dat nodig was. +\end{otherlanguage} \end{document} diff --git a/back/samenvatting.tex b/back/samenvatting.tex index b1db2c7..577103a 100644 --- a/back/samenvatting.tex +++ b/back/samenvatting.tex @@ -4,36 +4,35 @@ \begin{document} \input{subfileprefixsmall} -\selectlanguage{dutch} +\begin{otherlanguage}{dutch} \ifSubfilesClassLoaded{\chapter*{Samenvatting}}{\chapter{Samenvatting}}% \label{chp:samenvatting} -Het aantal computers om ons heen groeit enorm en hiermee ook de complexiteit van de systemen waarin ze zich bevinden. -Veel van deze computers zijn \emph{randcomputers} die onderdeel zijn van het Internet of Things (IoT). -Binnen deze orkesten interacteren randcomputers met de buitenwereld door sensoren en actuatoren. -Randcomputers bevatten vaak goedkope microcontrollers die speciaal ontworpen zijn voor ge\"{\i}ntegreerde systemen. +Het ontwikkelen van betrouwbare software voor Internet of Things (\IOT{}) systemen is moeilijk omdat ze dynamisch, interactief, gedistribueerd, samenwerkend, meerlaags en multitasking zijn. +Ook draagt de semantische wrijving voorkomend uit de grote verscheidenheid aan hard- en software karakteristieken tussen de lagen bij aan dit probleem. +Veel van deze computers zijn \emph{randcomputers} die onderdeel zijn van het \IOT{}. +Randcomputers bestaan vaak uit goedkope microcontrollers, ontworpen voor geïntegreerde systemen, en ze interacteren met de buitenwereld door sensoren en actuatoren. Enerzijds hebben ze weinig geheugen, langzame rekenkernen en trage communicatie. -Anderzijds zijn ze klein en hoogst energie-effici\"{e}nt. -Het programmeren van deze IoT-systemen is complex omdat ze dynamisch, interactief, gedistribueerd, samenwerkend, meerlaags en multitasking zijn. -Ook draagt de semantische wrijving die voortkomt uit de grote verscheidenheid aan hard- en software karakteristieken tussen de lagen verder bij aan dit probleem. +Anderzijds zijn ze klein en hoogst energie-efficiënt. -Taakge\"{o}rienteerd programmeren (TOP) is hierbij een oplossing. -In TOP zijn taken, abstracte representaties van werk, de bouwstenen. -Tijdens het uitvoeren van taken kan de huidige waarde geobserveerd worden en hierop kunnen andere taken reageren. -Door taken samen te voegen of te transformeren kunnen samenwerkingsvormen uitgedrukt worden. -Vanuit deze beschrijving wordt een computersysteem gegenereerd dat gebruikers begeleidt in het uitvoeren van het werk. -Een voorbeeld van een TOP-systeem is iTask, ontworpen om interactieve webtoepassingen te beschrijven. -De wens is om TOP ook voor randcomputers te gebruiken, maar het is niet evident hoe TOP-systemen op dusdanig beperkte middelen in te zetten. +Taakgeörienteerd programmeren (TOP) is geschikt om met de uitdagingen van \IOT{} systemen om te gaan. +In TOP zijn abstracte representaties van werk, de taken, de bouwstenen. +Tijdens het uitvoeren van een taak kan de huidige waarde geobserveerd worden en hierop kunnen andere taken reageren. +Door taken te combineren of te transformeren kunnen samenwerkingsvormen uitgedrukt worden. +Van deze beschrijving wordt een computersysteem gegenereerd dat gebruikers begeleidt in het uitvoeren van het werk. +Randcomputers hebben ook baat bij TOP, al is niet eenvoudig om TOP-systemen erop in te zetten. -Deze dissertatie laat zien hoe gehele IoT-systemen georkestreerd kunnen worden met {TOP}. -Allereerst laat ik een wat technieken zien om ingebedde domein-specifieke talen te maken. +Deze dissertatie laat zien hoe gehele \IOT{}-systemen georkestreerd kunnen worden met {TOP}. +Gebruik makend van techniek kunnen alle lagen van een \IOT{}-systeem en hun samenwerking uitgedrukt worden in één hoog abstractieniveau, programmeertaal, paradigma en typesysteem. +Allereerst laat ik enkele technieken zien om ingebedde domein-specifieke talen te maken. Daarna beschrijf ik mTask, een TOP-systeem voor randcomputers ingebed in iTask. Taken worden tijdens het uitvoeren opgebouwd, waardoor ze afgestemd kunnen worden op de huidige werkeisen. Vervolgens worden ze naar het apparaat gestuurd ter interpretatie. -Een randcomputer is geschikt voor een mTask als het uitgerust is met het lichtgewicht domeinspecifieke besturingssysteem. +Na eenmalig uitgerust te worden met het domeinspecifieke besturingssysteem is een randcomputer geschikt voor mTask. Dit stuurprogramma voert de ontvangen taken energiezuinig uit en automatiseert tevens alle communicatie en dataverwerking. Alle aspecten van het mTask-systeem worden beschreven: voorbeeldprogramma's, taalontwerp, implementatiedetails, integratie met iTask en de energiezuinige functionaliteit. -Indien samen met iTask gebruikt, kan een geheel IoT-systeem laagloos geprogrammeerd worden, gebruik makend van \'e\'en broncode, programmeertaal en paradigma, abstractieniveau en typesysteem. -Eveneens wordt de semantische wrijving, onderhouds- en robuustheidsproblematiek en moeizame onderlinge samenwerking verzacht. -\input{subfilepostamble} -\selectlanguage{british} + +Het laagloos programmeren van \IOT{} systemen wordt ook vergeleken met traditioneel gelaagd programmeren. +Laagloos programmeren leidt tot minder code en minder programmeertalen. +Door het gebruik van één paradigma en een systeembreed typesysteem verlaagt laagloos programmeren de semantische wrijving, onderhouds- en robuustheidsproblematiek en moeizame onderlinge samenwerking. +\end{otherlanguage} \end{document} diff --git a/back/summary.tex b/back/summary.tex index 41272cb..6a8335e 100644 --- a/back/summary.tex +++ b/back/summary.tex @@ -20,7 +20,7 @@ Collaboration patterns can be modelled by combining and transforming tasks into Programming edge devices benefits from \gls{TOP} as well, but running such a system within the limitations of resource-constrained microcontrollers is not straightforward. This dissertation demonstrates how to include edge devices in \gls{TOP} systems using \glspl{DSL}. -With these techniques, all tiers and their interoperation of an \gls{IOT} system is specified in a single high-level source, language, paradigm, high abstraction level, and type system. +With these techniques, all tiers and their interoperation of an \gls{IOT} system are specified in a single high-level source, language, paradigm, high abstraction level, and type system. 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 in order to allow tasks to be tailored to the current work requirements. @@ -31,6 +31,6 @@ All aspects of the \gls{MTASK} system are shown: example applications, language Finally, tierless \gls{IOT} programming is compared to traditional tiered programming. In tierless programming frameworks, the size of the code and the number of required programming languages is reduced significantly. -By using a single paradigm and a system-wide type system, tierless programming reduces problems such semantic friction; maintainability and robustness issues; and interoperation safety. +By using a single paradigm and a system-wide type system, tierless programming reduces problems such as semantic friction; maintainability and robustness issues; and interoperation safety. %This is a summary of 350--400 words. \end{document} diff --git a/front/motto.tex b/front/motto.tex index 4c93573..ee34631 100644 --- a/front/motto.tex +++ b/front/motto.tex @@ -16,7 +16,7 @@ \foreignlanguage{russian}{Рукописи не горят.}\\ (Manuscripts don't burn.) }{% - \foreignlanguage{russian}{М.А.\ (Mихаил) Булгаков}\\ + \foreignlanguage{russian}{М.А.\ (Михаил) Булгаков}\\ (M.A.\ (Mikhail) Bulgakov) } \epigraph{% diff --git a/preamble/crossref.tex b/preamble/crossref.tex index 459be1c..f432341 100644 --- a/preamble/crossref.tex +++ b/preamble/crossref.tex @@ -1,10 +1,6 @@ \usepackage[hyphens]{url} \usepackage[pdflang={en-GB},breaklinks,plainpages=false]{hyperref} % hyperlinks \usepackage{xr} % hyperlinks -%\renewcommand*{\backref}[1]{} -%\renewcommand*{\backrefalt}[4]{[{% -% \ifcase #1 not cited.\or p.~#2.\else pp. #2.\fi%chktex 1 -%}]} \hypersetup{% pdftitle={\mytitle}, pdfauthor={\myauthor}, diff --git a/thesis.tex b/thesis.tex index d25e935..105cb75 100644 --- a/thesis.tex +++ b/thesis.tex @@ -3,7 +3,7 @@ \def\mytitle{Orchestrating the Internet of Things\texorpdfstring{\\}{ }with Task-Oriented Programming} \def\mysubtitle{a purely functional rhapsody} \def\myauthor{Mart Lubbers} -\def\mydate{\formatdate{1}{2}{2023}} +\def\mydate{\formatdate{9}{3}{2023}} \input{preamble}