Automatic Generation of Visual Programming Environments