Does C++ "dumb-down" programmers?

J

James Kanze

Of course it is not necessary. Just as there are winners on
lottery too, you can't rule out beforehand that buying a
ticket is a poor investment...
My RL experience is pretty sour, with long-time C users coming
to C++. For junoirs I'm the fan of tech that teaches C++
without C -- and on the average level C exposition hurts more
than helps.

Perhaps. But my experience suggests that people who don't
write clean code in C (or Fortran) won't do so in C++,
regardless, and people who write clean code in the languages
they already know will do so instinctively in C++. It's not a
question of how long they spend learning the language: the first
group will never write clean C++ (unless they relearn how to
write code in general), and the second will write clean code in
a subset of C++ very quickly.
For too many problems the C++ way differs drastically from the
C way. And in a properly shaped application the injected
C-stlye code will introduce problems.
Yes. Eventually. Not in 1 week.

Why not? The subset will be reduced, and a lot of the C++ won't
really be idiomatic, but if they were writing clean code in the
languages they used before, they should be able to learn a
minimally usable subset of C++ in about a week.
Just like with spoken language -- if pressed one can learn
basic interactive communication fast (where he can manage
everyday use cases). But if you have sophisticated thoughts
and want to express them precisely, that is far away. If ever
happens. I'm using English for what, 20 years? Read a ton of
books, no problem, but still struggle with stating what I
want.

Natural languages are several orders of magnitude more difficult
than C++. C++ has less than 100 keywords---some writers in
English use a vocabulary of something like 50000 keywords. And
while the C++ standard is already pretty large, it's nothing to
what it would take to define all of the idiosyncracies of a
natural language.

And of course, you can be productive in English with just "basic
English"---including, often, expressing some very complex ideas.
The expression may not be as concise as that of a native
speaker, but if you think clearly, and accept your limitations,
you can probably express yourself clearly enough to be perfectly
understood.
Certainly "productive" is not the same as "perfect" just to
map back to the original thread.
We didn;t yet see the answer to how "prodictive" is being
measured. So possibly speaking about different completely
different things.
Peopleware and similar books write about the effect of adding
manpower to a late project -- that makes it even later.
Getting productive in a new project takes a plenty of time by
itself. A realistic HR view is that the *properly* selected
new guy will gain 0-saldo in like half a year. Or one year.

Agreed, although it depends on the context. (The one year is
typically for fresh graduates. And no place I've worked would
accept more than three months from a consultant, and most
expected productivity in less time than that.)
At my last workplace I had knowledge and experience that
exceeded the sum of all the other members put together. With
weighted measure probably several times. Yet I'm quite sure
my net productivity was in the negatives for ~ 2 months.
So I keep my sceptical view on productivity when someone
doesn't even know the language -- and that is not a tuned one
like python.

I think that learning the language is often the simplest part.
I know that on the one project I did in Java, I became
fully proficient in Java in less than a month (and would have
been productive in less than a week, if there'd been something
to be productive on)---proficient enough to find a threading
error in some of the library code from Sun. It took me
considerably longer to learn the application domain, and what
was required of the program.
 
D

dragan

Paavo said:
dragan wrote:

<snip/>

Again, I don't know what they teach in a C++ programming course,
but USAGE is HARDLY the problem

The C++ programming language is vast and it takes a lot of time and
practice to wrap any novice's head around it. As a natural
consequence, it isn't possible to touch every aspect of the core
language, let alone the STL, in a regular, one semester course.

I do not believee that to be true. If you are a programmer, what
corresponds to a one semester course is more than enough time to
become familiar with C++. If you know C (which is my own background),
you can be productive in C++ in about a week and you will become
selfsupporting in less than one month.
[snip]

I once put out a figure as of 6 months, for getting proficient in a
new programming language.

That is an incomplete thought. Did you mean for someone new to programming
or someone with training and/or experience? How much training/experience?
And what about the person's other "agendas"? Or even their physical ability
to learn? Is age a factor? Curt responses are ALWAYS incorrect.
Since then, I have grown sceptical in this
regard.

