There are
several architectures for computers, with all being the
equal of the Turing machine.
That's interesting, because not one of the devices I have called
computers, used as computers, or heard/seen called computers, is even
theoretically equivalent to a Turing machine. In particular, they all
have finite storage.
> Frankly, the Turing machine is the definition of a computer,
Consult von Neumann. When you do, remember that he devised an
architecture which is neither the classic von Neumann nor the classic
Harvard. It is, however, a true data flow architecture, and highly
parallel.
I don't know where you got _that_, but it
certainly doesn't match my
understanding, usage, or experience of others' ditto. As I remarked
above, there aren't any computers by that definition.
Nevertheless, for all systems of computation,
there is the
possibility of self-modification of code which is accessible through
other means, typically in the form of a file.
So I suppose a dedicated microcontroller (eg, code in mask-programmed
ROM) is not a "system of computation"?
This is a supposition on your part, not a position on my part. The fact is
that dedicated microcontrollers define a computing environment, and the
location of the code is immaterial.
Even if the application that's in ROM is, say, a
pocket calculator?
A programmable pocket calculator?
The microcode-and-microcpu view of a CISC CPU chip?
Where do you draw the line?
This is the value of the Turing machine. I encourage you, and like minded
list members, to consult your local computer science faculty of any
legitimate
university you like, and ask them if the computers they use are equivalents
of
the Turing machine. I seriously doubt that you will find a single professor
who
will deny the equivalence.
Also, remember
the features of some languages, like APL, which will
operate on von Neumann and Harvard architectures, and which APL code
might include the execute operator, which facilitates run-time code
generation and execution.
In the sense of "code" for which the underlying CPU is a von Neumann or
Harvard machine, the execute operator does not necessarily imply
run-time code generation.
It is disengenuous, and intellectually dishonest, to use a lack of
implication
to assert a lack of occurrance. For some implementations, there may indeed
be no code generated. However, this is not a universal necessity, and many
APL implementations yield machine code generation. The result of the
execute operator, in any case, will yield execution of a literal string,
with
the expectation that the literal string contain a statement of APL.
(For example the APL engine may be a p-code
engine and the execute operator may generate p-code, which as far as
the underlying CPU is concerned is just more data. This returns to the
point above about where you pick the level at which you call some bits
data and other bits code.)
In truth, there is no logical difference between a hardware based mechanism
of computational processing, and a software based mechanism of computational
processing. Each yields expectable results, and the underlying mechanism is
unimportant.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse(a)rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
William R. Buckley