- crazy-making
- invisible, imagination
from initial specification up through implementation
- correctness
- speed of development
- ease of maintenance
- elegance
translate bit patterns to memorable abbreviations!
assembler has one to one correspondence between bit patterns/machine instructions and programmer commands
names for common sequences of commands!
no correspondence between source and machine instructions!
depend on the entire statement symbol + can mean different things in different places nonlinear syntax dependent correspondence
considered big progressauthors think it’s a restrictionspaghetti code
by insisting jumps only within module
linear sequence of functions/modulesone entry, one exitmodule can containoperations or other modules/functionsif then elseloopsSimplicity is the primary measurement recommended for evaluating alternative designs relative to reduced debugging and modification time. Simplicity can be enhanced by dividing the system into separate pieces in such a way that pieces can be considered, implemented, fixed and changed with minimal consideration or effect on the other pieces of the system.
- Does the description have to be a compound sentence?
- Does it use words involving time, such as “first”, “next”, “then,” etc.?
- Does it use a general or nonspecific object following the verb?
- Does it use words like “initialize” which imply a lot of different functions being done at the same time?
then we have less cohesive type of binding than functional binding. these include
coincidental binding just happens to appear in the same modulelogical binding has several related functions requiring a parameter to decide which one to performtemporal binding all happens to occur at the same timecommunication binding all refer to the same databit like connascence
passing local variables as arguments global variablesstrong coupling ignorecontrol structuresdecision designfocus onprogram hierarchy / system componentspassing data between components structure kind of similar to org mode details of control flow should not dominate emerging designchange of plan should not have disastrous effects steps in the process pieces of information that might possibly change maintain correctness in changing environmentkeep changeable stuff at single locationdo not use magic numbersThe purpose of hiding information, as we mean it, is simply to minimize the effects of a possible design-change
too much planning is counterproductive
54