Visual Programming: Perspectives and Approaches