Self modifying code, lambda calculus - Re: ENIAC programming

Paul Koning paulkoning at comcast.net
Thu Sep 17 11:01:43 CDT 2015


> On Sep 16, 2015, at 11:36 PM, ben <bfranchuk at jetnet.ab.ca> wrote:
> 
> On 9/16/2015 9:25 PM, Toby Thain wrote:
>> On 2015-09-16 6:18 PM, Dave G4UGM wrote:
>>> 
>>> ...
>>> It is notable that in order to solve all problems, a computer must permit
>>> self modifying code.
>> 
>> 
>> Is that true? AFAIK Lambda calculus can describe any computable function
>> (as can a Turing machine), and it has no concept of "self modifying code".
> 
> I never studied any of that, but you do have to LOAD and RUN the program ToSolveAnythingBut42
> some how so I guess that would count AS Self Modifying Code.

"load" is an operation in a RAM stored program computer, sure.  But self-modifying code means a program that modifies its own code during execution.  That is a scheme that has on rare occasions been used in history.  You could also apply the term to instructions that store state  in the form of instructions in memory for later use, such as "return jump" in CDC machines.  But I wouldn't apply the term there; that's just a particular mechanism different from, but functionally equivalent, to a return address stack.

In any case, I do not believe the original statement.  First of all, it is well known that no computer can solve "all problems" (see Gödel).  For those it *can* solve, as far as I know, a Turing machine can solve a superset of what a stored program computer can handle, and a Turing machine does NOT have self-modifying code.

	paul



More information about the cctalk mailing list