Hacker News new | ask | show | jobs
by minkzilla 712 days ago
AN interesting and non rigorous way to think of it is can the compiler optimize away the non compute-able part. So this:

    if (God does exist)
      return isPrime(3)

    else 
      return isPrime(5)
The compiler can take this and in the first pass say, isPrime(3) is just return true, isPrime(5) is return true. Then we have an an if else with the same return for both cases, this is the same as return true!
1 comments

I like this explanation, but how would you apply that logic to

    If (god does exist)
        Return true
    Else
        Return False
I guess I misread the first part of the article while skimming. I think the key is this paragraph

    computability is about whether a computer program exists to map inputs to outputs in a specified way; it says nothing about how hard it might be to choose or find or write that program. Writing the program could even require settling God’s existence, for all the definition of computability cares.
I guess in this case God's existence needs to be a compile time constant.

I saw it elsewhere in the comments but I think computability as defined in Computer Science and used by the author is more strict a definition than you or I are/were thinking, and that is really the main point of the article. People confuse computability with "can it be computed". Missing values (such as knowledge of God's existence or null values) mean you can not computer something but that is a different thing.

It would be something like this:

   if (God does exist)
      return isComputable(() => true)
    else 
      return isComputable(() => false)
(where `() => true` / `() => false` are functions, returning true / false)

You do know that the code above will always return "true", without having to know whether god exists.