Usable and reusable programming constructs

Abstract Our research goal is to make programming easier. A central focus in our research is developing programming constructs, called mechanisms, that are both (1) usable and (2) reusable. A mechanism is usable if it can be used to automate a task by someone who understands and performs that task, but who does not necessarily know how to program. A mechanism is reusable, if it can be employed for several domains and tasks. Focusing on usability can lead to application-specific mechanisms, that is, can reduce reusability. On the other hand, focusing on reusability can lead to task-independent structures, that is, lessen their usability. The trick is to come up with mechanisms satisfying both requirements: usability and reusability. We have identified some quantitative characteristics describing such mechanisms.