Punch cards to AI: the evolution of programming