Hacker News new | ask | show | jobs
by sakras 680 days ago
Unfortunately not :)

On a given implementation of C, a pointer has some specific size (let's call it S). This means that we can address 2^S bytes of memory. Each byte has CHAR_BIT bits, so can be in 2^CHAR_BIT states, meaning we have 2^(S + CHAR_BIT) possible states memory can be in. Since there's a finite number of states, it's not a Turing machine.

2 comments

Just implement find and mkdir and make the Turing machine using those.
Why does everything have to fit in the memory all of a sudden? Open files, there's your infinite tape.
Your position in a file has to be uniquely specifiable with fpos_t, so you can't have an infinite file in C.

> fpos_t is a complete object type other than an array type capable of recording all the information needed to specify uniquely every position within a file.

[7.23.1p3 of N3054 working draft of C2x, as that's what I have open right now.]

> Your position in a file has to be uniquely specifiable

`socket()` has entered the conversation.

`socket()` is not part of C99.
It will eventually not matter, but I didn't suggest using a single file.