Concept programming is a language design philosophy that focuses on how we translate concepts in our head into physical artifacts such as programming language code. Concept programming attempts to make this task as simple and error-free as possible, which has a huge impact on language design.
Concept programming defines a number of pseudo-metrics:
- Syntactic noise is the difference in appearance between code and concept For example, a semi-colon in C is syntactic noise, because it has no equivalent in the real world.
- Semantic noise is the difference in behavior between code and concept. For example, an integer overflow is semantic noise, because it shows a divergence between the code
int and the associated integer concept.
- Bandwidth is the size of the concept domain that is covered by a given code construct. For example, a generic
min function has a larger bandwidth than a function taking only
- Signal/noise ratio is the fraction of the code dedicated to expressing concepts, as opposed to expressing code-only concerns. For example, indiscriminate use of getters and setters tend to decrease the signal/noise ratio, as they add no functionality to the program. (Note: They are useful only for languages that break encapsulation because their syntax reveals the implementation, e.g. when method access and data member access use a different syntax.).