This is an eternal question dug over and over during engineering graduation days. IMHO, it’s best to start with C. It is a very rich language and is more powerful than any other non-obscure 😉 programming language ever written. Many other programming languages are written based on C. It is not very difficult to learn new programming languages when you already are well-versed in one. In my personal experience, I studied for 15 days and scored 98% in SCJP then conducted by SUN Microsystems. I haven’t worked regularly in JAVA since 5 years but even today it doesn’t block me from looking into a piece of JAVA code or reviewing them. The truth is – learning a language doesn’t matter if you know only the syntax and features of the language, a complete understanding of how to convert any logic into that language in the best possible way is required. It takes minimum 6 years for a good programmer to claim that he knows C (or any other language) well. One more point to remember here is – if you are interested in systems programming it’s better to marry C ;); C++, JAVA etc. are engineered more towards customer requirement oriented rapid application development. I mean business, not elegance.