The United States legal systems are massively distributed, fault tolerant, resource starved systems that consume exclusively dirty input from malicious users. Like any system that consumes unstructured input, the uncertainty inherent in how the facts of a situation get mapped to structured conclusions ("questions of fact"), and how the legal rules operate on those inputs ("questions of law") to produce a result, are all infected with that uncertainty. Few of the facts the system is meant to deal with reduce to anything so discreet as bitstrings. Legal rules in statutes and even in case law, like the bit of First Amendment in the article, start out trying to state rules with all the rigor of a pure function. But law is a highly dynamic, reprogrammable language. It's Ruby, not C. The statutes aren't the running state, they're just input.
That's partly why I still program to relax after work. It's satisfying to address little bits of a problem in isolation, to see my solutions work, and to know they're reliable. Problem solved.