A roadmap to learn any programming language
To learn a language effectively, it's crucial to adopt a holistic approach that combines various methods and techniques. Here's an abstract roadmap.
Think why you want to use a specific language. Each language has it's own purpose and usage. For example if I want to automate some process in my computer I would go for shell
. So knowing & understanding a language's purpose would solve a lot of issues even before you start typing your code.
After you choose you language, Don't jump into using dedicated IDEs and Frameworks. Yes I mean it.
Learn from basics and type things out in a text file and run your code manually.
So where do you start from? All programming languages pretty much has same set of concepts, only logics & syntax differs. step wise do this
- Sequential programming.
- Object Oriented. (OOP)
- Dive deeper.
Sequential programming
- Know if a language is statically typed or inferred. Based on this your errors & debugging would change a bit.
- Datatypes and their limits.
- Constants & literals.
- Operators.
- Keywords.
- Statements.
- Strings.
- Arrays.
- Control flow.
- Conditionals.
- Loops.
- Functions - declarations & definitions
- Memory basics. how things are stored, retrieved and passed(pass by value / reference).
- Pointers (if c/c++)
Object oriented Programming
- Why Object Oriented is necessary. What does it hold?
- Classes & objects.
- Access modifiers.
- Constructors / destructors. (some language might not have these)
- Static, global & local variables difference & importance of existence.
- Lambdas.
- Concepts & syntax
- Abstraction.
- Inheritance.
- Polymorphism.
- Overloading (for c++).
Dive deeper
- Regex.
- Basics of data structures & their existence.
- Stack.
- List.
- Dictionaries / Map.
- Set.
- Weak map / set.
- Time & space complexities.
- Memory & garbage collection in deep.
- In-built Libraries. Some are os layer libraries, input output libraries, etc..
Other topics you might want to explore
- Other Data structures & Algorithms.
- Design patterns.
- Aspect oriented programming.