Home | About | Partners | Contact Us
SourceForge Logo

Quick Links

Thoughts and Rants
SourceForge Info
Browse CVS
Mailing Lists

More about concepts

Concepts and Objects
Concepts in Lisp
Concepts and Intentions
Concepts and Patterns
Concepts and Aspects
Concepts and .NET
Concepts and UML


Concept programming
Thin Tools
Active Libraries

More Info

Related Ideas
Some history
Other links
The GNU Project

Concept Programming Terminology

Here are the precise meanings of some terms which are used liberally on this web site.
Term Definition Examples
Application domain The domain of application of the program or piece of code being considered. Arithmetic, Car simulation
Concept A concept of the application domain which is relevant to program code. Addition, Display
Concept programming A methodology focusing on the relationship between application concepts and their representation in the code. Its fundamental principle is: program code should represent application concepts
Concept metric A measure of how well the code represents the concept. Unlike more traditional software metrics, concept metrics are somewhat subjective: they relate two very different domains, the application space and the program code space. signal-to-noise ratio, bandwidth
Concept cast Using in the code a concept which is not the original application concept, but an approximation. A main reason to do so is because the approximation is easier to represent using a particular tool. A concept cast introduces noise Adding integers modulo a power of 2, because computers use a limited number of bits.
Noise Elements of the program code which don't represent something from the application domain. Like in engineering, minimizing it is a worthy goal, but eliminating it completely is a dream. Like in music, what is noise to one person might be music to another. Comments paraphrasing the code
Syntactic noise Noise in the code, directly visible to the programmer, and introduced by limits of the tools. Taking the address of "output arguments" in C
Semantic noise Noise in the behavior of the program, not directly visible in the code, and introduced by the way the tools normally operate (the tools semantics). Integer truncation or errors for "large integers"
Signal/noise ratio Concept metric evaluating how much of the code is useful "signal" from the application domain, as opposed to noise. The name "Draw" has a higher ratio than "_lpFnVr0"
Bandwidth Concept metric evaluating how much of the application domain is covered by a particular implementation of the concept. The addition operator in C has a higher bandwidth than the assembly ADD instruction, because it applies to several types.
Abstraction A concept representation hiding some irrelevant details. Encapsulating code into a function
Domain complexity Complexity in the code introduced by the application domain itself. Model of the tax law
Artificial complexity Complexity in the code introduced by the tools or methodologies. Programming languages syntax
Scale complexity Complexity in the code introduced by the scale of the problem. Memory usage or speed considerations.
Business complexity Complexity introduced by the business environment. Team size and budget constraints

Copyright Christophe de Dinechin
First published Feb 17, 2000
Version 1.3 (updated 2004/01/20 06:16:14)