3 ms·
It's not that significant. We can tell what the vast majority existing software will do in an automated way. Compiling a program is the equivalent of encoding i
by jfsszuj 7y ago
It's not that significant. We can tell what the vast majority existing software will do in an automated way. Compiling a program is the equivalent of encoding it's semantics in another language which implies knowing what it will do - at least that's one way of 'knowing what it will do'.
- kragen 7y agoIt would be hard to overstate how incorrect this statement is, if it is read with the implicit qualifier "for all possible inputs", without which my comment above would be obvious nonsense. Of course we can tell what most programs will do for some inputs—we can just run them!
- jfsszuj 7y agoYup, we can tell what most existing software will do for all inputs. Rice's theorem states that we can't tell what all software will do, not that it's impossible to tell what a given piece of software will do.
- kragen 7y agoIf this were the case in practice, most software would have no bugs.
- jfsszuj 7y agoThe fact that we can determine what a piece of software will do, doesn't mean we always do that kind of analysis, or that the programmer fully understands his own code. That's why we have type systems, constraints, verification tools, etc.
- andrewflnr 7y agoYou can write down the physical laws that apply to a given system, but we don't usually call that "knowing what it will do", unless you can actually predict the state, or in the case of a program, the output. The mere fact that compilers exist is a meaningless form of "knowing what the program will do", only superficially relevant. You can't solve the halting problem with compilers in the same way that Newton's laws don't solve the three-body problem. Also, did you catch the part where the point is about how expensive it is?
- jfsszuj 7y ago> but we don't usually call that "knowing what it will do", unless you can actually predict the state, or in the case of a program, the output. Who is 'we'? And yes, we can predict exactly what the output of a given program for a given input is, for the vast majority of cases. All you have to do is run the program. > The mere fact that compilers exist is a meaningless form of "knowing what the program will do", only superficially relevant. You think static analysis, type checking, intermediate representation, optimization, the translation of the program with exact semantics into another language, etc. - is 'superficially relevant' to understanding a program? > You can't solve the halting problem with compilers Now that's pretty irrelevant. > Also, did you catch the part where the point is about how expensive it is? Did you catch the part where I was only commenting on a specific part of the comment? But tell me, how expensive is it?