This article gets pretty deeply into the weeds, and it's just the summary of an article. Worth a look, though. Here's the bit that resonated with me (about half-way through): "The four most important programming concepts are records, lexically scoped closures, independence (concurrency) and named state." Each of these concepts is briefly explained. Articles like this force the reader to rethink what they know about programming. Chew on this, for example: "Instead of writing a set of instructions to be executed, in constraint programming you model the problem: representing the problem as a set of variables with constraints over those variables and propagators that implement the constraints. You then pass this model to a solver."