Why is learning a new programing language so complicated?

Why is learning a new programing language so complicated?
So, anyone who knows how to program has heard the idea that programming languages are just tools right?  And they are! Most of the time those tools are really similar, and in most cases, once you learn a couple of them you realize how similar they are.  Yes, some are more structured, some are more flexible, and some of them can be heaven and hell at the same time (I’m looking at you, JavaScript).  But at the essence, all of them (or should I say most of them?) share the same functionality, right? the interpretation of human words for computational purposes. And if they’re so similar after you take a closer look, and you actually manage to understand it, then why so many people have so many issues when trying to learn a new language. 
The reason I ask this is that I tried to learn Java after developing C# & JavaScript-heavy applications over the last 5 years.  And I mean, looking at the code, it is pretty much the same. Yes, you have some differences here and there, but basically, well-written code is easily understandable.  Nowadays tools also bring a huge benefit, Intellisense makes life easy for everyone.  Then, why?
I think is not the language itself, but all the “magic” surrounding the code’s environment.  Have you ever tried to install a new framework into an existing application? even if it’s the same language, you will have to take some time learning the proper setup. You’ll ask yourself questions like “Why is this not running?”, “Is the tutorial outdated?”, “Where is the manual?”, “Why did I decide to use this thing!?”, and so on.
So, to answer my own question, I think the reason learning a new programing language is hard, is because you usually don’t have an environment to support it right away, and most of the time you need to jump through several hoops in order to even start testing that your app manages to say “Hello World!”.
Ideas?

Comments