On your journey to learn programming, regardless of which language, you will come across many generic programming concepts that you need to understand and master. Each of these topics is a generic concept in itself; however, its implementation often differs for each programming language.
So in order to master these concepts the learning process is as follows:
learn to understand the generic concept from a theoretical perspective
teach yourself how to apply this concept in a specific programming language
Personally, I think that the following concepts are key to understanding programming. And I would recommend you at least familiarise yourself with these terms before starting to work on any actual coding. You should then in parallel to learning any actual programming language do some more deep-diving into these concepts as they come up. I also would recommend that, even though not all of these concepts might be related to the programming language you are currently learning, you at least learn to understand the concepts and possible implementations of all listed concepts here, as they will teach a certain way of thinking about code in general.
Data types: The different kinds of values that can be represented and manipulated in a programming language. Examples of data types include integers, floating point numbers, characters, and boolean values.
Data structures: The ways in which data can be organized and stored within a program or application. Examples of data structures include arrays, lists, stacks, queues, and trees.
Data formats: The specific ways in which data is structured and encoded for storage or transmission. Examples of data formats include JSON, XML, CSV, and binary formats.
Object-Oriented Programming (OOP): OOP is a programming paradigm that uses class and objects to represent data and behavior. OOP focuses on creating reusable code that can be easily modified and maintained.
Pointers: A programming concept that allows a variable to store the memory address of another variable. This is often used in low-level programming and can be used to create more efficient programs.
Control Structures: Control structures are used to control the flow of a program. The most common control structures are if/else statements, loops, and switch statements.
Algorithms: Algorithms are step-by-step instructions for solving a problem. Understanding algorithms is essential for creating efficient and effective programs.
Functions: Functions are reusable blocks of code that can be called throughout a program. They are typically used to perform a specific task or calculation.
Namespaces: Namespacing is a programming concept that is used to avoid naming conflicts and organize code into logical groups.
Recursion: A programming technique where a function calls itself in order to solve a problem. This is often used for tasks that can be broken down into smaller, similar tasks.
Multithreading: A programming concept where multiple threads of execution can run simultaneously within a program. This can be used to improve the performance of a program on a multi-core processor.
Error Handling: Error handling is used to catch and manage errors that occur during program execution. It involves detecting errors and taking appropriate actions to resolve them.
Debugging: Debugging is the process of identifying and fixing errors in a program. It is an essential part of programming.
Abstraction: The process of hiding complex details and presenting a simplified version of a system or program to the user.
Inheritance: A programming concept where a new class is created from an existing class. The new class inherits the properties and methods of the existing class.
Encapsulation: A programming concept where the data and behavior of an object are combined into a single unit. This is done to ensure that the data is protected and only accessible through the behavior of the object.
Polymorphism: A programming concept where an object can take on many different forms. This is achieved through inheritance and allows different objects to respond to the same message in different ways.
Networking: The process of connecting multiple computers or devices together to share resources or communicate. This includes protocols like TCP/IP and HTTP, and technologies like Ethernet and Wi-Fi.
APIs: APIs (Application Programming Interfaces) are a way for different software applications to communicate with each other. They allow developers to create software that can interact with other systems and applications.
Version Control: Version control is a system that tracks changes to code over time. It allows developers to collaborate on projects and keep track of changes to code.
Over time, I also hope to find the time to write some more information and background to these concepts here on the wiki.