Parsimony Principles for Software Components and Metalanguages

A relatively easy paper on the principles of designing components from Todd L. Veldhuizen, University of Wateroo, Canada.

 

The paper investigates two questions:

1. In designing a library for a problem domain, how can we evalu-ate whether a component is undergeneralized, overgeneralized, or ‘just right’?

2. How and why should we strike a tradeoff between the power of

abstraction mechanisms in languages, their ease of use, and the

amount by which they allow program length to be reduced? 

 

The conclusion part (Sec 5) points out clearly the main idea of the paper. Some notes are as follows:

 

- The Minimum Description Length (MDL) principle states that the model providing the best explana-tion of the data is the one providing the shortest explanation of the data. 

- In designing a programming language, the tradeoff is largely between the succinctness a language offers (i.e., amount of compression) and the cognitive difficulty of recog-nizing and exploiting motifs (i.e., the cost of compression).

- In the cognitive dimensions frame-work this quality is dubbed viscosity: the resistance of a notation to change. 

- This can be formalized by examining the relation between tree edit distance [12, 26] of the inputs and outputs to the abstraction function. 

- The ease with which an abstraction can be used in design work is strongly influenced by whether it is Lipschitz, and if so, the magnitude of its Lipschitz constant.

 

你可能感兴趣的:(职场,software,design,休闲,Reusable)