Without a technology (tools), Programming is just pure mathematics and without science (fundamental concepts), it is just a craft.Tools help us to prepare for the present while Concepts prepare us for future developments.
Lets say, Fred and Ted are two people who have similar jobs i.e cargo export.
Fred drives a truck to export goods. He spends all his time exporting goods via his truck, restricted to his thinking that he can export goods anywhere.
Ted on the other hand sails a cargo ship. He is no different from Fred and spends all his time exporting goods via his ship.
All is good as long as they both are doing their jobs in their own platforms (land and sea). Now, If a customer comes with a demand that he wants to export some large quantity of goods overseas within a limited time i.e from land to sea to the other land (forget about airplanes),
Guess who (Fred or Ted) is better suited for this job?? Obviously, Neither of them. They both will suffer from poor delivery because trucks cant sail and ships don`t have wheels.
The case with programming is somewhat the same. Programming is often taught or practiced in the context of just one or a few programming languages. And that is a problem which will often restrict a programmer to a smaller perspective for the years to come, until they realize it themselves that there is still so much to explore.
What Are Concepts and Paradigms ?
The term ‘concept‘ is a very powerful thing. They are actually the building blocks of any programming language. Just adding up one new concept in the existing ones can make a whole world of difference in programming.
Example: Adding destructive assignment (explicit state) to functional programming allows us to do object-oriented programming.
Every programming languages are slightly unique and are designed with a different set of concepts. Some programming languages only differ by one or a few concepts.
The major concepts of programming languages are : records, closures, concurrency (independence) and named state.
These concepts when taken as a set are often referred to as paradigms (programming paradigms). And Paradigms are what influences the design of the programming languages.
A programming paradigm is an approach to programming a computer based on a mathematical theory or a coherent set of principles.
Some common paradigms you might have heard of are object-oriented, functional, imperative etc.
Here is a popular image which classifies the principle programming paradigms from a book by Sir Peter Van Roy – Concepts, Techniques, and Models of Computer Programming :
Why Are They Important ?
Programming is about solving problems. And solving a problem requires choosing the right concepts.
Earlier, I pointed that programming languages are based on paradigms which are made up of a set of concepts. These set of concepts are what makes programming languages unique and the best choice for a certain kind of problem.
Not all programming languages hold the right concepts for that particular problem. So, It is a wise thing to choose the right programming language based on the kind of problem you are trying to solve.
Lets take a look at some programming paradigms and what are they best suited for :
Best suited for problems with a large number of related data abstractions organized in a hierarcy.
Best suited for transforming or navigating complex symbolic structures according to logical rules.
Best suited for problems that consists of reactions to sequences of external events.
What Next ?
As a beginner, It is all about building the base of programming, grasping the concepts and learning to write some code.
The introduction above might have already cleared your mind with the question that people often ask
– Which is the best programming language to choose ?
Well, You might have already got the answer. But let me summarize you once again :
– There is no such thing as a best programming language except for peoples personal opinions.
As I have already said, Programming is about solving problems by choosing the right concepts. And that is just it.
You are free to start programming by choosing your own programming language based on your taste. I would personally recommend Python, Java or C#.
Next, lets talk about the tools and approaches that a programmer generally takes.