One of the most popular question computer science students ask is Should I learn C or Java? And which one should I learn first?
If you have zeroed down to only these two languages, you are already on a right track. With so many languages are being talked about all over the web, it is hard to get down to any two. The question is one of the most debated topic even amongst the professionals, and well, here are my two cents.
Why Choose C?
C deserves the hype of being ‘mother of all’, and one of the most important base level languages you can learn, to understand how code communicated with your machine at the bit level. Even though programmers hardly ever have to write a code at bit levels, it helps optimize the code even on more efficient languages like Java
In my personal opinion, the way programmers think while they write a code is very different if you start your journey to programming with C instead of any modern languages. It makes easy to pick up easily on any new languages, as they always have simplified syntax and much efficient workflow than C.
C is at some extent low level, it has variables, functions, a stack and a heap. It also comes with pointers, dynamic allocation and, some C glitches that are interesting to know if one is looking forward to have some edge over other developers.
If you want to start with coding iPhone or Android apps very soon, you can also start with Objective-C to move ahead faster to modern languages.
Despite all the facts, just start with C to learn from it, do not keep yourself constrained with the limitations of C, or else it can limit you as a developer as well. So you should soon move on to modern languages of your choice.
What About Java?
If you are planning to develop cross-platform applications faster and efficiently, Java must be the language of your choice, but I will recommend it only after understanding basics of C. You will know how the limitations of libraries in C are now extended, and basically how Java works in general. Java never teaches you about low-level operations of pointers and dealing with memory.
By going straight to Java, you might drive away from core disadvantages of C, but when you are stuck or need to dig down to low-level, you have to learn these things somewhere along your road as a developer. So why not start with C itself?
You might have guessed that my personal opinion will always be inclined to ‘C’ as it helps you learn how computers work, and how the code communicated with your system. This is a lengthy but most productive way to become a good software programmer. Which reminds me that if you are planning to become a Web developer, you can skip C, and focus on specific languages themselves, as they are independant of most concepts taught in ‘C’