> > Programmers will be necessary until someone solves the halting
> > problem. The automatic programming problem (writing a program that
> > writes programs for you) has been proven NP-complete.
>
> I'm not sure what you mean here, and most of the obvious
> interpretations are false. If you mean that it's impossible to
> write a program that writes programs, that's wrong, because I have
> a program here that I use every day that takes an input
> specification and writes a machine language program to implement
> that specification; it's called gcc. Programs write other programs
> all the time.

gcc doesn't 'write programs' per se, it just translates programs you've written in
one formal language (C) to another formal language (machine code).

Automatic programming boils down to the deep theoretical
question of whether all programming can be reduced to a finite set of
generative postulates, the way, say, algebra can.
If that were true, programmers would be unnecessary. A few
supercomputers with theorem-proving software could sift their way
through all the permutations, spitting out every possible well-formed
program along the way.

> I doubt if there's any meaningful sense in which "the automatic
> programming problem" (whatever that is) can be shown to be
> NP-complete. If you mean that it's equivalent to the halting problem,
> you might also want to note that the halting problem is not
> NP-complete, and revise accordingly.

I misspoke.. the automatic programming problem is AI-complete,
not NP-complete. The halting problem is, indeed, impossible to solve with a Turning machine, which I believe Von Neumann classified as a 'type-0' computer.

However, a Von Neumann 'type-1' computer (if I've got the numbers
right), can solve the halting problem. A type-1 Von Neumann
machine has an infinite tape full of ones and zeros, where the address
of each cell corresponds to a unique C program, and the value of each cell is a boolean that says whether the program halts or not. In other words, it's a giant lookup table.

Right now, we don't know if that binary sequence can be found by any
means other than brute-force examination of every possible program.
However, if programming can be reduced to a finite set of
generative postulates, it may be possible to calculate
the value of any given bit in finite time.
It might even be possible to calculate that value with a Turing machine.. in which case, we could sidestep the current proof for the halting problem's
unsolvability without actually contradicting it.

Either way, my original assertion still stands. A solution to the halting problem would
generate a solution to automatic programming, and vice versa.

> But you're mistaken; the result of the test is guaranteed to be true.
> Certain float values can be compared exactly, and 1 is among those
> values.

Point taken, though one could probably call that a compiler issue.. IIRC, the ANSI-C spec defines all floating-point representations in terms of a minimal error variable elim.

Please insert the code necessary to calculate the square root of 2.