Um diese Modifikationen durchführen zu können, benötigt der Programmierer eine Programmierumgebung. Damit er auch nach Fehlern suchen kann, ist neben Editor und Compiler häufig noch ein Debugger integriert. Der Compiler sollte Stand-alone-Programme erzeugen können, also Programme, die, abgesehen vom Betriebssystem, keine weitere Software benötigen. Wünschenswert wäre es noch, wenn dieser Maschinencode für unterschiedliche Computer generieren könnte [Bru95a, Bol94]. Diese Fähigkeit kann den Absatz des fertigen Produktes entscheidend erhöhen.