I was reading this survey by Inform IT asking various programming language book authors, this question "What is the best way to learn a new programming language?".
The common thread amongst all the responses is work hard on it. It takes time and involve yourself to the task by practice.
Following were some specific portions that I liked in various responses.
Lauren Darcey, had a solid advice in this form:
The best way to learn a language—whether it's a foreign tongue or a new programming language—is immersion.
Reading a textbook is not enough. Writing an app that compiles and sort of runs is not enough. You need to go deep, and you need to explore broadly.
Cay Horstmann, shares an insightful statement in an extremely light-hearted vein:
Have realistic expectations. You might learn enough French or Mandarin in 30 days to ask for directions, and you might learn enough of a new programming language in the same time to program a simple game. But it takes months or years to be truly fluent in the new language.
I had taken Cay Horstmann's course at Udacity as I tried to improve my Java skills.
Danny Kalev, takes a scientific approach to learning as he states:
Linguistic theory distinguishes between first language (L1) acquisition and learning a second language (L2). Whereas the former occurs in a natural setting, during the critical age (0-7 years old) and has very good chances of succeeding, L2 learning requires formal teaching (textbooks, exercises and exams), and a lot of skill. Even after years of meticulous practicing, the results never compare to L1. Learning a programming language is similar to learning L2.
I can relate to this statement as my first language is Sourashtra. It has no well known writing system, scripts, literature or any cultural artifacts, like books, movies or songs. Everything we learn is from our childhood and from parents. And all other popular languages like Tamil, English and sometimes Hindi is gathered by practice as secondary languages.
Coming to to programming, Bjarne Stroustrup, had the following to share about learning a new language.
Consequently, the best way involves a Mentor who knows the programmer well and is an expert in the new language. That’s a luxury, we rarely have.
And his devotion to Computer Science is visible when he states:
What is common for my books is that they assume the reader to be reasonably smart and willing to work to learn. I try to avoid oversimplification and sugar coating: programming can be a noble art and involves some skilled craftsmanship. I hope for readers who want to build real-world systems, rather than just toy programs to be able to get a grade or to tick a box on an interview form.
Here is the Link to the full article.