In order to support programming research efficiently the learning curve should be as short as possible and targeted at a reasonable level of software literacy amongst PhD candidates, as this group are the lowest common denominator. We can assume that most people in this group are familiar with one `reasonable' programming language eg: FORTRAN, pascal, C (and ++). We should not assume however, that they are mathematical or programming experts. These skill will be developed during research, and we should encourage people to examine programming styles of the existing framework to help to facilitate this. Our software should thus be easy to interpret and require the minimum of programming sophistication (Keep It Simple!). Interfaces that are automatically constructed but generate a large quantity of unreadable source code, which cannot be easily modified without considerable effort, have been avoided (eg. Visual C++).
We cannot expect to be able to provide all programmers with the particular variants of an algorithm required for their particular project, though we can hope for and encourage a maximum reuse of existing (stable and therefore debugged) software.
The programming development environment should thus support the following;