How Abstraction Redefined Programming