The language is supposed to tell you if your thinking is broken. If a program is a logical statement, and your logic is impossible, the program should not compile. Reading dead memory or having race conditions should not be possible, yet look at security vulnerabilities today.