Every programming language/environment is built around a core conceptual model. When you start out, you use it like a hammer - banging your code into submission. But if you’re any good, and the model is any good, and you stick with it; the time will come when you get it. And when you really get it, your thoughts switch from how the language is holding you back to what the model will let you do. And at that moment, when the thunderbolt has struck, that is my favorite language/environment.