• dev
  • My way to approach a new programming language

    This is how i would approach any language or concepts

    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.
    • lambda expressions.
    • Stack.
    • List.
    • Dictionaries / Map.
    • 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

    • Aspect oriented programming.
    • Other Data structures & Algorithms.
    • Design patterns.
    • working on open source liraries.