> Here are a number of kinds of power, widely considered traditional powers amongst software engineers, that we should give up:
>
> • The power to create grammars with infinite numbers of valid sentences
> • The power to construct programs that might consume unbounded time and/or space, or perhaps never terminate
> • The power to hide pieces of state behind abstractions (APIs or other kinds of interfaces)
> • The power to construct pieces of software through irreversible or nearly irreversible machines such as compilers
> • The power to divide up a particular domain into a single hierarchical decomposition of entities with properties, connected by relations
> • The power to prescribe the exact sequence of operations needed to achieve a particular result
> • The power to import machinery, definitions or methodologies from related disciplines, without evaluating their tendency to result in appropriate products
> • The power to change the form or behaviour of a program in an updated version, without giving a cost-free (to both users and developers) choice to retain the old form