For a long time there were clear boundaries between programming languages. You had a large number of options from low level systems languages to scripting macros in Excel.
Back in the day web development when server side programmers were the elite and front end developers were mostly focused on churning out the view layer with designs. The division of roles was rather simple in my opinion. Trying to mix the two was like mixing oil and water.
Platform and syntax are only means to an end
Learning a new programming language syntax is largely a waste. This is why consolidating the to a more universal one is very appealing and there is nothing wrong with that at all. The trouble boils down to the expectations set by developers and their prospective employers.
Each of the above mentioned programming domains have their unique aspects and areas requiring expertise. Sharing a language syntax and platform does not make the skills needed to actually solve the problems within those donations interchangeable.
Consciously limit your interests
Writing a complex application in any language continues to be a vast undertaking. Trying to build something as complex as the original Gmail released over a decade ago in 2004 would still be very hard. I would argue, that regardless of the technical advancements many teams would fail in delivery largely because of not understanding the problem at hand.
For the first time ever I am embracing strong typing through TypeScript, but at the same time I am aware I need to embrace low level functionalities like Web Workers through higher level abstractions like ones for Angular 2 for mobile web applications.
You don’t need to know how to handle memory management or the complexities multithreaded systems development just to create a website.