🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.sys.mac.programmer.games
2 messages
2 total messages Started by John Maling Wed, 20 Mar 1996 20:22
The Art of C++ (Humor)
#4
Author: John Maling
Date: Wed, 20 Mar 1996 20:22
292 lines
14336 bytes
The Art of OOP&D (in C++)
(in a big company, team programming environment)
by John Maling

PART I (If this is favourably received there will be additional parts,
otherwise this is it.)

as inspired by...
SUN TZU ON THE ART OF WAR as Translated from the Chinese
By LIONEL GILES, M.A. (1910) (in the Public Domain)

Let the Project Manager heed my words and be victorious
-------------------------------------------------------
The Art of Object Oriented Design and Programming (OOD&P) is of vital
importance. It is a matter of the life or death of software, a road to
safety or to ruin. Hence it is a subject which can on no account be
neglected. The art of OOD&P, then, is governed by five constant factors,
to be taken into account in one's deliberations, when seeking to determine
the conditions obtaining in the specification.

These are: (1) The Moral Law; (2) Heaven; (3) Earth; (4) The Project
Manager; (5) Method and Discipline.

The Moral Law causes objects to be in complete accord with their messages,
so they will follow them regardless of their own state, undismayed by any
danger.

Heaven signifies programming day and night to meet a deadline, hot and
cold sweats, compile times and seasonal office parties.

Earth comprises distance to the coffee machine, java and expresso;
consultancy Vs tenure; public classes and private classes; the chances of
life and death.

The Project Manager stands for the virtues of wisdom, sincerely,
benevolence, courage and strictness......err......well...... the last one
anyway.

By method and discipline are to be understood the marshalling of the
classes in their proper groupings, the graduations of inheritance among
the classes, the maintenance of pathways by which messages may reach the
classes, and the control of CPU cycle expenditure.

These five heads should be familiar to every Project Manger: he who knows
them will be victorious; he who knows them not will fail. Therefore, in
your deliberations, when seeking to determine which Team should be given a
project, let them be made the basis of a comparison, in this wise: 

(1) Which of the two Teams is imbued with the Moral law? 
(2) Which of the Teams classes has the most re-useability? 
(3) With whom lie the advantages derived from Heaven and Earth?
(4) On which side is abstraction most rigorously enforced?
(5) Which army of programmers is the more powerful?
(6) On which system are lead programmers and code hacks more highly trained? 
(7) Which Lead Programmer holds the greater constancy both in reward and
punishment?

By means of these seven considerations I can forecast victory or defeat.

The Project Manager that hearkens to my counsel and acts upon it, will
conquer: let such a one be retained! The Manager that hearkens not to my
counsel nor acts upon it, will suffer defeat: let such a one be dismissed!

Let now the Lowly Hack hear my words and gain wisdom by them
------------------------------------------------------------
Heed the profit of my counsel, oh Hack!, avail yourself also of any
helpful circumstances over and beyond the ordinary rules, like paid
lunches.

According as circumstances are favourable, one should modify one's control
models.

All programming is based on planning, and the deception of both the Lead
Programmer and Project Manager.

Hence, when able to program, we must seem unable; when using our classes,
we must seem inactive; when we are near to a solution, we must make them
believe we are far away; when far away, we must make them believe we are
near.

Hold out baits to entice the Marketing Department. Feign disorder, and
crush them with the news the product has not made Beta.

If the Project Manager is a programmer, be prepared for him. If he is a
GOOD programmer, evade him.

If the Lead Programmer is of choleric temper, seek to irritate him with
complex Boochian design notations. Pretend to be witless, that he may grow
arrogant. Then take the real designs to the Project Manager and complain
about your superior, that you may win his position.

If he is taking his lunch break, give him no rest. If he is in a briefing
with the Manager, interrupt them.

Attack him where he is unprepared, appear where you are not expected
(confront him in the toilet with your 'breakthrough' state transition
diagram)

These programming devices, leading to victory, must not be divulged beforehand.

Now the hack who writes great software makes many calculations in his
temple ere the program is written. The hack who writes buggy software
makes but few calculations beforehand. Thus do many calculations lead to
victory, and few calculations to defeat: how much more no calculation at
all! It is by attention to this point that I can foresee who is likely to
be able to debug their code.

