Well, The way I see it is you dont have to learn each and every bit of language. But try learning very basic features which will be required in other languages too. <br>For example, OOPS concepts are required in all the languages be it *Java*, *PHP*, or any other language. <br>*Memory allocation* concepts are quite similar in many programming languages. These kind of topics you should never miss out on. <br> Each and every language have grammar and rules, same applies for programming languages; Dennis Ritchie himself accepted that fact. So one should learn the grammar of that language. <br> But the way I see it is that you got to learn the non common factors between two programming languages. They will let you identify what which language stands for what. *C++* is all basic OOP(Object Oriented Programming), so once you learn the *OOP* concepts, you learn the grammar which you will see in PHP and Java too. <br> My learning flow was : <br> Visual Basic 5 (partial) -> HTML 2.0 (partial) -> C (partial) -> CPP (partial) -> Java (partial) <br> and then I learned *C Language* again followed by *C++* followed by *JAVA* (complete this time) then I moved to *android* as I was familiar with *Java* and *XML* (partial) and learned it in mean time. First attempt taught me less but in second attempt be sure to learn everything which will help you next time.