I have been reading about the need to learn multiple programming languages and have become quite convinced that it is important to understand multiple languages.
Once a developer becomes familiar with one language, it is easier to learn another language by mapping common concepts and differences.
I have tried to list some generic questions which might help in mapping programming concepts to the way they are implemented in the language.
Are there any more questions which can be asked for a programming language?
I think if we can answer these questions for a language, it will give a good grasp of it's strengths, weaknesses, and how to work with it.
What constructs does the language offer for modularity (namespaces, objects, functions, modules)?
What are the first class citizens (types... including primitives) of this language?
What type of access control features does the language offer?
What kind of abstraction, and encapsulation does this language offer?
What constructs does this language offer for managing program flow?
How does one interact with files in this language?
How does one hold object (collections)?
How do we manage exceptional conditions?
Does the language have any in-built security features?
What concurrency model does the language support?
How does this language manage cleanup of resources and memory?
What are the important API classes in this language?
What are the main features of the languages runtime?
Does the language offer meta-programming support?
Are there any features unique to this language?
I came up with this list of questions which I am hoping will help me learn other languages from my base of Java development.
Is making such a list a good approach to learning another language?
Can we add more questions?
Is it possible to create a list of such questions, which will be sufficient to approach any language, or will the list always fall short for at least some languages?