* osgUser:
This is my post here. I believe this is the right place to post my
question.
I'm searching in the internet for the real meaning of C++ fluency. In
my search I found almost nothing or vague answers. I'm programming C++
about 3 years and I can't say if I am( or any person that have the
same experience ) is fluent.
So for you, experienced programmers and engineers, what you consider "C
++ fluency"?
Being fluent in a language has to do with being able to express yourself easily
(synthesis) and in a way so that others do not react to the awkwardness of your
utterings, and it has to do with understanding other fluent speakers easily when
they're saying something meaningful (analysis).
It doesn't mean that you have memorized an extreme vocabulary and set of idioms,
and it doesn't necessarily mean that you know all the rules of the language.
For programming fluency additionally has to do with understanding programming in
general. With natural language a fluent speaker (e.g. a native speaker) might
say very silly things and still be regarded as fluent, because the relationship
between the language and things to express is just a simple one of memorization:
is this word or idiom appropriate for this concept *by convention*? With a
programming language you're always expressing new things, things never before
expressed, things where there can be no existing memorizable convention, so that
that mapping of language to things expressed is not one that can be simply
memorized but needs understanding & thinking & a sense of aesthetics: even if
you have memorized all the rules of C++ and the entire C++ standard library, if
you choose a wholly inappropriate algorithm or data structure then you'll not be
regarded as fluent no matter how technically correct C++ your solution is, while
on the other hand, if your solutions are good but perhaps do not utilize some
standard library feature that could have simplified the code a little for those
familiar with that feature, then you'll still be regarded as fluent.
And this difference is more important than one may think.
For at least my own ability to understand other's code is based very strongly on
understanding what constitutes good or at least, not unnatural ways to use the
language to express various classes of problems. And so when a novice asks here
about something, and presents code that does something in a very inappropriate
way, then I sometimes completely misunderstand what the code *actually* does
because in the haste of replying I incorrectly see an attempt to write something
more appropriate. Not comparing myself or others of the regulars here to chess
masters, but you see something of the same with chess masters: a chess master
can memorize a meaningful board position at a glance, but give him or her a
random board position, something not meaningful, an arrangement that doesn't
stem from an actual or possible game, then he or her fails to memorize the board
position, the actual positions of the pieces, even after lengthy inspection.
Cheers & hth.,
- Alf