And impurity, if it exists, does not force programmers to write bad programs. ANSI C makes type safety optional. Because type errors in C are often the causes of strange bugs that take weeks or months to find, and that exhibit transient and misleading behavior. They often foul the stack or heap and cause eventual failure several million instructions after the precipitating event. Such bugs are the hallmark of poor quality software.
All computer applications are, eventually, the manipulation of bits and bytes.
We might not wish this were so, but it is. It all works, and works quite well. Object Oriented Programming. The reason is that well structured object oriented designs create applications that are robust, maintainable and comprised of elements that can be reused in other applications. No language will correct them.