From aa426ef109371a850a495e5edeb92027ef09e985 Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Mon, 9 May 2016 19:50:13 +0200
Subject: opdracht 5 & 6

---
 paper/paper.tex | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 paper/paper.tex

(limited to 'paper/paper.tex')

diff --git a/paper/paper.tex b/paper/paper.tex
new file mode 100644
index 0000000..5573617
--- /dev/null
+++ b/paper/paper.tex
@@ -0,0 +1,61 @@
+\documentclass[a4paper]{article}
+
+\usepackage[english]{babel}
+\usepackage{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage{natbib}
+
+\title{High-level code processing in a functional style}
+\author{Camil Staps}
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+	As the tools provided by programming languages become more abstract and
+	semantically complex, it becomes necessary to have systems that can reason
+	about these programming languages on a high abstraction level. Functional
+	languages can aid interpreter and compiler designers: abstraction is trivial,
+	and in addition to that the use of a functional language makes it easier to
+	prove properties about programs. By means of a case study, an interpreter of
+	the language While \citep{proganal}, the advantages of functional languages
+	for code processing are shown.
+\end{abstract}
+
+\section{Introduction}
+Compilers and interpreters are among the most complex pieces of software
+written to date. Due to the rapid technological development of the last
+decades, programming languages have become semantically so complex, that it is
+impossible for a programmer to keep in mind the impact of changes on generated
+machine code. This led to the \emph{assumption problem}: developers constantly
+rely on assumptions about how the language that they write in works. Intuitive
+semantics may change over time, however, and we cannot found a world relying so
+principally on software as ours on contingent assumptions.
+
+Algol 60 was the first language of which the semantics were precisely
+documented \citep{algol}. Its report is the primary link between Algol
+programmers and the compiler designers, clarifying the language for the first
+and specifying it for the second. These kind of specifications were the first
+solution to the assumption problem.
+
+However, programming languages have evolved significantly since Algol 60, and
+semantical specifications have become increasingly complex. Whereas the
+assumption problem has been solved on the programmer's side, it has now
+occurred on the compiler designer's side: the specification has become too
+mathematically complex to efficiently translate it into imperative code, and
+writing a correct compiler or interpreter is no longer trivial.
+
+Functional programming languages offer writers of code processing systems tools
+to efficiently implement semantical specifications. Using a higher level of
+abstraction, the gap between specification and implementation is closed,
+allowing for quicker correctness checks and better maintainable code. The
+connections between functional languages and mathematics let us \emph{prove}
+properties about code processing systems (for example, their correctness with
+respect to a specification).
+
+\bibliographystyle{jfp}
+\bibliography{paper}
+
+\end{document}
+
-- 
cgit v1.2.3

