Clojure & Me
Who Am I
My Progression
Guiding Principle: maximize expressive power
Concept of Computation
What does it mean to compute?
Me: to compute is an actualization (or concrete version) of a mathematical function.
Alan Turing: his ideas of computation can be found in
Algorithm
Turing Machine (a gross simplification)
A theoretical computer, that
The concept is that a Turing machine can calculate anything that is computable, no matter the complexity (ie. anything for which there is a function).
Let's look at 2 programming models and how they address the question of how we should go about computing...
OBJECT-ORIENTED
OO is actually a programming paradigm, based on what Alan Kay called the "Actors Model"
This definition is derived from early versions of Smalltalk. Rule 6 shows Smalltalk's Lisp heritage
LISP
Bookkeeping System in Java (OO)
Bringing in Clojure (LISP)
s-expressions (code is data) meant I didn't need XML as an extra data transfer language between my systems
functions and macros removed need for a separate DSL and library
Other Benefits
Much smaller code size
Compare...
Bkeeping Alpha
Thanks :)