Programs specify constraints on the behavior of the machines which run them. Programs are useful when they ensure that behavior has useful properties. Writing useful programs requires knowledge of what behavioral guarantees will be useful, and understanding of how guarantees correspond to program representations. Readable programs clearly express behavioral guarantees, and the ways these guarantees correspond to code.
It is up to programmers to make their programs useful and readable. Programming languages should help with that.