"If you know C, a lisp variant (although I prefer an ML variant), and a decent scripting language (I learned perl first, but I sort of hate it), you're not likely to get surprised by much"
I think a person with that knowledge set might be surprised by this:
New programming paradigms emerge over time, and force us to rethink our approaches to solving problems. I think the key is not learning many languages, but learning many paradigms, and becoming skilled in the use of one paradigm before moving on to the next. Learning several languages with the same approach to programming is not as useful as learning several languages with completely different approaches.
I think a person with that knowledge set might be surprised by this:
https://en.wikipedia.org/wiki/Constraint_programming
New programming paradigms emerge over time, and force us to rethink our approaches to solving problems. I think the key is not learning many languages, but learning many paradigms, and becoming skilled in the use of one paradigm before moving on to the next. Learning several languages with the same approach to programming is not as useful as learning several languages with completely different approaches.