\section{Related Work}
\label{relatedwork}

This chapter will present different ideas and projects which have
served as motivation and inspiration not only for the \textit{Drift} language
but for the entire \textit{Drift} project.

First two talks by Rich Hickey will be presented and the relevant
aspects will be extracted. The first talk discusses the necessity
and design of a ``Language of the System'', especially in the
context of highly distributed systems and the second talk
introduces the concepts of \textit{place oriented programming}
and \textit{value oriented programming} with an emphasis on
the importance of immutable data in programming language design.

Then, as a representative of the \textit{functional programming}
approach, \textit{Cuneiform}, a functional scientific workflow language
and \textit{HiWay}, its distributed execution engine
will be introduced. Both of which are being developed here at the
Humboldt University of Berlin at the department of bioinformatics (WBI)
and have served as a major source of inspiration and opposing
concepts.

After that, core concepts of UNIX-like operating system design
and more importantly of the UNIX shell \textit{bash} as one representative
of a typicall UNIX shell are being introduced. Especially a
mapping between the language constructs of the \textit{bash} shell
and core concepts of functional programming languages will be
presented.

Furthermore a new distributed data base project will be introduced
which tries to combine the functional programming concepts of
immutable data and value orientation with the distributed data base
context of data accretion, distributed logging, time series data
and streaming.

Then the source code version control system \textit{git} will
be introduced because it shows how a seemingly stateful system
on the user facing side can be implemented on top of an immutable,
append only file system of objects addressed by hashes of hashes.

At last a talk by Bret Victor will be summarized in which he presents
his idea of \textit{immediate feedback} in the context of programming
and tooling for programming. In this talk he showcases multiple
prototypes which show how to interactively visualize code and how
this could be used to aid the process of developing software.
The most relevant feature presented will be a \textit{time bar}
which allows to interactively go back and forth through past
states of the code and the actively running program.

