From f7047c8e28285e5ff3887ed5fcc889183e28f959 Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Wed, 18 May 2016 23:26:56 +0200
Subject: Start rewrite intro; add organisation; division in separate files

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

(limited to 'paper/intro.tex')

diff --git a/paper/intro.tex b/paper/intro.tex
new file mode 100644
index 0000000..49fbeed
--- /dev/null
+++ b/paper/intro.tex
@@ -0,0 +1,30 @@
+\section{Introduction}
+\label{sec:intro}
+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 increasingly complex, semantically
+speaking. It has become impossible for a programmer to keep in mind the impact
+of their changes on the 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 proper definitions are required now that our world relies so
+principally on software.
+
+Nowadays, programming languages have semantical specifications as the main link
+between programmers and compiler designers. This solves the assumption problem
+on the programmer's side. However, now that programming languages become
+increasingly complex, the same problem occurs on the compiler designer's side:
+the specification has become too complex to efficiently translate it into
+imperative code, and writing a correct compiler or interpreter has become no
+trivial task.
+
+Functional programming languages offer writers of code processing systems tools
+to efficiently work with semantical specifications. Using a high 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).
+
+\input{intro-org}
+\input{intro-while}
-- 
cgit v1.2.3

