How do you define proficiency in C and C++?

C

Chandresh

Hi All,
I am a graduate student in EE. I have a question that might seem
unusual but in my opinion it is interesting and I request all experts
to reply.
Being a grad student, I came along many programming languages like
Assembly, C, C++, VHDL, Matlab, Perl etc. and I dont remember how I
learned them. I am more comfortable with Assembly programming than
others. The question is how do you measure proficiency in C and C++ ?
It is important because all employers need proficient C,C++ programmers
but its hard to know the exact meaning of their proficiency definition.


My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

Thanks,

Chandresh
 
D

Dizzy

Chandresh said:
Hi All,
I am a graduate student in EE. I have a question that might seem
unusual but in my opinion it is interesting and I request all experts
to reply.
Being a grad student, I came along many programming languages like
Assembly, C, C++, VHDL, Matlab, Perl etc. and I dont remember how I
learned them. I am more comfortable with Assembly programming than
others. The question is how do you measure proficiency in C and C++ ?
It is important because all employers need proficient C,C++ programmers
but its hard to know the exact meaning of their proficiency definition.
Good for you.
My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

Many reasons, I can think of:

1. businesses work in teams thus they already have a team of C/C++
programmers and they need some more people on it

2. also after some work it is done, a business has to make sure it's
investment is not lost, a business always presumes it may have to replace
any employee at any time thus they ask for people that can work in
languages that they know they can find enough and easy (and "cheap" in
whatever means they need it) people to be able to continue on the work
started

3. because running a business is no exact science I supose many tend to
apply "common knowledge" either from what they used before or from what
they know others use thus they tend to go with the "crowd" and use whatever
popular language exists at that moment (thus implicitely solving the 2
issues above)

4. and of course, there may be specific technical requirements (like working
with existent code they bought or they rent or whatever)

You seem to think of programming like the act of a lone coder who does some
project from ground up to it's finnish having exact requirements from
beginning, having inifinte time and resources. In real life you are not
(always) alone, you don't have infinite time and resources, you don't have
all the requirements from beginning, you don't start from 0, you don't get
to decide the language used and you don't ever finnish working on it
(usually projects live for a long time needing to satisfy existing
clients).

Or maybe I just don't understand your question :)
 
B

bjeremy

Chandresh said:
Hi All,
I am a graduate student in EE. I have a question that might seem
unusual but in my opinion it is interesting and I request all experts
to reply.
Being a grad student, I came along many programming languages like
Assembly, C, C++, VHDL, Matlab, Perl etc. and I dont remember how I
learned them. I am more comfortable with Assembly programming than
others. The question is how do you measure proficiency in C and C++ ?
It is important because all employers need proficient C,C++ programmers
but its hard to know the exact meaning of their proficiency definition.


My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

Thanks,

You make good points.. but think of it this way. Try thinking in terms
of proficiency of any language... For me, my first language is English.
Now I can speak Spanish, but every time I speak Spanish, I need to
translate back and forth from English in my mind. This and the fact
that my knowledge of the Spanish vocabulary is limited, makes it
harder for me to express my thoughts clearly and concisely. So while I
can get around the streets of Juarez, Mexico, I would not make it as a
tv anchor on UniVision.

A programming language is the same way. If you do not know the terms
and features of a language (syntax an semantics), this makes it more
difficult for you to express your logic for a program in a way that is
clear and concise.
 
L

Lionel B

On Fri, 05 Jan 2007 07:35:58 -0800, Chandresh wrote:

[snip]
My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

I think there tend to be two interlinked scenarios: either someone
decides (probably on the basis of a variety of factors) which language is
going to be used for an implementation of the problem and then seeks
people who (in addition, of course, to understanding the problem) can
implement it quickly and accurately in the chosen language - that is,
proficient programmers - or the implementation language may indeed be
chosen (perhaps partially) on the basis of availability of proficient
programmers with knowledge of the problem area. I'd say that both
scenarios are quite common.
 
C

Chandresh

Thanks Dizzy, Lionel and Jeremy

Well, You are absolutely right in saying that real job is different and
is more demanding thus all your resons are valid. Jermey's example
shows a perfect analogy. Actually I need to put up the question more
clearly and I will do that now.

So as employers are more interested in their business and current
requirements than trying to judge the candidate on his abilities. I
would like to know What does it mean by " Proficient in C, C++" ? How
employers judge a person's capabilities and understanding of C, C++? I
am more interested in knowing about the pure technical aspects of C,
C++ programming, I mean symantics, syntax and programming skill test.

