The Steelman language requirements have this:The language shall require some redundant, but not duplicative, specifications in programs.I think I can see the underlying idea (that re-stating things may lead to fewer errors given the limitations of human cognition), but I would like a more detailed explanation.What do they mean by redundant and by duplicative?
What is meant by redundant, but not duplicative in the Steelman language requirements?
programming languages;code quality;language design;specifications
They mean that you shall be required to write things that could reasonably be inferred from other things in the code.  But you will not be implementing the same thing twice.An example of what they mean is type systems.  You might be able to infer the existence and types of variables from their usage, but the redundancy of explicit declaration can catch errors.If in doubt think about http://en.wikipedia.org/wiki/Ada_%28programming_language%29 because it is what came out of this effort.