"Pascal J. Bourguignon" <
p...@informatimago.com> writes:
> arc <
arc.del...@vorsicht-bissig.de> writes:
>
>> "Pascal J. Bourguignon" <
p...@informatimago.com> writes:
>>
>>> arc <
arc.del...@vorsicht-bissig.de> writes:
>>>
>>> Lambda Calculus and Universal Turing Machines are Turing-equivalent,
>>> but Lambda Calculus is much more powerful than Universal Turing
>>> Machines.
>>
>> Perhaps the problem is that you're interpreting 'power' to mean
>> something different from me? In other words, maybe it's your
>> comprehension that's tainted (by evil!), and not my expression...
>>
>> I'm using 'power' to mean 'computational power'. Two systems have the
>> same computational power if the the set of functions they can compute is
>> the same. Hopefully you agree that the lambda calculus and Turing
>> machines are of equivalent power in this sense.
>
> That's what Turing-equivalent means. "Turing-equivalent" has a
> mathematical definition. "power" has not.
Another hilarious objection!
I'm sure you must just be having me on here. Obviously we're not
writing in a formal, mathematically precise language here. And even if
we were, in those languages it's entirely apropos to define new terms.
Anyway, it's perfectly ordinary to use 'power' in this sense, as a few
minutes with Google can demonstrate:
"In computational complexity theory, decision problems are typically
defined as formal languages, and complexity classes are defined as the
sets of the formal languages that can be parsed by machines with limited
computational power."
(
http://en.wikipedia.org/wiki/Formal_language )
"Church’s lambda calculus is equivalent in power to the Turing machine,
although Church and Turing both developed their respective models of
computation independently. "
(
http://classes.soe.ucsc.edu/cmps112/Spring03/readings/lambdacalculus/project3.html )
"A major theme of the 20th Century has been the growing understanding of
the nature of computation. This began in earnest in the 1930's with the
independent introduction of several theoretical models of computation,
including the recursive functions, the lambda calculus and the Turing
machine. While these models were very different in character, they were
soon proven to be of equal power and are now widely considered to
represent the most powerful level of computation possible. Turing
machines, in particular, have been a very influential model and are the
basis for the physical computers we use today."
(
http://www.amirrorclear.net/academic/research-topics/other-topics/hypercomputation.html )
"Right; that was all I was trying to say with the 'a TuringMachine is
considerably "lower-level"' comment. Note that it is independent of the
arguments about interaction and encapsulation given in
InteractiveComputationIsMorePowerfulThanNonInteractive, which deal with
power, not expressiveness."
(
http://c2.com/cgi/wiki?ModelsOfComputation )
That last one is interesting as that commenter is explicitly making a
distinction between power and expressiveness.
I'm surprised you aren't familiar with this usage, actually, given that
it's pretty common, and you clearly know a bit about the area.
(just for the record, I think 'power' meaning expressive power is pretty
common too, and I wouldn't object to anyone using that. The word 'power'
means a lot of different things in computing contexts, including the
ability of machine to accomplish a number of tasks in a particular time,
so it's important to work out which one the writer is using before
accusing them of tainted expression...)
>
>> What do you mean by 'power' when you say that the lambda calculus is
>> more powerful than Turing machines?
>
> Expressive power. Power of being usable to write practical programs.
And does this have a mathematical definition? It sounds like it's got a
lot to do with what humans find easy to do, so I'm doubtful...
>
>> Anyway, the point was the language Rivka described is inadequate to
>> serve as a general-purpose programming language. Even if you expect a
>> lisp to be 'more powerful' than a Turing machine in some sense, you
>> still expect it to be at least as powerful as a Turing machine.
>
> Which is not saying much!
It's not saying much to say a language is not turing complete? (*laughs*)
I'm sure you must be joking here (or maybe not thinking about what
you're saying). The language Rivka describes is not really suitable for
writing any programs with it. It's suitable for maybe a simple
data-description language. There's certainly a big difference between
this and a Turing-complete language.
Even if you're talking about expressiveness, Rivka's language isn't up
to expressing many computations, even though what it can express it
might express more clearly than a UTM is.
That's the same paper.
>
>> Are you sure he's actually using the lambda calculus there? I thought
>> McCarthy didn't understand the lambda calculus when he wrote this —
>> didn't this come up in a recent thread here?
>
> Yes. But it's trivial to implement this lisp in lambda calculus. It
> can be done in a long afternoon, or a short week end.
So he didn't implement LISP in the lambda calculus. And you're
complaining that I'm not precise enough...
>
>> If you can write a compiler for an x86
>> machine, you can write a compiler for a UTM.
>>
>> I'd be highly surprised if this hasn't been done before. If it hasn't,
>> it's just because no-one's been bothered, not that it's impossible.
>
> If it takes more than 80 man.year to do, then it would be impossible to
> do for any human being, even if he bothered!
I'm not convinced it would be that difficult.
Conceptually, all you really have to do is to take the simplest CPU
instruction set that has already has a lamdba calculus compiler written
for it, and then implement all of those instructions on a UTM. A lot of
this will be quite boring - you'd need to implement accessing a memory
address and reading a word to a routine that moves the head back and
forth between the part of the tape that represents a register to the
part of the tape that represents the memory address and copy the data a
bit at a time.
That might not be the nicest way to do it, but it would work, so the
problem really reduces to implementing a von Neumann machine on a UTM.
That might be a bit of work, but surely not 80 man years.
Anyway, sure, I think the lambda calculus is much nicer than Turing
machines too.
--
-arc.