"John Redford" <[email protected]> writes:
...
> However, I suspect that you won't find many places that are in the business
> of doing business that will be using C/C++.  It's just not a
> business-friendly language.  Which is a polite way of saying that you cannot
> hire low-skill programmers to use it and expect them to produce code without
> massive memory-related issues.  C/C++ is commonplace in certain domains --
> many of which are popular with OSS developers -- and some of those are
> profitable and high-tech; but people who are serious about using C/C++ to
> make money -- and thus to hire you with the money -- are going to be looking
> for people who are "good", not people who just learned the language.

Are you thinking of new development or including maintaining existing
programs?  I don't know how much new development for business programs
there is using C++ or how many places that aren't product companies,
i.e. that only have themselves as users, would use it (I mean literally
that I don't know, not that I doubt there are any), but we still use it
as our primary language and I know the people who write Quicken use it.
In 2005, I interviewed at a place that sold some kind of financial
trading software that used it and later found a different job that had
one C++ program among their Java and Perl.  I was recently contacted by
a recruiter who was looking for either MFC/C++ or .NET/C# people.  She
didn't seem to favor one over the other.  There must be all kinds of
code still needing work that was created in the late nineties when C++
with MFC (and maybe rogue wave?) was the thing to use in some circles.

But I really have no perspective, since the recruiters who contact me
know I know C++ programmers.  Maybe I'll be doomed next time I'm layed
off.  Or I should nod and smile whenever people make C++ not sound like
a lucrative place to be.

About being good, that's not really my experience either.  I probably
know the language as well as anyone left at my company, and I'm
certainly no great shakes.  I think we hire like a lot of places.  If
they answer a couple simple questions like why would you want your
destructors to be virtual or what's a concrete class (i.e. why would you
not want them virtual) and have one C++ job in the resume they move
through to the part of the process where others judge whether they can
work with them and whether they seem reasonably quick on their feet.

The memory leak issue is largely solved for average programmers by the
use of reference counted smart pointers, which will be in the standard
library in the new standard, but you can get them from Boost or make
your own easily enough in the mean time.  I suppose you could also plug
in a conservative garbage collector like Boehm's too, but I have no
experience with that.  Was that the memory issue you had in mind, or
something to do with copying or allocation strategies?

Really, our very average programmers don't have much more trouble with
our MFC and C++ code than they do with our C# code.  The ones who were
excited about .NET worked themselvs up over little issues like why they
need to change function signatures in two places, but they would quiet
down when there was a pressing deadline.

The biggest issue we had, in my opinion, was the care you have to take
to manage your dependencies well and get your physical design just so,
to avoid long compile times, but hardware is catching up with our
incompetence on that front each year.  That and lately I see many
optimization problems coming about from our thinking about databases as
only a storage medium for objects.  I've not worked at enough different
places to know if there's a better solution, but I really wish there was
some way that something like an RDMS's optimizer could bound the
network, so you could just write code on the client side that will
manipulate the data with an OO interface.  Then this optimizer would
figure out how it should send the data over (or send your code to the
server) to avoid sending columns you won't use and to avoid many round
trips with latency delays that would have been unnecessary if you'd
asked for more things all in one go.  Most of what I see is people
making choices between doing things in stored procedures (where you need
a version for each back end you support) and doing a relational/OO
mapping, which seems like not a very good dichotomy for humans to have
to worry about.  But that's not C++ related, unless other languages have
better libraries that solve it for you.

-- 
Mike Small
[email protected]

_______________________________________________
Boston-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/boston-pm

Reply via email to