Teaching Programming Using Cultural Viewpoint Metaphors Resignification