C vs. C++: Who is the winner?
Published: 2021-12-02 12:20:01

Hello Techies, It's [Nomadev](https://twitter.com/thenomadevel) back with another blog. So today's blog is on one of the most debatable topics, **Who's the winner: C Vs C++**.  A lot of beginners have had the same questions when they started their programming journey. There was a long time where I didn't know the answer. So I decided to make a blog on the same.


![lets start.gif](https://cdn.hashnode.com/res/hashnode/image/upload/v1637914261576/5nfYC7vz_.gif)

## C programming language

C programming language is one of the ancient programming languages and is in demand right from the time, it was developed. C is the mother of all the modern programming languages because most of the compilers and JVMs are written in the C language. 

C is a procedural language and a versatile language, which allows maximum control with a minimal number of commands. C language has a rich library collection having most of the arithmetic and logical operations, which are predefined. All the modern languages have borrowed the core concepts from C languages like arrays, functions, file handling, and much more.

### Pros

- Very fast speed of compilation

- Portable (Unlike assembly languages)

- Open-source

- Supports both low and high-level programming

- Built-in functions

- Extensible


### Cons

- Prohibits Object-Oriented Programming Paradigm (Inheritance, Polymorphism, Encapsulation, Abstraction, Data Hiding)

- No Garbage Collection

- Lacks Constructor and Destructor

- Lacks Concept of namespace

- Somehow not easy to debug

<hr />

## C++


C++ is one of the most popular programming languages around, It is also just the next level of C programming. I was developed aiming to make a dynamic language that is efficient and has some additional features to C. It is used to develop games, operating systems, browsers, and so on. It is a powerful as well as a very flexible language having both high and low-level language features.

C++ is an object-oriented programming language, which includes concepts like classes, inheritance, polymorphism, data abstraction, and encapsulation that allow code reusability and make a program even more reliable. Earlier C++ was known by the name **C with classes**.

### Pros-
- Object-oriented programming language

- Supports Exception handling and inline functions

- Multi-Paradigm and Faster

- Has Standard Template Library

- Extensible

- Static Type System

- Large Community



### Cons

-  A little complex to learn

- Absence of  garbage collection 

- Security Issues

<hr />

## Ease of Learning

As C++ is a subset of the C language, that means their syntax resembles some extent.  C++ is an extension of the C language having in-built functions and a standard template library so it makes it comparatively easier to learn as a newbie.

Sample syntax 

>printf("Hello, World!") //*for printing a string in C* 

>scanf("%d", &testInt); //*for storing integer input in C*

> cout << "Hello, World" // *for printing string in C++ * 

>cin >> testInt;         * //for storing integer input in C++*

<hr />
## Programming Paradigm

C is a procedural-oriented language, so it is divided into modules and procedures, therefore it can make your code quite messy when it grows in size.
On the other hand, C++ supports multiple paradigms, which allows it to follow both procedural as well as object-oriented ways of programming. Being object-oriented, C++ code can be organized in a proper way and simultaneously increases productivity. The object-oriented nature of C++ helps developers to develop server-side software and fast applications.

<hr />
## Function Overloading
Function overloading is one of the most powerful features updated to  C++ programming language, a form of polymorphism. In it, a function with the same name can be used for different purposes.

For instance, the function add() can be defined in two ways. We can use it to calculate the sum of integer values, and for the string part, it can be used to concatenate two (or more) strings. Unlike C++, the C programming language doesn’t provide support for function overloading.
<hr />

## Application Development Area
C is a good option for embedded devices and system-level code. C++, on the contrary, is a top choice for developing gaming, networking, and server-side applications. It is also a great option for the development of device drivers.

The authority of C++ lies in performance and speed. Though C also offers these both qualities, C++ takes it a step further.
<hr />

## The Standard Template Library(STL)

C++ offers the Standard template library, which provides template classes for most of the data structures and their components for implementing added, build-in functionalities. You don't have to write the whole snippet every time you want to implement any data structure. Whereas C has no such library. Whereas **C supports the graphic library**. But after Python made graphics easier, its graphic library's popularity decreased. 
 
<hr />
## From Where to learn C and C++

Both languages are known as good first languages to learn in your programming journey.

To learn C:

-  [CS50 2021 - Lecture 1 - C](https://www.youtube.com/watch?v=LMUCmgghEXs) 
-  [The C Beginner's Handbook: Learn C Programming Language basics in just a few hours](https://www.freecodecamp.org/news/the-c-beginners-handbook/) 
-  [C Programming Tutorial for Beginners](https://www.youtube.com/watch?v=KJgsSFOSQv0) 

To learn C++:

- [ Beginning C++ Programming - From Beginner to Beyond](https://www.udemy.com/course/beginning-c-plus-plus-programming/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-0AGHx4c46bwVKt_wTdAvZw&utm_medium=udemyads&utm_source=aff-campaign) 
-  [C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y) 
-  [Object-Oriented Programming in C++](https://faculty.ksu.edu.sa/sites/default/files/ObjectOrientedProgramminginC4thEdition.pdf) 

<hr />
## Who is the winner:

C and C++ both are considered the most popular and evergreen languages in programming, both have some pros and cons. But in my humble opinion, if you are just getting started on programming and you have enough time to learn stuff and you want to make your fundamentals strong, you should learn C first and then master data structures and algorithms and implement them in it. Believe me, if you will get successful, you will surely become a sigma programmer. And you will never face any problem in switching to some other tech stack. So this was my personal opinion,
 You can your opinion in the comment section below.

 So this was it, If you liked this blog make sure to follow me on  [Twitter](https://twitter.com/thenomadevel) for more tech information.

 [![good-twitter.gif](https://cdn.hashnode.com/res/hashnode/image/upload/v1637395103449/aVaT64w2l.gif)](https://twitter.com/thenomadevel) 


And if you want to appreciate my work you can  [buy me a coffee](https://www.buymeacoffee.com/nomadevel), **Your appreciation is my motivation.**


 [![coffee.jfif](https://cdn.hashnode.com/res/hashnode/image/upload/v1637869195331/r4SfPP57h.jpeg)](https://www.buymeacoffee.com/nomadevel) 

That's my time Dev's, See you in the next one. Happy Coding.