Thus we may know that there are five essentials for victory: (1) He will
win who knows when to code and when not to code. (2) He will win who knows
how to handle both the Method and the Message. (3) He will win whose
design is consistent. (4) He will win who, prepared himself, waits to take
the Lead Programmer and Project Manager unprepared. (5) He will win who
has CPU capacity and is not interfered with by Upper Management.

Hence the saying: If you know the code and know yourself, you need not
fear to write a hundred programs. If you know yourself but not the code,
for every great program you will also write a pile of crap. If you know
neither the code nor yourself, you will soon be out of a job....

Let the Finance Department hear my words that they may better profit
---------------------------------------------------------------------
John Maling said: In the operations of programming, where there are in the
field a thousand derived classes, as many bloated functions, and a hundred
thousand mail-clad data structures, with message demands enough to absorb
a thousand CPU cycles, the expenditure on the mainframe and at the
terminal, including entertainment of guests, small items such as glue and
paint, and sums spent on chariots and armour, will reach the total of a
thousand ounces of silver per day. Such is the cost of writing a program
exceeding 1,000,000 lines of code.

When a team engages in programming, if completion of the project is long
in coming, their wits will grow dull and their ardour will be damped. If
they must lay siege to old source code, they will exhaust their strength. 

Again, if code maintenance is protracted, the resources of the Company
Programmers will not be equal to the strain.

Now, when their wits are dulled, their ardour damped, their strength
exhausted and your treasure spent, external contract programmers will
spring up to take advantage of your extremity. Then no man, however wise,
will be able to avert the consequences that must ensue.

Thus, though we have heard of stupid haste in bringing products to market,
cleverness has never been seen associated with long delays.

There is no instance of a company having profited from vaporware (at least
in no way the Finance Department can calculate!)

Poverty of the local branch office causes a team of hacks to be maintained
by contributions from head office. Contributing to maintain a team at a
distance causes the company to be impoverished because of their long lunch
breaks.

Let the Lead Programmer heed my words and be enriched!
------------------------------------------------------
It is only one who is thoroughly acquainted with the evils of structured
programming that can thoroughly understand the profitable path of OOD&P.

The skilful programmer does not duplicate class functionality, neither are
his messages dispatched more than once.

Bring classes with you from your own library, but forage on existing
classes. Thus the design will have classes enough for its needs.

On the other hand, the demands of creating new classes and reworking the
dynamic model cause anguish to increase; and anguish causes the
programmers substance to be drained away.

When a programmers substance is drained away, he will be afflicted by
heavy exactions.

With this loss of substance and exhaustion of strength, the offices of the
programmers will be stripped bare, and three-tenths of their income will
be dissipated; while the departments expenses for broken chariots,
worn-out horses, breast-plates and helmets, bows and arrows, spears and
shields, protective mantles, draught-oxen and heavy wagons, will amount to
four-tenths of its total revenue.

Then will the Demons of Finance grow restless, and earthquakes shake your abode.

As a torch can be spent, so can your programmers, pity the Team Leader
whose programmers burn out in a cave!

The acrid scent of burning hacks is an invocation to the Gods of Upper
Management, the Overseers whose visages are rarely seen save at times of
calamity or change.

The sane man in no wise invites Their attention.

Hence a wise Leader makes a point of foraging on existing classes. One
cartload of another's classes is equivalent to twenty of one's own, and
likewise a single object of his provender is equivalent to twenty from
one's own store.

Now in order to re-use classes, our programmers must be roused to anger;
and that there may be advantage for finding them, they must have their
rewards.

Therefore in searching for class re-use, when ten or more classes have
been found, those should be rewarded who found the first. Our own messages
should be substituted for those of the original code, and the objects
mingled and used in conjunction with ours. The captured classes should be
kindly treated and kept.

This is called, re-using classes to augment one's own program.

In all programming, then, let your great task be completion, not lengthy
feature lists.

Thus it may be known that the Lead Programmer is the arbiter of the
projects fate, and the manager on whom it depends whether the project
shall be in peace or in peril.

