Hi, Great notes. I like a lot.
A few (mostly technical) comments: > Concept of Computation > > What does it mean to compute? Turns out this is a complicated question. From > what I can tell, to compute is an actualization (or concrete version) of a > mathematical function. We are swimming in a universe of functions in math, > statistics and the natural world. The lights in here are a function of > certain inputs: ie, the amount of electricity and whether the switch is > engaged. > In all fairness, this is already an opiniated view of computations. (It is the view of computations for a functional programmer.) On top of that, the usual maths functions, do not treat well of partiality. (non-termination, exceptions...) > Alan Turing: Ideas of computation can be found in i) his contributions to > the concept of an algorithm and ii) his description of a turing machine. > Algorithm: An algorithm is just a step-by-step procedure for calculations. > Those steps are expressed as a finite list of well-defined instructions for > calculating a function. > Turing Machine: This is a theoretical computer, that consumes i) an infinite > ribbon of tape and ii) can perform read and write operations on the tape and > iii) alters it's own state. This is a gross simplification. But the concept > is that a Turing machine with the correct minimal set of operations can > calculate anything that is computable, no matter the complexity (anything > for which there is a function). Anything that is computable is different that anything for which there is a function, at least in classic mathematics. 2 simple arguments: - some functions are not decidable. (halting problem, for example.) However, in classic mathematics such a function exists. You can even prove its value on some inputs. - There is an uncountable number of functions from natural numbers to natural numbers, and a countable number of programs taking a natural number to a natural number. (A program is a list of character.) So there is more functions than computable functions (and, uncountably, infinitely so.). There is a branch of mathematics, constructive mathematics, that exclude things that you can not construct with a program. > LISP's approach to computing: Created by John McCarthy, Lisp was originally > created as a kind of practical mathematical notation. Lists were the major > data structures and functions were just another value passed into a list. > > Probably one of the defining qualities of Lisp, is that it can be written in > itself (code is data). This is what makes on-the-fly change of your running > code (ie macros) possible. macros are not on the fly change of your running code. Best, Nicolas. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en