Research is conducted on language-based programming tools. Interactive, language-based editing environments maintain a database of information about the program being developed. Thus programmers can ask questions about the program or define different views. Program integration tools permit separately changed versions of a program to be merged. Studying changes in behavior rather than changes in text may permit larger classes of changes to be accommodated.