Re: Type System as Design Tool [Was: We do not use C++ exceptions]
On Mar 2, 6:53 pm, Francis Glassborow
What GC often buys the language designer is a lot of grief (note that GC
in Java has had, and maybe still has, problems at the language design
level.) The pressure for GC (in C++) does not come from the language
designers (who largely regard the demand as misplaced) but from some
sectors of the user community (at least in part from those whose
educational experience has not fitted them to understand working with
[A resubmission after removing some potentially-hot material: -LCL-]
Beautiful! Well said!!!
This is why I defend C++, pure C++ that is, at every opportunity.
There is a frightening social dynamic at play that is working to
gradually destroy it:
Pratically speaking, I think the dynamic goes something like this:
01. A Real Engineer uses C++ to write code. Earns $1,000,000US.
02. Business Person notices $1,000,000US.
03. Business Person creates company to create same products that Real
04. Business Person, not being Real Engineer, has trouble creating
05. Business Person, not being Real Engineer, has trouble
discriminating between Real Enginers and Pseudo Engineers who might
relieve him of trouble creating products.
06. Pseudo Engineer is person who, like Business Person, noticed
$1,000,000. The Pseudo Engineer's love for All Things Engineering is
not nearly as great as that of a Real Engineer, sometimes almost non-
existent, but at salary of $70,000US/year, there is need to complain.
07. Business Person, not being able to discriminate, mistakenly hires
large number of Pseudo Engineers. The product is a mess, has memory
leaks everywhere, and takes forever to get stable.
08. Business Person starts searching in vain for Silver Bullet that
will enable his Pseudo Engineers produce the kind of work that Real
09. Large software tool companies discover that, instead of telling
Truth, that there is no silver bullet, it is better to profit from
mode of thinking by selling [Garbage-Collected, Zero-Defect,
Extreme Social Programming While Solving Global Warming Toolkit v.
After all, dollar is a dollar, no matter what delusions the customer
might or might not have.
10. Business Person buys this product for $750US. Surprisingly, only
the "social" aspect of it works. Pseudo-Egnineers spend 20% of their
time blogging about the social aspects of their social aspect. The
development budget skyrockets. Business Person is perplexed.
11. Pseudo Engineers are asked what the problem is. They say, "It's C+
+. C++ makes us write bad software."
12. Business Person, a willing particpant in Freudian Denial, agrees
and asks Pseudo Engineers, "What will make you all better?"
13. Pseaudo Engineers proclaim that a language that is more "flexible"
and "tolerant" "open", "kinder", "gentler", "forgiving", will help.
they mean to say is that they want a language that relieves them of
thinking like Real Engineers (with disciplined pre-conception, etc.),
or better said, think and do in a somewhat sloppy fashion, with
14. Real Engineers resist the non-sense. The result is Business
Person must accommodate a hybrid culture of Real Engineers using C++
Engineers using plethora of social programming soup.
15. Hybridization makes system even more of a mess. Pseudo-Engineers
spend extraordinary amount of time trying trying to stop memory leaks
and gain determinism in their social soup. Productivity of Real
Engineers drops because they become unwilling participants in the soup
16. Pseudo Engineers spend much time asking Real Engineers what can be
done to tame mess that has been created, as if it were possible
to have one's cake and eat it too. [See Silver Bullet link.]
17. In isoltated products, Real Engineers continue writing real,
robust code that is fast, has few resource leaks, actually works on
time and under budget. There is visible difference between effort that
Real Engineer puts into his own C++ project, versus the other C++/
product. Pseudo Engineers regard Real Engineers with Utter-But-Silent
18. Insurrection begins where Pseudo-Engineers make an Unspoken
Declaration of War against Real Engineering, incensed that the Real
Engineers are being so obstinate, spending all their brain energy on a
Less-Productive Language Like C++, earning 150% of a Pseudo-Engineers
for doing essentially the same thing (putting windows on a screen and
talking to a database), when they could be earning much less money and
enjoying the social soup like Everyone Else.
19. Business Person notices rebellion in organization and growing
population of non-C++ users, and decides that strife cannot be
tolerated. Democracy must prevail. The most popular languages win, and
++ is definitely not one of them.
20. University Professor takes note of trend, begins to displace C++
with [insert social language here] due to pressure from parents who
"Don't want their kids to be left behind." Also, University Professors
who have questionable practical ability due to long-term disengagement
are happy to be relieved of actually having to learn C++ well enough
to teach it to serious students who retain scary C++ knowledge.
And so the cylce continues..growing..growing...
But there is one important aspect of all of this, which I mentioned in
the beginning of this post, and I repeat here:
There are some programmers who would simply rather not see C++
Period. It doesn't matter whether they use it or not. They simply
would rather it just died. The reason has nothing to do with computer
science. It's a social phenomenon. It's...
and it is occuring right now in every sizeable organization that uses
1. A new tool for doing something arrives.
2. A select few use it with great success.
3. Others take note and struggle to use it with varying degrees of
4. Others attack the tool and those who use it out of spite, envy,
greed...general discontent of feeling disconnected...
5. Unable to defend themselves, select few submit to pressure,
normalization occurs, cycle repeats.
If you are a Real Engineer, be careful. This process is happing within
the context of C++, today, right before your eyes.
If you see this type of encroachment in your organization, block it.
Evangelize for C++.
And keep in mind that the "Grand Overseer" of something beautiful
Inventor) might not always be in the position to defend his
position because no one operates in a vacuum with the tool is as
as C+. Anyone who thinks, at this point, that the future of C++ is
apolitical and will be determined solely by technical merit is
deluding himself, IMO.
We should all do our part. We should defend our language. We should
[All opinions herein are mine and mine alone.]
-Le Chaud Lapin-
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]