Image of grog
Greg's software ABC
Greg's diary
Photo index
Greg's home page
Network link stats
Greg's other links
Copyright information

In March 1976, Datamation published the following poem, “A software ABC”, by David H.H. Diamond. I spent years looking for the text, but now all Datamation issues (I think) have been scanned in and are available at Here's the text from the scans. I may fix the markup later.

This is the algorithm A

 It makes its neat recursive way
 Into a stack.
 It will be back,
 But only after some delay.

B is a bug, the user's sore,

 Our hardware's going out the door.
 The fixes all turned out no use.
 While managers receive abuse.
 But brightly, brightly do I shine.
 Since I can prove it's yours, not mine.

C stands for COBOL—
What a pity
It was designed
By a committee.

D is for data, aren't you glad

 Your data's never, ever bad
 For all our software's written so
 Bad data makes the system blow.

E's word is hard, so I will strive
 To spell it. Here we go; C5
 C2 C3 and then C4
 C9 and then C3 once more.
 To programmers, may heaven bless 'em all,
 That's EBCDIC in hexidecimal.

F is futility and fumble

 And other things which make us grumble.
 On one more word this letter's stuck
 If you don't know it, well, hard luck!

G is for garbage; he whose sin

 It was to put such input in
 By rule must stand beneath the spout
 When his output's coming out.

H is for Hollerith. He designed

 The card code, which we've since refined
 For use on tapes and discs and drums
 And several other mediums.
 (Else, if you like, "on discs and dra,
 And several other media").

I is for interface, that's the line

 Between your subroutine and mine.
 If you'd avoid a grave dissension
 Please use my register convention.

J is the holly jest or joke

 Which mirth and laughter doth provoke;
 Manipulating byte and bit,
 We're filled with merriment and wit.
 For who could less than cheerful be
 When writing down B-X-L-E?
 We laugh until each face turns red
 To use that queer instruction, ED.
 Observe the giggling hysterics
 Induced by just one "move numerics."
 Still funnier is (avoid it lest
 You split your sides) Translate and Test.
 And when at last we've had our fun,
 And all the coding has been done,
 We laugh until we start to cry,
 When to execute we try.

K is a kludge which you say
You require to avoid some delay
But that interim fix
Forms a habit that sticks
And you'll find that it's in there to stay.

L is for language; use these three.

Cobol, Fortran, RPG.
Avoid all others, friend, and shun
Those with the suffix "L slash I."

M is a manager. Some are fat

And do not know what they are at.
Some other managers are thin
Look at the mess they get us in.
In general they're a useless tribe
(Except, of course, your humble scribe).

N is the Noon. Much more than dreary night
The noontime hour sees rise the rotting dead,
Who from their wooden cells go muttering forth.
Then will you hear them speak of ancient wrongs,
Of projects cancelled, systems vague and strange,
Of intricate enhancements ill designed,
And long-lost deadlines. Then also do they chart
Forgotten job-streams flowing in the night
To since-discarded listings. Men they curse
Who plucked procrustean schedules from the air
And then departed, called to high estate
In distant companies long since forgot.
Great deeds they now recall, and happier days,
And rusted hardware, powered once again
By memory and misted rosy dream.
Delay lines fill, and vacuum tubes warm up
And heroes (greater than the men we know)
Who never from their standards did depart
Stand forth among them, calling them to war.
Then should the Living shudder and know fear
And tremble at the muttering of the Dead.
But hoary time, in envy lest these shades
Usurp the little space of those who breathe
Now moves the clock unto the hour of one
And sends them back to work 'til coffee break.

O is the office where I sit

And think, and work a little bit.
My office has a wooden door
Or else I'd work a good deal more.

Here lies the spec of program P

The task of coding fell on me.
Who ('til I'd done)
Revealed to none
Its non-computability.

Q stands for quibble, which you do

when I am arguing with you.
("A quibble" I define to be
A point with which I disagree.)

R is response time. Slow and yet more slow

The man-machine communications flow.
At quiet terminals my patience fails.
Next time I'll try the U. S. Mails.

S is for slip, of color pink,

And on it writ
"Your programs stink."

T is time-sharing. I have been

Communing with the Great Machine
There, in an interactive state,
My deepest thoughts I did relate,
All eager to communicate.
It answered; but, to my dismay,
Had nothing interesting to say.

U was a user. He was rash
And parted quickly with his cash.
He bought with his investment huge
A powerful, expensive kludge.

Because his system was a joke
This user very soon went broke.
Since for his stuff he couldn't pay
We had to take it all away.

We all lost money on the deal
And soon the pinch began to feel.
The sales department hired more men
And went and sold the kludge again.

V is the vision, vision bright

Which keeps us working in the night.
O'er dumps we labor in the day
While dreaming of a better way.
We seek the coder's holy grail,
The program that will never fail.

Worry and work both start with W.
Insidious, they come to trouble you
The day the program's due to run
Though the coding's not yet done.
You've no design, and no test data.
The spec you plan to write up later.
But worry puts you off your feed
Decisive action's what you need.
Rush to your desk, brook no delay,
Sit down and write your resume.

X (Xenophobia) disgraces

Those folk who hate all other races.
Myself, I feel a hatred keen
Only for that damned machine.

Y was an innocent youth

Who took up our profession uncouth.
Though he'd try and he'd try,
He never could lie,
And got fired for telling the truth.

Z is for zero, written so
That 0 cannot look like O
which stands for One. Alas for me
My programs map to binary.
No other reason need be sought
Why half my programs come to nought.

Amusingly, the scan of this rhyme contained:
That 0 cannot look like 0

Greg's home page Greg's diary Greg's photos Copyright

Valid XHTML 1.0!

$Id: ABC.php,v 1.6 2020/01/28 22:53:24 grog Exp $