John Maling said: In the practical art of Object Oriented Design and
Programming the best thing of all is to take the enemy's program whole and
intact; to modify it is not so good. So, too, it is better to reuse a
whole class group than to separate it, to capture an abstract class, a
superclass or a derived class entire than to destroy them.

Hence to hack your way into another's code is not supreme excellence;
supreme excellence consists in entering the enemy's code without breaking
it in the process. This is the Greatest Purpose of OOD&P.

Thus the highest form of C++ is to use only the enemy's interfaces; the
next best is to use his class groups; the next in order is to isolate his
classes; and the worst policy of all is to besiege a mountain of source
code.

The rule is not to besiege source code if it can possibly be avoided. The
preparation of mantlets, movable shelters, and various implements of war,
will take up three whole months; and the drinking of coffee over endless
printouts will take three months more.

Yet, before a mountain of printout the greatness of OOD manifests itself,
while the Structured Programmer is cast down in confusion.

The foolish C Team Leader, unable to control his irritation, will launch
his programmers to the assault like swarming ants, with the result that
one-third of them are slain, while the code still remains
incomprehensible. Such are the disastrous effects of C.

The skilful C++ Team Leader subdues the enemies code without any fighting;
he captures their classes without laying siege to them; he uses their
functionality without lengthy operations inside the class methods. With
his forces intact he will dispute the mastery of the Project, and thus,
without losing a single hack, his triumph will be complete. This is the
method of attacking programming through OOD&P.

Let Senior Management now profit from my counsel
------------------------------------------------
It is the rule in Company battle, if our assets are ten to the enemy's
one, to purchase him; if five to one, to attack him in the marketplace; if
twice as numerous, to split off a new company.

If equally matched, we can offer battle; if slightly inferior in size, we
can avoid his best selling products; if quite unequal in every way, we can
flee from him into niche markets.

Though an obstinate fight may be made by a small company, in the end it
must be captured by the larger company.

Now Upper Management is the bulwark of the Company; if the bulwark is
complete at all points; the Company will be strong; if the bulwark is
defective, the Company will be weak.

There are three ways in which Senior Management can bring misfortune upon
its programmers: 

(1) By commanding the hacks to write an application before conceiving the
Dynamic Model, being ignorant of the fact that they cannot obey. This is
called hobbling the programmers.

(2) By attempting to govern hacks in the same way as they administer
Marketing, being ignorant of the conditions which obtain amongst the
hacks. This causes restlessness in the programmers minds.

(3) By employing Project Managers without discrimination, through
ignorance of the Hacks principle of Creative Anarchy. This shakes the
confidence of the programmers.

And when the programmers are restless and distrustful, trouble is sure to
come from other software companies. This is simply bringing anarchy into
the Company, and flinging victory away.

END Part I
----------
This lot was conceived out of a dreamy mix of four hours per day of train
travel, during which time I read 'The Art of War' by Sun Tzu and
'Designing Object-Oriented C++ Applications Using the Booch Method' by
Robert C. Martin.

After three days without programming life becomes meaningless. <unknown>
Re: The Art of C++ (Humor)
#5
Author: Lawson English
Date: Thu, 21 Mar 1996 16:41
31 lines
1751 bytes
John Maling <jmaling@ozemail.com.au> wrote:
: The Art of OOP&D (in C++)
: (in a big company, team programming environment)
: by John Maling

: PART I (If this is favourably received there will be additional parts,
: otherwise this is it.)
[snipt]
: END Part I
: ----------
: This lot was conceived out of a dreamy mix of four hours per day of train
: travel, during which time I read 'The Art of War' by Sun Tzu and
: 'Designing Object-Oriented C++ Applications Using the Booch Method' by
: Robert C. Martin.


O Great One: whatever words are deemed necessary to be said for you to 
continue, please consider them said. On the other hand, should these 
words make offense, please consider them unsaid.

Either way, go for it. It's a keeper.


: After three days without programming life becomes meaningless. <unknown>

--
-------------------------------------------------------------------------------
Lawson English                            __  __     ____  ___       ___ ____
english@primenet.com                     /__)/__) / / / / /_  /\  / /_    /
                                        /   / \  / / / / /__ /  \/ /___  /
-------------------------------------------------------------------------------
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads