Introduction to C programming

The C programming language finds its origin at the Bell Laboratories in the early 1970s. The creation and much of the development of the language is attributed to Dennis Ritchie. It is named "C" as it was to succeed a language called "B" which was created by Ken Thompson which Dennis has also contributed to.

"C" was designed and created in order to overcome some of the shortcomings of the "B" language.

The "C" language evolved alongside the operating system called "Unix" which was originally written using the low-level assembly language. Eventually, as "C" grew in features and maturity, some parts of the Unix operating system was then rewritten in "C".

Simplicity is beauty

I'd like to quote Ken Thompson here:

What is or is not implemented in the kernel represents both a great responsibility and a great power. It is a soap-box platform on 'the way things should be done.' Even so, if 'the way' is too radical, no one will follow it. Every important decision was weighed carefully. Throughout, simplicity has been substituted for efficiency. Complex algorithms are used only if their complexity can be localized.

- Ken Thompson; UNIX Implementation; The Bell System Technical Journal; July - August 1978.

Source: http://www.livinginternet.com

"C" code is designed to be simple and straightforward. It provides facilities for easily accessing primitive machine operations.

The language is designed to be used in implementing systems which are portable. In other words programs than can be compiled and run even on different hardware.

Features

There are a number of features that the C language offers, I'd like to list some of them down below just so you'll get an idea of what you'll be dealing with when programming in C:

Formatting the code is free-form

There are only a few simple rules to follow when writing C code and the programmer can format his code the way he likes it. He can add tabs or spaces or newlines as he desires. He can align the lines of the code according to his liking.

For instance, the two code blocks Code Sample #1 and #2 below will work in exactly the same way even though they're formatted differently.

Code sample #1

if (x > 1) {
   y = x * 45;
   printf("y = %d\n", y);
}

Code sample #2

if ( x > 1 )

{
   y = x * 45  		      ;
   printf ( "y = %d\n" , y )  ;

}

Highly modularized

Much of the code in C are contained in the so-called "functions". Functions are used to separate code blocks that usually perform a specific, well, function. This is some powerful stuff! It allows you to group your code into smaller pieces which makes visualizing your program easier. Furthermore, this also makes finding code defects easier since you can focus on one function at a time. This also promotes re-using of your code. In other words, instead of writing some similar code multiple times, you can simply group them in a function and then just call the function whenever you need them.

Say for example you want to print out some text as you trace your code and you want to prefix the text "DEBUG: " to make it easier to read on the terminal. You can define a function like this:

void debug(const char *msg)
{
	printf("DEBUG: %s\n", msg);
}

int main(int argc, char **argv)
{
	debug("Got here!");
	debug("Got even here!");
}

The code above actually contains two functions, one called "main" and the other one is "debug". Every C program will need a "main" function as you'll know later on. The "debug" function here is known as "user-defined" function simply because it's a function created by the user.

As you can see in the "main" function, you can simply use or "call" the "debug" function as many times as you want. When this program is run, it'll give the output below:

DEBUG: Got here!
DEBUG: Got even here!

Easy to learn

The language has relatively less number of reserved words. Reserved words are words that you can't use as variables or function names in your program. These are also known as language constructs. Or I would just simply call them as keywords.

Since the language is designed to be used in creating systems that would otherwise be written in assembly, it provides powerful facilities to access low-level computer components like the memory and I/O (input/output) devices like the keyboard and disks. In other words, the programmer can design his program in a manner that very closely mimics how the computer operates.

However, even though it has superb low-level capabilities, it is designed and developed well enough that it also offers strong high-level features like string and mathematical functions. In fact, C is often referred to as a "middle-level" language because of this balanced low-level and high-level functionalities.

General-purpose

Although I've already mentioned that C is for creating systems, you can really use it for creating just about any kind of application you can think of.

It can be used for creating graphical programs like window managers or web browsers. It can be used for making games, financial or mathematical analysis programs, spreadsheets or word processors, text or image editor, sound or video processing programs, and many others. In fact, a lot of newer programming languages today, like PHP and Python, uses C to implement the language and its compilers or parsers.

And many more

There are many more features offered by the C language but some of them are already highly technical so I'd put off mentioning them until appropriate. As for now, this hub, hopefully should have given you an idea about the language.

Have you programmed in C before? Do you have any particular feature that you like or are wondering if it's available in C? Drop me a comment below and I'll be happy to answer.

More by this Author


Comments

No comments yet.

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.


    Click to Rate This Article
    working