I appreciate your participation and hope I can know important topics to
know as a proficient C, C++ programmer.

Thank you,

Chandresh
 
N

Noah Roberts

Chandresh said:
So as employers are more interested in their business and current
requirements than trying to judge the candidate on his abilities. I
would like to know What does it mean by " Proficient in C, C++" ?

In my experience, nothing at all. They say that and then you get to
the interview and they have some product written in Java or C#...or
Perl...anything but C or C++. Sometimes they even have language
bigotry against them and try to get into arguments about the benifits
of Java vs. C++....yeah, it happened to me.
How
employers judge a person's capabilities and understanding of C, C++?

By asking stupid and basic questions about C++ or C:

What is this: while (*d++ = *s++);

Or stuff that can't be answered:

Describe the structure of a class...

You mean how they are commonly laid out in memory?

No I mean describe the structure of a class.

Idiotic whiteboard problems that don't tell anyone anything beyond how
you handle the stress of having to do something stupid in front of a
panel of judges.
I
am more interested in knowing about the pure technical aspects of C,
C++ programming, I mean symantics, syntax and programming skill test.

When I do interviews I ask questions about parts of C++ not many people
know to see if they know it or can figure it out based on what they do
know or clues I tell them...static vs. dynamic boundary conditions and
such. Last guy I interviewed showed some tendency toward mathematical
proofing so I asked him to prove the solution he just wrote on the
whiteboard...he came back an hour after the interview with some
scribbles on paper, it wasn't right but the fact that it happened
impressed me on the spot.
 
V

Victor Bazarov

Chandresh said:
[..]
So as employers are more interested in their business and current
requirements than trying to judge the candidate on his abilities. I
would like to know What does it mean by " Proficient in C, C++" ? How
employers judge a person's capabilities and understanding of C, C++? I
am more interested in knowing about the pure technical aspects of C,
C++ programming, I mean symantics, syntax and programming skill test.

I appreciate your participation and hope I can know important topics
to know as a proficient C, C++ programmer.

Proficiency is subjective in the sense that when one is interviewed,
another, local, "expert" is evaluating one's "proficiency" and gives
his/her evaluation to the hiring manager.

I am not putting quotation marks to indicate my doubt or to mock, just
to assign notations. Generally speaking there can be no "generic
proficiency", only "proficiency as far as somebody can see". Substitute
'somebody' with "my local expert" and you get the hiring manager's POV.
The more people agree on the somebody's point of view, the closer the
proficiency to its generic form.

Now, what each of the interviewers ("experts") puts in his/her "C++
proficiency" criteria is up to them, of course.

And, sorry to mention this, but this particular subject matter does
seem off-topic to me.

V
 
V

Victor Bazarov

bnonaj said:
A point you've touched on is the type of applications the C++ is to be
used for. Hence someone could be well versed in C++, (as I try to be),
but without experience of the framework it's to be used within, So I
think the answer to your question is that employers nearly always
prefer people with the framework experience, (be that Telecoms,
embedded, MFC, Finance or Qt, to name a few). Therefore if you've
managed to provide a solution in C or C++ within a framework, this is
far more valuable than a greater C or C++ proficiency.

But from two people who possess the same knowledge of the framework,
the one with higher language proficiency should be prefered, no? So,
the question still remains, how do you judge the language proficiency?

Abstract for a moment from all other criteria for hiring (age, race,
sex, sexual orientation, looks, neatness, body odor, etc.) and try to
imagine the two candidates who are perfect clones of each other in all
aspects but the knowledge of the programming language. How do you
figure it?

V
 
B

bnonaj

Chandresh said:
Hi All,
I am a graduate student in EE. I have a question that might seem
unusual but in my opinion it is interesting and I request all experts
to reply.
Being a grad student, I came along many programming languages like
Assembly, C, C++, VHDL, Matlab, Perl etc. and I dont remember how I
learned them. I am more comfortable with Assembly programming than
others. The question is how do you measure proficiency in C and C++ ?
It is important because all employers need proficient C,C++ programmers
but its hard to know the exact meaning of their proficiency definition.


My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

Thanks,

Chandresh

A point you've touched on is the type of applications the C++ is to be
used for. Hence someone could be well versed in C++, (as I try to be),
but without experience of the framework it's to be used within, So I
think the answer to your question is that employers nearly always prefer
people with the framework experience, (be that Telecoms, embedded, MFC,
Finance or Qt, to name a few). Therefore if you've managed to provide a
solution in C or C++ within a framework, this is far more valuable than
a greater C or C++ proficiency.