Skeptical? Read what I wrote above.
There is always so much more to learn. Most of the long-term
knowledge is related to design issues though, so maybe this is not
directly language- related.

Ah, you're "onto something there", IMO.
 
J

Jorgen Grahn

Why? There are many of us here who never learnt C++ in the University.
Remember that C++ is a rather new language with an ISO standard as
recent as 1998. My guess is that many universities did not start
teaching C++ before around that time.

More likely the opposite, I think: they taught caveman[1] C++ *before*
1998, and then the Java craze came and they switched to that.

I trust self-studies more for things like this. A good programmer +
willingless to learn + some good books + Usenet => good C++ code.

/Jorgen

[1] I.e. no STL, lots of new, delete and raw pointers, no
understanding of RAII ...
 
D

dragan

Jorgen said:
Why? There are many of us here who never learnt C++ in the
University. Remember that C++ is a rather new language with an ISO
standard as recent as 1998. My guess is that many universities did
not start teaching C++ before around that time.

More likely the opposite, I think: they taught caveman[1] C++ *before*
1998, and then the Java craze came and they switched to that.

1998?

I remember that "all the rage" was Pascal (Delphi style), PowerBuilder and
Java, (RADDDDD!!!), around the year 1993-1994. I was going for my PMI
certification back then and the "dot com Xers" who thought they could just
live on the hog off of other peoples' talents wanted me to learn Delphi,
like I had just come out of community college or something (or just off of
the boat?). So sad that punctuation makes me remember that era. I was hired
to "manage" the influx of C++ programmers (who were just out of school)
because I had a few big projects under my belt as lead architect and had
management experience in multiple industries (not in IT). People were asking
me if I was going to "move to Java" and suggesting that it was "just a
matter of time". That company later went back to what they were good at:
mainframes and midranges.

(Too much harkening, but I'll leave it and cut it short without detail.
You're welcome.).
I trust self-studies more for things like this. A good programmer +
willingless to learn + some good books + Usenet => good C++ code.

You've got the right idea (not a definition though, mind you). The proverb
says that you can send a kid to college at $40k/yr, but that is worthless if
the motivation to learn, the quest to know or do something, isn't there. I
agree with that. I think it's absurd to go to college directly after a
first segment of life of schooling (k-HS). I think all who do are
brainwashed or have "connections" and just need the paper. After HS, only
the rare person should go to college IMO (especially now since the internet
made colleges obsolete ;) ).
/Jorgen

[1] I.e. no STL, lots of new, delete and raw pointers, no
understanding of RAII ...
 
A

Alf P. Steinbach

* dragan:
You've got the right idea (not a definition though, mind you). The proverb
says that you can send a kid to college at $40k/yr, but that is worthless if
the motivation to learn, the quest to know or do something, isn't there. I
agree with that.

It would have to be the "or do something". Someone who wants to learn should not
go to college, except perhaps one of the very best ones. In an ordinary college
education there's nothing to learn other than how to conform, and a kid who
wants to learn will be severely disappointed that there's nothing even here.


Cheers,

- Alf (off topic)
 
K

Kensai

I believe (and hope) that C++ will live a second renaissance once the
C++1x standard is out. And I don't know if a single book can change
university curriculums, but he did awfully right to write a
first-semester coursebook about C++ for students who are NOT Computer
Science students.



Rui Maciel wrote:

The C++ programming language is vast and it takes a lot of time and practice to
wrap any novice's head around it. As a natural consequence, it isn't possible to
touch every aspect of the core language, let alone the STL, in a regular, one
semester course.


Could this change with Stroustrup's new entry-level book about
programming and C++?


And of course, don't forget autodidacts. You always miss a thing or two when you
are self-taught.

True, and since I'm self-learning right now I can assure you it's
difficult in many parts. Nevertheless, Stroustrup's book book is really
well-written and he says it can be used even for autodidacts, although
we have to pay much more attention and ask for help (even online) when
stuck.
 

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

No members online now.

Forum statistics

Threads
474,156
Messages
2,570,878
Members
47,404
Latest member
PerryRutt

Latest Threads

Top