ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

Introduction to C programming

Updated on April 2, 2011

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.

Comments

    0 of 8192 characters used
    Post Comment

    No comments yet.

    working

    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://hubpages.com/privacy-policy#gdpr

    Show Details
    Necessary
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
    Features
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Marketing
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Statistics
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)