In my role as a technology leader, I’m occassionally asked by people looking to develop their career and move into software engineering:
What is the best language for me to learn?
My response is always the same, and has been for many years:
Don't learn a language, learn to program.
This just goes to show the fickle nature of programming languages and their favour with the community and industry. Any time spent focusing on learning a particular language will have an implicit shelf life, and then the cycle will start all over again. Of course, with each langauge you learn, the next typically gets easier, unless you’re leaping from procedural to functional, or similar, but it’s still a learning curve each time.
A far better approach to assuring your position in the future of software engineering is not to learn the details of a particular language, but instead to learn, and learn well, the lessons of software design and architecture, which can be applied easily irrespective of the language of choice.