|Pros||Generally simple to understand. Helps to design and to code (guidelines, auto-completion). Efficient (it could be even be embedded in hardware). Robust (checks at compile time, prevents the overflows). Scale well.||Simple to solve some kind of problems. No need to design deeply before implementing. Efficient (normally it use only needed resources). Flexibility. Scale gracefully.|
|Cons||Complex when sophisticated. Rigid and therefore sometimes difficult to make evolve. Not efficient (interpreted languages, space versus time). Don’t scale well.||No help at design and at coding times. Fragile (error at runtime). Not efficient (interpreted languages, time versus space). Don’t scale above to a point.|
In order to make a choice of what must be static or dynamic, a rationale study has to be done. Defining things statically close the debate of how to make them. This allows both to natively incorporate advanced general features (Ex: set of characters, presentation) and to simplify software implementation (only one way for doing). Benefits list :
- Rationalisation of the usage of static and dynamic structures.
- Powerfull features.
Defining an uniform static or dynamic structure set for all situations is impossible. But remember that ISA targets only 80% of systems, not all the cases of problems. So, establishing a common base for this subset appears of course difficult, but possible. Elaborate a representative space model for dynamics and statics structures in order to objectify the choices is a major challenge. It is also necessary to define a decision rule. Making a choice is always subject to controversy. Build the dynamics to be easy to use. Incorporate static advanced features.