Principles of Visual Programming Systems