Learning a new language
Whenever you prepare to learn a new programming language, it is a good idea to have a consistent approach, at least to get the basics right.
I tend to start by summing up the language in the following terms:
- Interpreted or compiled
- Programming paradigm
- Coding conventions, especially for naming
- Supported commenting styles
- Core data types (including core classes, if any)
- Operators
- Control constructs (if, else, else-if, switch cases, etc)
- Looping constructs (for, while, do-while, etc, along with break, continue, etc)
- Typing (static, dynamic, duck, etc)
- Function/method implementation (arg types, default args, named parameters, return type, signature, etc)
- OO implementation (for OO languages)
- class definition
- constructor, destructor, initialization
- inheritance (different types like multiple inheritance, if supported)
- polymorphism (overloading, overriding, virtual methods, etc)
- access modifiers
- abstract classes, interfaces
- nested classes
- Packages
- Scope/lifetime of variables (global, static, etc)
- Exception handling
- Advanced features of the language
- Popular libraries
Somewhere along the way, when I feel I'm getting used to the syntax of the language, I quickly invest time in finding an xUnit framework for the language, so that I can progress my learning supported by unit tests.