How to Shoot Yourself In the Foot

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 guide is offered as a public service to help programmers who find themselves in such dilemmas.

C

You shoot yourself in the foot.

C++

You accidently 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 anyway because you have no exception-handling facility.

Modula-2

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

COBOL

USEing 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 retied.

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...

Scheme

As Lisp, but none of the other appendages are aware of this happening.

BASIC

Shoot yourself in the foot with a water pistol. On big 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 so much fun doing it that you won't care.

Forth

Foot yourself in the shoot.

APL

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

Pascal

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

Object Oriented Pascal

You perform a shooting on what might currently be a foot with what might currently be a bullet fired from what might currently be a gun.

Snobol

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

HyperTalk

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

Prolog

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

370 JCL

You send your foot down to MIS with a 4000-page document explaining how you want it to be shot. Three years later, your foot comes back deep-fried.

Ada

If you are dumb enough to actually use this language, the United States Department of Defense will kidnap you, stand you up in front of a firing squad and tell the soldiers, "Shoot at the feet."

or

The Department of Defense shoots you in the foot after offering you a blindfold and a last cigarette.

or

After correctly packaging 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 that your foot is of the wrong type.

or

After correctly packing your foot, you attempt to concurrently load the gun, pull the trigger, scream, and confidently aim at your foot knowing it is safe. However the cordite in the round does an Unchecked Conversion, fires and shoots you in the foot anyway.

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 bulletHole.

Postscript

It takes the bullet ten minutes to travel from the gun to your foot, by which time you're long since gone out to lunch. The text comes out great, though.

PERL

You stab yourself in the foot repeatedly with an incredibly large and very heavy Swiss Army knife.

or

You pick up the gun and begin to load it. The gun and your foot begin to grow to huge proportions and the world around you slows down, until the gun fires. It makes a tiny hole, which you don't feel.

Assembly Language

You crash the OS and overwrite the root disk. The system administrator arrives and shoots you in the foot. After a moment of contemplation, the administrator shoots himself in the foot and then hops around the room rabidly shooting at everyone in sight.

or

You try to shoot yourself in the foot only to discover you must first reinvent the gun, the bullet, and your foot.

or

The bullet travels to your foot instantly, but it took you three weeks to load the round and aim the gun.

Concurrent Euclid

You shoot yourself in somebody else's foot.

Java

You locate the Gun class, but discover that the Bullet class is abstract, so you extend it and write the missing part of the implementation. Then you implement the ShootAble interface for your foot, and recompile the Foot class. The interface lets the bullet call the doDamage method on the Foot, so the Foot can damage itself in the most effective way. Now you run the program, and call the doShoot method on the instance of the Gun class. First the Gun creates an instance of Bullet, which calls the doFire method on the Gun. The Gun calls the hit(Bullet) method on the Foot, and the instance of Bullet is passed to the Foot. But this causes an IllegalHitByBullet exception to be thrown, and you die.

Windows 3.1

Double click the gun icon and wait. Eventually a window opens giving a selection for guns, target areas, plus balloon help with medical remedies, and assorted sound effects. Click "shoot" button and a small box appears with note "Unable to open Shoot.dll, check that path is correct."

Windows 95

Your gun is not compatible with this OS and you must buy an upgrade and install it before you can continue. Then you will be informed that you don't have enough memory.

DOS

You finally found the gun, but can't locate the file with the foot for the life of you.

MSDOS

You shoot yourself in the foot, but can unshoot yourself with add-on software.

Unix

You shoot yourself in the foot

or

% ls
foot.c foot.h foot.o toe.c toe.o
% rm * .o
rm: .o: No such file or directory
% ls
%