JB
 
C

Chandresh

Thanks everyone,

Let me make it more specific. I think I can program well for any given
problem ( as everybody does!!) but I am not confident about the use of
C++ and my take more time for me to do something in C++. So Eventhough
I am a good programmer bcoz of less familiarity with C++ I feel guilty
to sell myself as an efficient C++ programmer. I understand that real
programming job has less to do with the interview question but still
its important. What are the core concepts, syntax and symantics that I
must know in detail?

If anybody feels that its an old topic, It may be for them and I am
sorry for that but for me its a great thing to learn from experienced
people like you.

Thank you,
Chandresh
 
V

Victor Bazarov

Chandresh said:
Let me make it more specific. I think I can program well for any given
problem ( as everybody does!!) but I am not confident about the use of
C++ and my take more time for me to do something in C++. So Eventhough
I am a good programmer bcoz of less familiarity with C++ I feel guilty
to sell myself as an efficient C++ programmer. I understand that real
programming job has less to do with the interview question but still
its important. What are the core concepts, syntax and symantics that I
must know in detail?

If you can understand (and explain to somebody who knows less that you)
every code example in, say, "Thinking in C++" or "Accelerated C++", you
know enough C++. Now, how that translates into a list of core concepts,
syntax, and semantics, I am not sure. Nor am I going to attempt to make
such a list. That's what the books are for.

V
 
B

bjeremy

Chandresh said:
Thanks everyone,

Let me make it more specific. I think I can program well for any given
problem ( as everybody does!!) but I am not confident about the use of
C++ and my take more time for me to do something in C++. So Eventhough
I am a good programmer bcoz of less familiarity with C++ I feel guilty
to sell myself as an efficient C++ programmer. I understand that real
programming job has less to do with the interview question but still
its important. What are the core concepts, syntax and symantics that I
must know in detail?

If anybody feels that its an old topic, It may be for them and I am
sorry for that but for me its a great thing to learn from experienced
people like you.

Thank you,
Chandresh

You C++ education starts here:
http://www.parashift.com/c++-faq-lite/index.html
 
S

Scott McPhillips [MVP]

Victor said:
try to
imagine the two candidates who are perfect clones of each other in all
aspects but the knowledge of the programming language. How do you
figure it?

I ask them to tell me what C++ or programming books they have read
recently, and we discuss a book or two. I also find that most C++
candidates have never heard of the standard template library. (!)
 
V

Victor Bazarov

Scott said:
I ask them to tell me what C++ or programming books they have read
recently, and we discuss a book or two. I also find that most C++
candidates have never heard of the standard template library. (!)

.... which is probably because it's an obsolete term. STL is what HP
came out with, before it was standardised. SGI still releases STL,
but it's their implementation of it original stuff amended to reflect
the standardised portions, and not many folks use custom-implemented
standard library elements, most simply use what comes with their
compiler.

V
 
D

David

Hello Chandresh,

Hi All,
I am a graduate student in EE. I have a question that might seem
unusual but in my opinion it is interesting and I request all experts
to reply.
Being a grad student, I came along many programming languages like
Assembly, C, C++, VHDL, Matlab, Perl etc. and I dont remember how I
learned them. I am more comfortable with Assembly programming than
others. The question is how do you measure proficiency in C and C++ ?
It is important because all employers need proficient C,C++ programmers
but its hard to know the exact meaning of their proficiency definition.


My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

Each language has its expressiveness, common tools, and pitfalls.
Proficiency in a language means that you are familar with what
the language can do and can think and work with people in that
language. At least that is a start.

I've also seen people that know a language but still can't put
the concepts together to solve a problem. Sometimes specific
knowledge is required to solve a probem, but I think most
people have trouble with putting together larger projects.
Perhaps my problem is that I deal so well at all levels that
there isn't anything really new anymore. It is all simple.
My downfall tendancy is to resist change when it isn't needed.
Thanks,

Chandresh

David
 
R

r

Chandresh said:
Hi All,
I am a graduate student in EE. I have a question that might seem
unusual but in my opinion it is interesting and I request all experts
to reply.
Being a grad student, I came along many programming languages like
Assembly, C, C++, VHDL, Matlab, Perl etc. and I dont remember how I
learned them. I am more comfortable with Assembly programming than
others. The question is how do you measure proficiency in C and C++ ?
It is important because all employers need proficient C,C++ programmers
but its hard to know the exact meaning of their proficiency definition.


