From newshub.ccs.yorku.ca!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!usc!wupost!uunet!mcsun!uknet!edcastle!aiai!jeff Tue Jan 21 09:27:37 EST 1992
Article 2939 of comp.ai.philosophy:
Xref: newshub.ccs.yorku.ca comp.ai.philosophy:2939 sci.philosophy.tech:1919
Path: newshub.ccs.yorku.ca!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!usc!wupost!uunet!mcsun!uknet!edcastle!aiai!jeff
>From: jeff@aiai.ed.ac.uk (Jeff Dalton)
Newsgroups: comp.ai.philosophy,sci.philosophy.tech
Subject: Re: Causes and Reasons
Message-ID: <6034@skye.ed.ac.uk>
Date: 21 Jan 92 02:11:46 GMT
References: <5967@skye.ed.ac.uk> <1992Jan14.192736.24736@bronze.ucs.indiana.edu> <5994@skye.ed.ac.uk> <1992Jan18.220331.22607@bronze.ucs.indiana.edu>
Reply-To: jeff@aiai.UUCP (Jeff Dalton)
Organization: AIAI, University of Edinburgh, Scotland
Lines: 52

In article <1992Jan18.220331.22607@bronze.ucs.indiana.edu> chalmers@bronze.ucs.indiana.edu (David Chalmers) writes:
>In article <5994@skye.ed.ac.uk> jeff@aiai.UUCP (Jeff Dalton) writes:
>
>>But what, exactly, counts as a correct implementation in your
>>sense of the word?  Note that I don't have to rely on any steps
>>being eliminated, because there are still very different ways
>>to implement the program and because there is still no simple
>>correspondence between variables in the source code and machine
>>locations.  Just think of procedure calls, where different
>>variables correspond to different stack locations at different
>>times; or think of register allocation.
>
>Obviously I don't want to spell out the whole story for a language
>like C, as it would take forever.  And there are many different ways
>it could be spelled out.

What you're doing makes more sense bottom up.  There's a causal
structure, and assuming that certain kinds of state transitions
are all that really matters, it can be described formally as a
machine.  And since machines and programs are sort of equivalent,
it can be described by a program.

But given the normal semantics of programming languages, it isn't
invertable.  The program could be implemented in lots of different
ways.  Some seem obvious because they're what we're used to and
because of how most machines work, but people with a different
culture (so to speak) might produce very different results, as
can we if we put our minds to it.

All of your explanations are in terms very close to state transitions,
and I think it's plausible only when you stick to that kind of
direct description.  And if that's how it has to work, I'll be
disappointed.  I thought what AI would give us was something more
like this: we have Lisp program, and running it on any machine that
can run it produces understanding, consciousness, etc.  And if we
translate it into Prolog or ML or Basic, it still works.

>>As an example of different ways to implement, consider that
>>a functional program might be translated into combinators (no
>>explicit variables left) and executed on a graph reduction
>>machine, or it might be executed by an interpreter written
>>in C and running on a Sun4.
>
>Well, the above doesn't covers functional programming languages.  The
>story there would be more complicated.  But it doesn't matter in any
>case -- my telling the story for one programming language is enough.

But it doesn't even do that.  C could be implemented by translating
it into a functional language and then running it on a graph reduction
machine.

-- jeff


