Programming as a Way of Thinking

#artificialintelligence 

In first generation languages like FORTRAN and C, the burden was on programmers to translate high-level concepts into code. With modern programming languages--I'll use Python as an example--we use functions, objects, modules, and libraries to extend the language, and that doesn't just make programs better, it changes what programming is. Programming used to be about translation: expressing ideas in natural language, working with them in math notation, then writing flowcharts and pseudocode, and finally writing a program. Translation was necessary because each language offers different capabilities. Natural language is expressive and readable, pseudocode is more precise, math notation is concise, and code is executable. But the price of translation is that we are limited to the subset of ideas we can express effectively in each language.