C Programming

C Programming

C is a powerful general-purpose programming language. It is fast, portable and available in all platforms.

If you are new to programming, C is a good choice to start your programming journey.

This is a comprehensive guide on how to get started in C programming language, why you should learn it and how you can learn it.

Before getting started with C programming, lets get familiarized with the language first.

C is a general-purpose programming language used for wide range of applications from Operating systems like Windows and iOS to software that is used for creating 3D movies.

C programming is highly efficient. That’s the main reason why it’s very popular despite being more than 40 years old.

Standard C programs are portable. The source code written in one system works in another operating system without any change.

As mentioned, it’s a good language to start learning programming. If you know C programming, you will not just understand how your program works, but will also be able to create a mental picture on how a computer works.

C is closely associated with Unix Operating system

Development of Unix System :

  • The PDP-11 version of Unix system was written in assembly language. Assembly languages are low-level programming languages that are specific to a particular computer architecture. They are hard to write and understand.
  • The developers of Unix Operating system (including Dennis Ritchie and Stephen C. Johnson) decided to rewrite the system in B language. However, B couldn’t suffice some of the features of PDP-11, which led to the development of C.
  • In 1972, the development of C started on the PDP-11 Unix system. A large part of Unix was then rewritten in C. By 1973, C was powerful enough to be used in Unix Kernel. Dennis Ritchie and Stephen C. Johnson made further changes to the language for several years to make it portable in Unix Operating system.

A procedural language.

In procedural languages like C, a list of predefined instructions are carried out step by step. A typical C program may contain one or more procedures (functions) to perform a task.

If you are new to programming, you might think this is the only way all programming languages work. However, there are other programming paradigms as well. One of the commonly used paradigms is Object-oriented programming (OOP) which allows developers to create objects to solve the given task. If you are interested, check out the differences between procedural and object oriented languages.

C programs are fast.

Newer languages like Python and Java offer more features (garbage collection, dynamic typing) than C programming. However, the performance lowers due to additional processing.

C language trusts programmers and allows direct manipulation of the computer hardware. This is not possible in most high-level programming languages. It’s one of the reasons why C is considered good choice to start learning programming.

Standard C programs are portable.

“Write once, compile everywhere?. Well-written standard C programs are portable, meaning, programs written in one system (e.g. Windows 7) can be compiled in another system(e.g. Mac OS) without any change.

Use of Modularity.

You can store sections of C code in the form of libraries for future use. This concept is known as modularity.

C itself can do very little on its own. The power of C language comes from its libraries. C comes with standard libraries to solve common problems. Suppose, you need to display something on the screen, you can include “stdio.h? library that allows you to use printf() function.

Statically typed language.

C is a statically typed language. This means that the type of a variable is checked during the compile time but not in the run-time. This helps in detection of errors during the software development cycle. Also, the statically typed languages are faster than dynamically typed language in general.

If you don’t know C, you don’t know what you are doing as a programmer. Sure, your application works fine and all. But, if you can’t say why while (*s++ = *p++); copies a string, you’re programming on a superstition. ( Joel Spolsky’s words, not mine ).

  • You will understand how a computer works.
  • If you know C, you will not only know how your program works but, you will be able to create a mental model on how a computer works (including memory management and allocation). You will learn to appreciate the freedom that C provides unlike Python and Java.
  • Understanding C allows you to write programs that you never thought were possible before (or at the very least, you will have a broader understanding of computer architecture and programming as a whole).
  • C is the lingua franca of programming.
  • Almost all high-level programming languages like Java, Python, JavaScript etc. can interface with C programming. Also, it’s a good language to express common ideas in programming. Doesn’t matter if the person you are talking with doesn’t know C, you can still convey your idea in a way they can understand.
  • Opportunity to work on open source projects that impact millions of people.
  • At first, you may overlook the fact that C is an important language. If you need to develop a mobile app, you need Java (for Android), Swift and Objective C (for iOS). And there are dozens of languages like C#, PHP, ASP.net, Ruby, Python for building web application. Then, where is C programming?
  • Python is used for making wide range for applications. And, C is used for making Python. If you want to contribute to Python, you need to know C programming to work on Python interpreter that impacts millions of Python programmers. This is just one example. A large number of softwares that you use today is powered by C.
  • Some of the larger open source projects where C programming is used are Linux Kernel, Python Interpreter, SQLite Database.
  • Another language that’s commonly used for large open source project is C++. If you know C and C++, you can contribute to large open source projects that impacts hundreds of millions of people.
  • You will write better programs.
  • To be honest, this statement may not be true all the time. However, knowing how computer works and manage memory gives you insight on how to write efficient code in other programming languages.
  • You will find it much easier to learn other programming languages.
  • A lot of popular programming languages are based on C (and C++, considered superset of C programming with OOP features). If you know C, you will get a head start learning C++.
  • Languages like C# and Java are related to C and C++. Also, the syntax of JavaScript and PHP is similar to C.
  • If you know C and C++ programming, you will not have any problem switching to another language.

There are numerous compilers and text editors you can use to run C programming. These compilers and text editors may differ from system to system.

You will find the easiest way to run C programming on your computer (Windows, Mac OS X or Linux) in this section.

Run C program Online

  • There are several sites that allows you to run C programming online.
  • It should be noted that, online C compilers are limited (you can’t work with files, taking input from the user is not natural and so on).

You cannot learn C programming in a day. You might have difficulty grasping the important concepts if you try to learn C programming faster.

If you just learn the syntax and dive in, your C code may work but you’ll not end up learning C programming the right way.

A debugging tool or debugger is a software (that’s already available in IDE) which allows programmers to stop a program at any point and helps to detect and correct errors.

When you have bugs in your program, rather than scratching your head to find the bug, you can use debugger to stop program at any point and find the value of variables to detect the bug.

Knowing how to use a debugger is an important skill that every programmer should learn.