Every programmer should learn C during their programming career. Its benefits are too numerous to ignore. Not only will it open many more job opportunities, but it will teach you more about computers as a whole.


  • C is lower level then other programming languages (C++, Java). Programming at a lower level allows you to further your understanding of computers, as a whole.  
  • Device drivers and operating systems are written exclusively in C. Now, you may never write a device driver or an operating system, but what if you are ever required to modify one?  
  • What if you ever want to get a job programming microcontrollers? They are programmed in C. Are you going to limit your possible list of jobs because you didn't want to learn a new language?
  • C programs are smaller and faster then any other program created in a different language. Sometimes your program needs that speed boost that only C can give it.  
  • If you have learned C, you can learn any modern programming language. The reason behind this is that all modern programming languages are based on C (Java, C++, C#, etc).  
  • Because C has been around for many years, it has a large community and collective code base. This allows you to quickly and efficiently implement new algorithms or functions that have been programmed before.
  • C is the language of the Open Source community. The Open Source poster child, Linux, was coded in C. If you know C, you can participate in and contribute to numerous Open Source communities like ​​Source Forge​​.
  • C is the only language that teaches you what pointers really are. C# and Java skip the subject completely. It is pointers that give C its power.  
  • C is still the most commonly required language for programming jobs. It is well worth your time to get C under your belt.  
  • Anything that has a microprocessor in it has support for C. From your microwave to your cell phone, C powers technology.
  • C is not an object oriented language. Because of this, anyone who learns C has to learn to think functionally. When you do learn object oriented programming, you will have the base of C functional programming to go by. This will make learning object oriented programming easier and more enjoyable. 
  • Writing programs in C is like a mental exercise. You must take care of everything that many other languages take care of for you. You must manage your pointers, your memory allocation, and your memory deallocation. You have to figure out how you will to handle strings, and dynamic data. In other languages, all these things are hidden from you. You don't know how they work, nor can you change how they work. You trade in control and speed, for ease of use. In many cases, this is a valuable tradeoff. In other cases it is not.
  • For different situations you will use different languages. Some situations will call for Lisp, others for Java, and still others for C++. But your solid foundation will be C. You may not use it to program certain projects, but it will assist your ability to skillfully program in other languages.
  • Programs generated with C code are smaller and faster then programs generated from any other type of language besides Assembly. Why not learn Assembly then? Assembly is a beautiful language that can be very useful to learn, but it is not as portable as C, and popular languages like Java are based on C syntax, not Assembly. You should still learn Assembly at one point, but it will not prove as useful to you as C will.
  • If you ever want to write a video game engine or an operating system you will need C. You can't use C#, Java, or Basic for these type of programming tasks.