Hey Nicolas, Thanks for the feedback and corrections. I was trying to hone in on OO and Lisp's model of what it means to compute. While this just served as a backdrop for the conceptual and code differences between Bkeeping's Java and Clojure versions, I can see a much deeper analysis happening here ( ooh, this is fun :).
There is indeed an infinite number of functions, or relationships between natural numbers. I don't think that means that that any one of those relationships is not computable because it is within the range of infinite functions. The countable parts of a program can still accept an infinite amount of input, like Turing's machine. So the best I can say is that all functions (relationships between natural numbers) can be computable, but humans may or may not have figured out a way to represent all natural numbers. But really, I meant for the term *function*, to give a philosophical prism for human understanding and reasoning about the relationship between things in the natural world. So any of the relationships between any of the infinite natural numbers, should be computable. Then, what mechanisms do we get for crunching those numbers, in OO vs. LISP. Feel free to respond, correct, etc. Cheers Tim Washington Interruptsoftware.ca 416.843.9060 On Fri, Jul 27, 2012 at 3:14 PM, nicolas.o...@gmail.com < nicolas.o...@gmail.com> wrote: > 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