I suppose it depends how much you're into formal methods, etc. The YC, for instance, was developed (if memory serves) to obviate the need for assignment WRT recursion, because assignment makes it much harder to reason about programs.
In principle, CS theory can help you prove that programs are correct; Dijkstra was big on this.