Considerations and techniques are proposed that reduce the complexity of pr
ograms by dividing them into functional modules. This can make it possible
to create complex systems from simple, independent, reusable modules. Debug
ging and modifying programs, reconfiguring I/O devices, and managing large
programming projects can all be greatly simplified. And, as the module libr
ary grows, increasingly sophisticated programs can be implemented using les
s and less new code.