I was thinking about something today, is there ever a point where in programming that a man learns all he can learn? C++ and C# certainly have boundaries that can be reached. But I'm not talking about the limitations of the languages themselves versus other languages which can do more/less. I'm talking about learning all the language has to teach you. There comes a point eventually in the study of computer science that you come to realize that you cannot learn anymore of a certain language, that you have indeed reached "the end" of the language.

When going from something as simple as learning what a datatype is, to learning the most advanced techniques the language has to offer, has one really learned it all? Is there indeed an end to all that you can learn of a certain language? Much like learning German, or Spanish, or Chinese, the languages have boundaries of what words indeed exist and are recognized as "words", once you know all of these words, you have indeed reached the end of the language.

Though in the same sense, once you have reached the proverbial "end", there is a new beginning, a creation of new words to describe new things. And it works this way in programming as well, when the language has been mastered, a newer version is produced that has never before seen things.

My point is this:

A language has boundaries, where if you meet those boundaries, you have learned everything you can possibly know about the language and you can absorb no more, there is no more to absorb. Have any of you met these boundaries in the world of computer science?