The Sixth Sense:

Programming with Ghosts

 
 

Best practices in programming typically imply coding using classes and interfaces that are not (fully) defined yet. This is the case for instance with top-down programming and test-driven development. However, integrated development environments (IDEs) do not support such incremental development seamlessly. Instead, they get in the way by reporting ineffective error messages. Ignoring these messages altogether prevents the programmer from getting useful feedback regarding actual inconsistencies and type errors. But attending to these error messages repeatedly breaks the programming workflow.


We recognize that these not-yet-defined entities actually exist—in the programmer’s mind—before they exist in the IDE. Like ghosts, only few gifted ones can see them. In order to smoothly support incremental development, we propose to extend IDEs with support for ghost classes and members. Ghosts are reified in the IDE, where they are built transparently and non-intrusively. A dedicated view allows programmers to reason about ghosts, get appropriate type feedback, and bust them when ready, yielding actual code.


See Programming with Ghosts in IEEE Software
vol.30(1), pages 74-80, Jan/Feb 2013