THE PROGRAMMER'S QUICK GUIDE TO THE LANGUAGES

The proliferation of modern programming languages (all of which seem to have stolen countless features from one another) sometimes makes it difficult to remember what language you're currently using. This handy reference is offered as a public service to help programmers who find themselves in such a dilemma.

TASK: Shoot yourself in the foot.

C: You shoot yourself in the foot.

C++: You accidentally create a dozen instances of yourself and shoot
them all in the foot. Providing emergency medical assistance is
impossible since you can't tell which are bitwise copies and which are
just pointing at others and saying, "That's me, over there."

FORTRAN: You shoot yourself in each toe, iteratively, until you run out
of toes, then you read in the next foot and repeat. If you run out of
bullets, you continue with the attempts to shoot yourself anyways because
you have no exception-handling capability.

Pascal: The compiler won't let you shoot yourself in the foot.

Ada: After correctly packing your foot, you attempt to concurrently load
the gun, pull the trigger, scream, and shoot yourself in the foot. When
you try, however, you discover you can't because your foot is of the wrong
type.

ADA : you scour all 154e56 pages of the manuals, looking for references
to "foot", "leg", or toes;
then get hopelessly confused and give up.
You sneak in when the boss isn't around and actually write the stinkin'
thing in C, and turn 7689 pages of source code in to the review
committee, knowing that they'll never look at it.
When the program needs maintenance, you resign.

COBOL: Using a COLT 45 HANDGUN, AIM gun at LEG.FOOT, THEN place
ARM.HAND.FINGER on HANDGUN.TRIGGER and SQUEEZE. THEN return HANDGUN to
HOLSTER. CHECK whether shoelace needs to be re-tied.

LISP: You shoot yourself in the appendage which holds the gun with which
you shoot yourself in the appendage which holds the gun with which you
shoot yourself in the appendage which holds the gun with which you shoot
yourself in the appendage which holds the gun with which you shoot yourself
in the appendage which holds the gun with which you shoot yourself in
the appendage which holds...

FORTH: Foot in yourself shoot.

Prolog: You tell your program that you want to be shot in the foot. The
program figures out how to do it, but the syntax doesn't permit it to
explain it to you.

BASIC: Shoot yourself in the foot with a water pistol. On large systems,
continue until entire lower body is waterlogged.

Visual Basic: You'll really only _appear_ to have shot yourself in the
foot, but you'll have had so much fun doing it that you won't care.

HyperTalk: Put the first bullet of gun into foot left of leg of you.
Answer the result.

Motif: You spend days writing a UIL description of your foot, the bullet,
its trajectory, and the intricate scrollwork on the ivory handles of the
gun. When you finally get around to pulling the trigger, the gun jams.

APL: You shoot yourself in the foot, then spend all day figuring out how
to do it in fewer characters.

SNOBOL: If you succeed, shoot yourself in the left foot. If you fail,
shoot yourself in the right foot.

Unix:
% ls
foot.c foot.h foot.o toe.c toe.o
% rm * .o
rm:.o no such file or directory
% ls
%
It is very easy to shoot yourself in the foot with UNIX.
Fortunately, it is also very easy to make a new one :)

Concurrent Euclid: You shoot yourself in somebody else's foot.

370 JCL: You send your foot down to MIS and include a 400-page document
explaining exactly how you want it to be shot. Three years later, your
foot comes back deep-fried.

DOS/VSE/SP (JCL): You first find the building you're in in the phone book,
then find your office number in the corporate phone book. Then you have to
write this down, then describe, in cubits, your *exact* location, in
relation to the door (right hand side thereof). Then you need to write
down the location of the gun (loading it is a proprietary utility), then
you load it, and the COBOL program, and run them, and, with luck, it may
be run tonight.

OS/MVS (JCL): You tell it you need a gun, and that you need space to put
your foot, then you run that, along with the COBOL program. Don't forget
to store the code as a proc, if you need to shoot your other foot.

Paradox: Not only can you shoot yourself in the foot, your users can, too.

Access: You try to point the gun at your foot, but it shoots holes in all
your Borland distribution diskettes instead.

Revelation: You're sure you're going to be able to shoot yourself
in the foot, just as soon as you figure out what all these nifty
little bullet-thingies are for.

Assembler: You try to shoot yourself in the foot, only to discover you
must first invent the gun, the bullet, the trigger, and your foot.

Assembler: You crash the machine. After a moment the operator arrives and
shoots you in the foot. After a moments contemplation he shoots himself in
the foot, then hops around the machine room rabidly shooting everything in
sight.

Algol: You shoot yourself in the foot with a musket. At the hospital the
intern is fascinated by the antique scrollwork on the weapon and the
aesthetic qualities of the wound.

Modula2: After realizing that you can't actually accomplish anything in
this language, you shoot yourself in the head.

Eiffel: You create a GUN object, two FOOT objects and a BULLET object.
The GUN passes both the FOOT objects a reference to the BULLET.  
The FOOT objects increment their hole counts and forget about the BULLET.
A little demon then drives a garbage truck over your feet and grabs the 
bullet (both of it) on the way.

Smalltalk:  You send the message shoot to gun, with selectors bullet
and myFoot.  A window pops up saying Gunpowder doesNotUnderstand: spark.
After several fruitless hours spent browsing the methods for Trigger,
FiringPin and IdealGas, you take the easy way out and create ShotFoot,
a subclass of Foot with an additional instance variable bullet hole.

VMS:
$ MOUNT/DENSITY=.45/LABEL=BULLET/MESSAGE="BYE" BULLET::BULLET$GUN SYS$BULLET
$ SET GUN/LOAD/SAFETY=OFF/SIGHT=NONE/HAND=LEFT/CHAMBER=1/ACTION=AUTOMATIC/
  LOG/ALL/FULL SYS$GUN_3$DUA3:[000000]GUN.GNU
$ SHOOT/LOG/AUTO SYS$GUN SYS$SYSTEM:[FOOT]FOOT.FOOT

%DCL-W-ACTIMAGE, error activating image GUN
-CLI-E-IMGNAME, image file $3$DUA240:[GUN]GUN.EXE;1
-IMGACT-F-NOTNATIVE, image is not an OpenVMS Alpha AXP image

From:

David Ruggiero (jdavid@halcyon.com)
(original author or authors unknown)