The descriptive power is borrowed from mathematics in general. However, mathematical notations tend to suffer from the fact that they are expensive to implement on Von Neumann architectures. On the other hand, using a present day programming language involves ignoring most of the mathematical notions of correctness. Therefore the success of a general purpose language involves the question of how cheaply in machine terms can this descriptive power be bought. This is always at the back of the designer's mind, and how much emphasis is placed on each aspect determines the flavour of the language.
Simplicity is the cornerstone of programming language design.
The addition of new features without integrating them into an overall framework merely increases the complexity of the system. This complexity often overloads the programmer beyond his or her capability. In contrast, a simple language allows the programmer to concentrate on the inherent problems of the task and not on the mapping between the solution and the programming vehicle. In particular there should be a one to one correspondence between the method of introducing names in declarations and parameter lists. For example, functions are abstractions over expressions.