Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I feel that the often seen C/C++ doesn't really describe my skills in my CV. So I'm planning to separate it into advanced C++ knowledge and mediocre C skills.

Do you think this is confusing for the reader? She could think: "C is a subset of C++, so what is this guy trying to tel me?" Well, what I'm trying to tell is: I have done several real world C++ projects while pure C projects where just a hobby thing. Do you agree that a skilled C++ programmer not necessarily is a qualified C guy or do you think that this switch is done easily?

share|improve this question
That is exactly what I do. It has not hindered me finding a job. –  Loki Astari Nov 1 '11 at 17:24
Haven't written a CV in a long time, but I always talk about C and C++ as two totally different languages. –  Rei Miyasaka Nov 1 '11 at 17:39
@ReiMiyasaka - Good, because they are two totally different languages. Both have been updated and have diverged from when C++ was created as an addition to C. –  Izkata Nov 1 '11 at 18:09
i believe that C/C++ are not the same thing and they are totally different languages,the only common thing is the 'C' in the name(not to mention the close syntax) –  Qchmqs Dec 5 '11 at 16:25
add comment

7 Answers

up vote 29 down vote accepted

You have asked so many questions in one; let me try to answer while segregating them. I hire many people which falls in this profile type and quite often i have to take so many interviews and reject people because often they don't quite have clear answer to the questions you asked.

  1. Is having good mastery in C or C++ is good enough to qualify you for the other program?
    If you are at a senior level actually NO. i.e. if you have been something like 6 years doing C++ programming on some core enterprise applications, and now i am trying to put you in embedded systems which is all in C - likely that your programming syntax and how to debug stuff is not an issue. But If you need think through of a problem - you are certainly very messy. This is true from either side to the other language. The more years you have been spending only one type of language - less easy to transform in other form! It is not about whether you can learn the syntax of language but you actually think differently when you are in C, C++, Java, perl and Python. To stretch the question - most often - C++ and Java guys can be used interchangeably and so is Perl,PHP, Phython. C is quite a different breed!

    If you are a relatively young guy - chances are that you can catch up fast.

  2. Does it mean that i have higher skill when i know C++ rather than C
    Actually No. No because, as a general rule, if you are capable of creating a full product out of C is much more difficult task compared to doing it in C++. Number of people who can master troubleshooting shared memory systems are much less than number of people who can write a decent GUI program using VC++ or similar framework.

  3. Does this mean knowing C (or the lowest level programming) is the highest level of achievement?
    No again! This is not contradiction. This time it depends on the domain you compare. If you are looking at systems programming inside the Linux kernel, or something very close to hardware, programming ability in C is more relevant, However, if you are writing banking software or some business rule engines - C++ is a usually natural choice. The point is your true strength is not much about the syntax of the language but the way you solve a class of problems and you can only hope to master a few catagories/domain in your life. If you are putting something in your resume - that is what really counts.

  4. Does it mean that if have only been in C - i don't know Object oriented programming?
    Not at all. In fact, my litmus test in the interview to know whether guy is from C background or C++ is to ask a very simple question - "So can you do Object Oriented Programing in C?" - the guy jumps and says - "Definitely NO!" he/she is C++ fellow. The point is, when you really write very complex code like multimedia code, a multi-threaded system, a protocol layer stack, you still 'think like object code' - C compiler doesn't punish you if you are bad at encapsulating two routines or objects - but when the system scales that keeps firing you - i believe at times - there are many who are born in the era of object orientation, quite often are fairly weak on exactly how encapsulation really gets violated in a code which is pretty much filled with classes and objects. Sorry i digressed. But the point is - it is more of your skills of problem analysis and design that matters more than your programming skills alone.

Does it mean i should put domain specific exposure and design skills saperately?
Definitely yes!

