In one of my previous posts , I mentioned that which computer languages you know and use now might be irrelevant a few years down the road and what makes a good software developer is the ability to apply the principals in computer science into practice.
Generally speaking, the most important aspect of a computer language is, like any natural languages, the grammar. In the term of computer science it is the abstract syntax tree (AST) of the language and the derivations of the AST’s that are the most crucial. For as long as you mastered the grammar, the vocabulary can always be picked up as time goes by.
So, if I were to learn another computer language, I would definitely start from the language specification. The specification usually contains the most detailed derivation rules of the syntax. For instance, if you are learning C#, you should definitely take a look at the C# Language Specification on MSDN.
After the initial step of learning the syntax, you should definitely familiarize yourself with the keywords. The number of keywords is usually quite limited for any given language, and memorizing them first would definitely save you lots of trouble later.
Usually, it is also good idea to learn what is new to the specific language you are studying and compare it with a language that you already know. Take C# 2.0 for instance, from the language specifications, you will see that generics and anonymous methods are a couple of the new things. And it is a good idea to see how these new things come into play in the particular language you are studying and under what circumstance you would use them.
How about the class libraries? Well, they are important as well. Knowing what is in your tool box will certainly save you a lot of time doing research. But the most important is still the fundamentals and after learning the basics, everything else will come naturally.
The only thing I would strongly discourage is diving into the class libraries from the beginning. Because class libraries are so huge in size and contain so many different functionalities, it is easy to get buried and hard to abstract the core of the language (grammar, AST’s) out of the mass of the materials. Some people would argue that learning by examples is the best learning method. This is probably true for a lot of people, but I would still encourage understanding the language specifications first.