Why C and existence of other languages

Why start with C

Before straight getting started with C and C++, let us first find out why we need to learn C. Why there are so many languages and technologies? What is their usage in the current era? What we would be able to do after learning them?

It is well known that C is a basic language. We can interact with a machine using C. But now there are so many advanced languages like Java. Still, C which was developed in 1971 exists and is used all over the world.

To find out the reason let us first understand the meaning of software. We all know that the part of a machine that we can touch is hardware and the part which we can't touch is software. It's completely right but to a certain level. Software is defined as the collection of programs. A program is a set of instructions.

Let us consider software which we use regularly, Calculator. If we have four basic operations in our calculator which are addition, subtraction, multiplication, and division. In addition, we have four steps taking the first number from the user, the second number from the user, adding them, and the last providing the summation of the two numbers. Here calculator performed four instructions for addition and hence it is a program. Similarly, Subtraction, Multiplication, and Division are programs in a calculator. But we merge all these four programs we get a collection of programs which is known as a software called Calculator.

The software has four categories:

  1. System Software
  2. Application Software
  3. Web Application
  4. Mobile Application

1. System Software

System Software is the software that is preinstalled within the operating system which works internally and is invisible to us.

To understand this let us go through some basic memory of a computer. As we have two types of basic memory:

  • Primary Memory
  • Secondary Memory

Primary memory is the RAM. It is the actual working memory that erases itself upon restarting and the data here is temporary. Secondary memory is the HDD or SSD. It is the storage area where everything is stored or saved as it is permanent memory.

If we open a file and type something then it is in RAM as we are working on it. If we save it then it is stored in HDD. The process of opening a file (HDD → RAM) and saving a file (RAM →HDD) is known as Load or file loading. There is a hidden software behind all this and is known as Loader. Similarly, if we copy a movie or lecture recording, save it on the desktop, play it, and then the desktop gets off. Then the copy will be available on the desktop but the video will be closed and needs to be restarted as it was running on RAM.

If we take another example of a shortcut icon like Google Chrome or any other web browser which we use frequently then just by clicking on its shortcut on the desktop we can use Google Chrome which is placed in C:\Program Files\Google\Chrome\Application\chrome.exe There is another software known as Linker which is working behind all this. We have another system software known as Compiler. Now, you might have downloaded a compiler for C or C++ which contradicts the basic definition that these are pre-installed. So, let me tell you, you have downloaded a compiler for C language but have you downloaded any compiler for Windows OS or Android OS? Defined not. There are so many other system software which you can find out if you want to explore.

But the question now arises how can we make such software? So, the answer is the topic of the blog. You need to learn languages like C and its upgraded version C++ for the development of system software. Nowadays Java is also used for the same but is not recommended and it was not made for such purposes.

2. Application Software

These are special types of software which are also known as On-demand software. These can be like Library Management Software, Hotel Management Software, Railway Ticketing Software, etc which are used at those particular places and are not in our homes. Hence, these are made and used as per the requirements.

For the development of Application Software, we need to learn two things, the first is the front end (FE) and the second is the back end (BE). First, let us understand these terms. We all have used MS Word and observed that it shows a red underline below some words. That's the word that has a spelling mistake. Have you wondered how MS Word knows that it is incorrect? So, it has a dictionary that is completely hidden from us. We have no information about it. It is the Back end that is storing something and works from behind and is invisible to us. It is also known as a Database (DB). For this, we need to learn SQL. Tools for the same are SQL Server, MYSQL, DB-2, or ORACLE.

To understand the Front end, let us take a scenario of a Hotel Manager who needs a good view and looks where he can see the customer name, details, and other information, along with simple ways to edit it by typing and providing the bill with one click. So, such things that are visible to us are Front End and the technologies which we need to learn are Visual Basic(on last breath), VB .net, C# .net, and Java(Swing).

Anyone from each FE and BE is sufficient to make Application Software.

3. Web Application

To understand Web Applications, let us first discuss three important points. Firstly, these require the internet. Secondly, there's no need to install it. Thirdly, these can run on any web browser.

These are the websites that we explore on web browsers you are reading this blog on Blogger, running it on a web browser using the internet. For web applications, we need to learn three things. First BE, it is similar to that of Application Software but here it contains data of the entire world so it cannot be stored on a mobile or a desktop, and hence it needs a server for its functionality. You may have heard that companies like Facebook, Google, etc have huge servers to store data and provides the relevant data from the server which you are looking for. The second is FE, as it runs on a web browser, and a web browser only understands HTML. You need to learn only HTML(other technologies like CSS, and JS for further advanced web applications) in FE. It is the simplest language that works without errors. The last thing you need to learn is a connector which plays the role of intermediate between FE and BE. Mainly we have PHP, ASP .net, and Java Server Pages(JSP) as a connector. PHP is used in Facebook with the least security and fastest speed in comparison to the other two. ASP .net is used by Gmail with more security and moderate speed as compared to the other two. JSP is used by ATMs as they are the most secure and cannot be hacked easily but on the other hand, there are the slowest among the others.

4. Mobile Application

When it comes to a mobile application we misunderstand it as mobile phones only which is not the case here. Mobile applications are those which can move from one place to other. Devices like remote, light, fan, microwave Owen, washing machine, etc are also mobile devices. For this, we have an advanced version of Java known as j2ME which is Java 2 Micro Edition.

These are the four types of software with the technology or language needed for their development. There are many more languages and technologies in each category that can't be mentioned here so you can explore more for the same and become an expert by covering all those in that domain.

Now to understand the reason to discuss all these before getting started with C, let us take some examples: a. If there's a hotel manager who needs a hotel management system and asks you to know C and j2ME then you will be confident and stands against him that these aren't required for Hotel Management System. b. If someone needs a system software and asks you for VBnet and SQL, then you can answer him that these aren't required for the development of system software At last, none of your friends or interviewer can confuse you with these terms and restrict you from cracking that interview.

I hope you now have all the answers to the questions along with a better view of how things work. With this, we end our first blog on the series "All About C and C++". Make sure to go through all the blogs in the sequence for better understanding. Forthcoming blog will be including the "History of C Language".

Link to previous blog

Link to the next blog