What is C?

Chat is C?
C is a programming language developed at AT & T’s  Bell Laboratories of  USA in  1972. It  was designed and written by  a man named  Dennis Ritchie. In the  late seventies C began  to replace the more familiar languages of that  time  like PL/I, ALGOL, etc. No one pushed C. It wasn’t  made the ‘official’  Bell Labs language. Thus,  without any  advertisement C’s reputation spread and its pool of users grew. Ritchie seems to have  been rather surprised that so many  programmers preferred C to older languages like FORTRAN or PL/I, or  the newer ones like Pascal and APL.  But, that's  what happened. Possibly  why  C  seems so popular is  because it is reliable, simple and easy  to  use. Moreover, in an industry  where  newer languages, tools and technologies emerge and vanish day  in  and day out, a language that has survived for more than 3 decades has to be really good.  An opinion that is often  heard today  is – “C has been already superceded by  languages  like C++, C#  and Java, so why  bother  to learn C today”. I seriously  beg to differ with this opinion. There are several reasons for this:
(a) I believe that nobody  can learn C++ or Java directly. This is because while learning these languages  you  have things like classes, objects, inheritance, polymorphism,  templates, exception handling, references, etc. do  deal with  apart from knowing the actual language elements. Learning these complicated  concepts when you are  not even comfortable with the basic language elements is like putting the cart before the horse.  Hence one  should first  learn all the language elements very  thoroughly using C  language before  migrating to C++, C#  or Java. Though this two step learning process may  take more time, but at the end of it you  will definitely find it worth the trouble. 
(b) C++, C# or Java make use of a  principle called Object Oriented Programming (OOP) to organize the program. This organizing principle has lots of advantages to offer. But even while using  this organizing principle you would still  need  a good hold  over the language elements of C  and  the basic programming skills.
(c) Though many  C++ and  Java based  programming tools and frameworks have evolved over the years the importance of C is still unchallenged because knowingly  or unknowingly  while using these frameworks and tools you would be still required to use the core C language elements—another good reason why one should learn C before C++, C# or Java.
(d) Major parts of popular operating systems like Windows, UNIX, Linux is still written in C.   This is because even today when it comes to performance (speed of execution) nothing beats C. Moreover, if one  is to extend the operating system  to work with  new devices one needs to write device driver programs. These programs are exclusively written in C.
(e) Mobile devices like cellular phones and palmtops are becoming increasingly  popular.  Also, common  consumer devices like  microwave oven, washing machines and digital cameras are  getting smarter by  the day. This smartness comes from  a  microprocessor,  an operating system  and a program embedded in  this devices. These programs  not only  have to run fast but also have to work in limited amount  of memory. No wonder that such programs  are written in C. With these constraints on time and space, C is  the language  of choice while building such operating systems and programs.
(f) You must have seen several professional 3D computer games where the user navigates some  object,  like say  a spaceship and fires bullets at the invaders. The essence of all such games is speed. Needless to say, such games  won't become popular if they  takes a  long time  to move the spaceship or to fire a bullet. To  match the expectations of  the player the game has to react fast to the user inputs. This is where C language scores over other languages. Many  popular  gaming frameworks have been built using C language.
(g) At times one is required to very  closely interact with the hardware devices. Since C provides several language elements that make this interaction feasible  without compromising the performance  it is  the preferred choice of the programmer. 

I hope that  these are very  convincing reasons why  one should adopt C as the first and the very  important step in your quest for learning programming languages.

Comments