Software tools

Building on the work of others is the only way to make substantial progress in any field. Yet computer programming continues as a cottage industry because programmers insist on reinventing programs for each new application, instead of using what already exists. We must encourage a way of packaging programs so that they can be perceived as standard tools, each performing its specialized task sufficiently well and interfacing to other tools so conveniently that programmers seldom feel any need to make their own version from scratch.In this paper we show how programmers can view substantial parts of what they do as tool building and tool using. By studying some specific examples of general purpose tools, we show how programs can be packaged as tools, so other programmers will use them in preference to building their own. We also comment on the sort of programming environment which seems most hospitable to the development and use of tools.