History of Programming Paradigm

A peek at gradual change

Created by Freepik - www.freepik.com

Disclaimer : The content of this blog are my views and understanding of the topic. I do not intend to demean anything or anyone. I am only trying to share my views on the topic so that you will get a different thought process and angle to look at this topic.

Languages have evolved based on need of the market or problems which we are trying to solve. Selecting a proper language is important for a particular problem statement be it Java, C, Scala, Groovy etc. Each language has its importance. Languages are grouped at top level by programming paradigms which are Procedural, Object Oriented and Functional.

The paradigm shift is driven by the industry needs. During industrialisation there was a need of fast manufacturing to satisfy the demands. Human beings cannot work 24/7 and there are laws of wages, insurance, etc. Hence companies wanted to automate manufacturing. The manufacturing process automation was done using procedural languages. Hence in those days procedural languages were popular like C. In process automation whatever is the manual process needs to be automated as is.

Next the complexities increased and there was a need to write software in more modular way. Humans understand things by differentiation and categorisation. Naming things is taught to us since childhood. Solving complex problems need a divide and conquer approach. To solve any problem we need to first understand it. For example we need to create a store locator to find the nearby stores based on my location which are open and contain the product that I want urgently. In team meetings we discuss about store, customer, product etc. We understand the requirement and define an algorithm. The important part is to write code so that we can map our understanding as is. In huge projects or in maintenance stage, a year later when we look at the same code which we developed it appears alien to us. For quickly understanding the algorithm the code should be able to reflect the store, product and customer entities and their behaviours, so that we can correlate easily. In this Object Oriented paradigm, object oriented languages like JAVA, C++ are helpful.

Software is everywhere and collecting data & processing then sending it to the customer. Just like the store locator we discussed. Companies then thought that what next can I sell to customer and how can I give them more personalised experience. Data insights will help us in this. Understanding the huge data is now delegated to machines again. Most of the aspects of machine learning is based on Mathematics. For example during daily commute from home to office, start time and time on destination is recorded along with the route taken. We need to suggested the customer probable time to office based on traffic on the road. All these things require data analysis, curve fitting and correlation techniques of mathematics. In this case we get the solution in terms of mathematical formula. In mathematics complex formulas are based on basic formulas. Hence this mapping can be best done in functional way. Mathematical formulas are like functions once defined and give it the same data again and again the output should be the same. Ex : c^2 = a^2 + b^2 (Pythagoras theorem). If I write a functional code which takes 'a' and 'b' as argument and returns 'c'. I run with values of 'a' = 3 and 'b' = 4 then it should always return 'c' = 25. Hence in today's market which in influenced by Functional paradigm functional languages like Scala are popular.

This shift is continuous and we need to understand that all languages have their defined use cases, pros and cons. Hence right choice of language is necessary for the problem you are trying to solve. With due respect to other programming languages, I personally like JAVA which is declarative and my code speaks for itself. But I tend to learn other languages so that I can be in a position to choose which language is best suite for my current problem. I believe in language unification as in for creating the best software each responsibility should be delegated to correct language. We should design a software which is hybrid like object modelling and business logic should be in object oriented languages, data processing rules and logic in functional language and process automation in procedural language.

KEEP THINKING !!!