My opinion: Programming is closely related to the problem being solved.
If one can understand the problem in detail and come up with the logic,
any programming language can implement it. So what is the point in
asking for proficiency in a particular language?

Thanks,

Chandresh

I would say if you have successfully written programs in C++, using
with understanding all the paradigms offered by the language (not
necessarily in the same program :), and in the spirit of C++, i.e.
with efficiency, you are considered proficient.

An employer's definition of proficiency is something else. If the
employer is doing something like web development where C++ is not
really apropriate then the requirement "proficient in C++" was just for
kicks.
 
B

bnonaj

Victor said:
But from two people who possess the same knowledge of the framework,
the one with higher language proficiency should be prefered, no? So,
the question still remains, how do you judge the language proficiency?

Abstract for a moment from all other criteria for hiring (age, race,
sex, sexual orientation, looks, neatness, body odor, etc.) and try to
imagine the two candidates who are perfect clones of each other in all
aspects but the knowledge of the programming language. How do you
figure it?

V
Victor,

I'm just not that perfect for the abstraction you're considering, and
I pretty certain nobody else could satisfy that level of abstraction.
So, unless a partial creature can create a totally impartial system, the
question is probably a matter for philosophy, and as you've already
pointed out, this is off topic.

while (u & i != the_ideal)
{
out_bin << off_topic;
newsgroup_io << cplusplus_query;
newsgroup_io >> cplusplus_answer;
}

JB
 
N

Noah Roberts

r said:
I would say if you have successfully written programs in C++, using
with understanding all the paradigms offered by the language (not
necessarily in the same program :), and in the spirit of C++, i.e.
with efficiency, you are considered proficient.

No, you are considered God. Only God has infinite time and memory
storage to learn and use the unbounded set of paradigms available in
C++.
 
V

Victor Bazarov

bnonaj said:
Victor said:
[..]
Abstract for a moment from all other criteria for hiring (age, race,
sex, sexual orientation, looks, neatness, body odor, etc.) and try to
imagine the two candidates who are perfect clones of each other in
all aspects but the knowledge of the programming language. How do
you figure it?

V
Victor,

I'm just not that perfect for the abstraction you're considering,
and I pretty certain nobody else could satisfy that level of
abstraction. So, unless a partial creature can create a totally
impartial system, the question is probably a matter for philosophy,
and as you've already pointed out, this is off topic.

My point was to explain the request, while you (validly, no doubt)
argue that in the real world answering the proficiency question has
very little value by itself. You're right, generally, but that's
not the end of it. FWIW, the application _can_ be pure C++ language.
Imagine a company that publishes an implementation of the library.
They need somebody who knows C++ and that's the most important
criterion for them.

V
 
B

blytkerchan

bjeremy said:
You make good points.. but think of it this way. Try thinking in terms
of proficiency of any language... For me, my first language is English.
Now I can speak Spanish, but every time I speak Spanish, I need to
translate back and forth from English in my mind. This and the fact
that my knowledge of the Spanish vocabulary is limited, makes it
harder for me to express my thoughts clearly and concisely. So while I
can get around the streets of Juarez, Mexico, I would not make it as a
tv anchor on UniVision.

A programming language is the same way. If you do not know the terms
and features of a language (syntax an semantics), this makes it more
difficult for you to express your logic for a program in a way that is
clear and concise.
I don't agree on the parallel : my first language is dutch but I speak
both english and french fluently as well. In fact, due to where I live
and work (or rather: who I live and work with) I have to speak french
every day, all day. I therefore no longer "translate" in my mind, but
rather swap languages: as I am typing this in english, I am in an
"english mode" if you will (and yes, the brain does work a bit like
that).

Same thing for C++ vs. other programming languages: if you are forced
to use more than one language on a daily basis, you won't have to
translate from one to another. For example: I usually code in C++,
which is close to my "native" language where programming is concerned.
If I have to code anything in Java, the "translation" bit comes in,
just like if I'd have to speak german. If I have to code in C, a
different part of my brain seems to kick in (even my coding style
changes in C) but there's no translation going on.

Hence, IMHO, proficiency is not a question simply of knowledge, but
also of habit (being used to working in a language) and context
(getting the right stimuli to swap your proficiency from your hard disk
into live memory, so to speak).

rlc
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top