Why C language is great?
C is indeed the best programming language. Many languages arrived with a motive to become its alternative. But they cannot. Lets discuss the beauty of this language that made it so popular. My views about comparison of C with some other popular languages.The C Language was designed by Dennis Ritchie at Bell Laboratories. During the development of Unix, a general and system programming language was needed, and the result was C. Its minimalist, light, fast, easy to learn and fully accessible.
Machine Language is too hard and completely machine depended, Assembly becomes platform dependent, So when C came out, the Machine routines can be accessed directly as C can communicate with the machine very easily, there are the specified hexadecimal codes for that. And the for Assembly, most of C compilers have the inline assembly code feature, the “_asm” keyword, through which you can code the assembly directly inside C itself, also its very easy to link up assembly and C as at the end, C is also an assembler !
As the both of the above languages can be easily cooperated by C, all the system related stuffs becomes under C’s control.
When the personal applications software started appearing in the market, C was already very popular language, so most of the libraries and tools were again made in C.
Later, a need of Object Oriented system was needed with C so C++ was created, it was initially available as a C front end. You code your C with Objects and this front end converts it to C, later an independent compilers were made available. C++ was created to be C’s successor but some features of C are not directly available inside C++ as they were meant to be less efficient with the object-oriented coding style of C++. But there were very important features. C++ is a very complex language, its huge and difficult to master. The compiled code it generates is also very complicated and bigger than what’s generated by C. Other troubles like lack of standard ABI makes it hard for implementing low level stuffs like Kernel. That’s why Linus Torvalds ( creator of LINUX ) always criticizes C++ as a “Horrible Language”. For things like game development, the use of objects really makes C++ the second best language but when it comes to Low level stuff, its limited and C wins ! Usually C++ is slower than C but using C++ with all its efficient features and optimizations, some experts say that the resulting code could be better than C. But implementing C++ is very hard as its complex while implementing C is just like writing a portable assembler so C again wins the battle !
C is very portable language. Wikipedia states it as “C can run on almost everything in this universe”. But both C and C++ needs to have their code compiled again and again for each platform. Its “write one compile everywhere” model. So to meet this problem, JAVA was designed. JAVA features “Java Virtual Machine” which makes it possible to “compile once, run everywhere”. This was a huge benefit for all the developer as same software can be made available on mobile, desktop and websites with no or few modifications. Java is still made in C and has all its access with machine and OS through C. The trouble is that Java is slow, bulky and for designing complex algorithms or accessing devices is impossible with java only. You can make a beautiful Java applet with nice GUI in minutes because of so many frameworks available. But try to make a Chess Engine in Java, it will never win against the same written in C. Things like Kernel etc almost impossible without using C along, so things like “Java Native Interface” are available that can make a link between two. But the resulting code will be again based on Java Virtual Machine so writing an independent software like Kernel becomes hard as a new Virtual Machine will be needed. So C is better alternative as there is no such need here !
C is everywhere. But for Rapid Development, C doesn’t have much libraries as C is more focused with System Programming and so application related resources are not so much available for C. I thing all the students who wants to master computer science must start with C. It is a pure and simple language. With C, it is easy to understand how computer is doing the tasks as it’s an imperative language. We can read the C code and can understand how computer is thinking. You will find things like Obfuscated C Contest, where people obfuscate their codes to make unpredictable code, this thing is unique with C only. Most of the Open Source communities have C as their standard language.