share|improve this answer
+1 For pointing out that you can have an object-oriented design and still implement it in C. –  Giorgio Nov 1 '11 at 18:24
@Dipan: Be careful about making assumptions based on age. Some older guys "catch up" pretty fast too. Some of them probably run faster than you. –  kevin cline Nov 1 '11 at 19:52
I strongly doubt that "C++ and Java guys can be used interchangeably". –  FredOverflow Nov 2 '11 at 6:54
I also disagree with #2. When you know C++, you can pick up C# or Java in relatively short time. Picking up C++ when you know either of the other two, however, takes a lot of time and effort, and requires that you first "unlearn" a lot of what you have taken as given in C# or Java. –  sbi Nov 2 '11 at 7:05
@sbi : I am not really arguing very specifics about the C++ or JAVA or C. I don't quite intent to over generalize relationship between languages; nor do i go with a presumption that people cannot really adapt learn or unlearn things. The only crux really is that different languages are also different thinking patterns irrespective of their syntactic relationship and that is what counts in the fitment of the role to be given. –  Dipan Mehta Nov 2 '11 at 12:11
show 2 more comments

For the people that really matter, no, it shouldn't confuse them.

Anyone who knows anything about real-world C and C++ programming knows that although despite their similarities and history, production programming in either is more often than not a completely different animal.

share|improve this answer
add comment

Personally, I find it very annoying when people write "C/C++", because C and C++ are very different languages. Conversely, if I see "C, C++" or "C++ and C" on a resume, it impresses me to no end. Unfortunately, almost everyone writes "C/C++", and it typically means "I know C++, but I can do C if I have to."

Also, I would not be so specific on the CV. Just list the programming languages you know, possibly in the order from most proficient to least proficient. That should get you past the HR buzz-word filter, and then you can explain during a technical interview what your strengths and weaknesses are.

share|improve this answer
Agreed. I would no sooner put "C/C++" on my CV than I would put "Java/JavaScript" as if they are the same thing. –  OrbWeaver Nov 1 '11 at 16:01
I often write C/C++ even though I know they are different languages, because of you learned either of them without bothering to look at the other, your knowledge of both is incomplete. You cannot be a good C programmer without at least studying OO, where C++ is the natural choice for learning how to do OO in C. You cannot be a good C++ programmer without understanding why C++ turned out the way it is, by its heritage from C. In a CV however, I agree they should be separate. –  user29079 Nov 2 '11 at 7:52
@OrbWeaver, one big difference is that you can often take a C program (as long as it isn't too complex), feed it to a C++ compiler, and get an executable out of that which will actually do what one out of a C compiler would do. You can't feed a Java program to a JavaScript parser (or the other way around) and get anything even remotely useful out of the exercise. So while I agree that C and C++ should be differentiated, to my mind writing C/C++ and Java/Javascript as if they were the same is still in two very different leagues. –  Michael Kjörling Nov 2 '11 at 9:40
add comment

No, it should not be confusing because C and C++ though similar and sharing similar roots are different in paradigm and usage. Thus, it should be separated, also the expertise should be separated too. Plus, i think you can mention more specific expertise(like GUI/FLTK or other libraries that you're familiar with) with the two separated.

share|improve this answer
add comment

I liked your phrasing: "I have done several real world C++ projects while pure C projects where just a hobby thing"

So I'd just put it in CV jargon:

  • worked on several C++ products
  • a few side projects using C

It's better if you put numbers in place of "several" and "a few". No need to be exact, "over twenty" is a number for this purpose.

The "skill level" description is correct, but the "experience" description is correct and clear.

share|improve this answer
add comment

I agree that C and C++ are different languages and should be kept separate in the CV. Even though C is (almost) a subset of C++, I normally have a very different programming style when using C: I design differently, I code differently, and so on. I would even remove certain C features like #includes from C++ giving up backward compatibility altogether: they are simply different languages.

So my advice is to keep the two languages separate in your CV.

share|improve this answer
add comment

Simply, if the person evaluating you had the propensity to think "C is a subset of C++," they're already confused, and I'm sure your explanation of what's written in your resume will be enough to wow them.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.