Technological change and diffusion as a learning process