Studies have repeatedly shown that the majority of computer programs contain a lot duplicated source code -- which is detrimental to program comprehension, modification, and maintenance. Existing research into this issue has assumed that the problem is in poor programming -- that programmers should abstract their code more extensively with functions and macros. However, we claim that the tools of abstraction (functions and macros) are the problem. They inadequately support the ergonomic and cognitive needs of programmers in real-life situations. We have developed a new editor-assisted alternative to functions and macros. This tool maintains a persistent editor-level "link" between similar regions of code in order to support high-level visualization, editing, and navigation. Our hypothesis is that this tool enables programmers to work faster and with fewer errors, and that in turn they are likely to use the tool in situations where they wouldn't use a traditional abstraction.
For more information, please contact Michael.