home
> jokes
> How to Shoot Yourself In the Foot
How to Shoot Yourself In the Foot
There are numerous variants of this on the Web.
The original version was published in the December 1991 issue of
Developer's Insight.
I have been unable to track that down,
but what follows is the version published in
Brad Templeton's Internet Joke Book, 1995.
[Thanks to Jonathan Arnold
for sending me this reference.]
If you know more languages, or have the original article, please
email me.
What Language is Afoot?
bp@thedog.cis.ufl.edu (Brian Pane)
How to determine Which Programming Language You're Using:
The proliferation of modern programming languages which seem
to have stolen countless features from each another sometimes makes it
difficult to remember which language you're using. This guide
is offered as a public service to help programmers in such dilemmas.
-
C
-
You shoot yourself in the foot.
-
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.
-
C++
-
You accidentally create a dozen instances of yourself and shoot them
all in the foot. Providing emergency medical care 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."
-
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."
-
Modula/2
-
After realizing that you can't actually accomplish anything in this
language, you shoot yourself in the head.
-
sh, csh, etc
-
You can't remember the syntax for anything, so you spend five hours
reading man pages before giving up. You shoot the
computer and switch to C.
-
Smalltalk
-
You spend so much time playing with the graphics and windowing
system that your boss shoots you in the foot, takes away your
workstation, and makes you develop in COBOL on a character terminal.
-
APL
-
You shoot yourself in the foot; then spend all day figuring out how
to do it in fewer characters.
More Prog.Lang.Help
bobmon@iuvax.cs.indiana.edu (RAMontante)
The lovely explanation of how to identify a programming language
by its effects missed a few languages. Herewith:
-
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 processing
ability.
-
Algol
-
You shoot yourself in the foot with a musket. The musket is
aesthetically fascinating and the wound baffles the adolescent medic
in the emergency room.
-
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.
-
BASIC
-
Shoot self in foot with water pistol. On big systems,
continue until entire lower body is waterlogged.
-
PL/I
-
You consume all available system resources, including all the
offline bullets. The DataProcessing & Payroll Department doubles
its size, triples its budget, acquires four new mainframes, and drops
the original one on your foot.
-
SNOBOL
-
You grab your foot with your hand, then rewrite your hand to be a
bullet. The act of shooting the original foot then changes your
hand/bullet into yet another foot (a left foot).
-
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...
-
scheme
-
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...
...but none of the other appendages are aware of this happening.
-
English
-
You put your foot in your mouth, then bite it off.
[For those who don't know, English is a McDonnell Douglas/PICK
query language which allegedly requires 110% of system resources to
run happily.]
Shoot Yourself in the Foot Yet Again
PLS@@cup.portal.com
I copied the last jokes about shooting yourself in the foot in various
languages to BIX. Here are their additons.
-
Prolog
-
You attempt to shoot yourself in the foot, but the bullet, failing
to find its mark, backtracks to the gun which then explodes in your
face. <BG>
-
Forth
-
yourself foot shoot. <akarna>
-
dBase
-
You squeeze the trigger, but the bullet moves so slowly that by the
time your foot feels the pain, you've forgotten why you shot yourself
anyway. <rboatright>
-
DBase IV, V1.0
-
You pull the trigger, but it turns out that the gun was a poorly-designed
hand grenade and the whole building blows up. <akarna>
-
Clipper
-
You grab a bullet, get ready to insert it in the gun so that you
can shoot yourself in the foot, and discover that the gun that the
bullets fits has not yet been built, but should be arriving in the
mail REAL SOON NOW. <rboatright>
-
SQL
-
You cut your foot off, send it out to a service bureau and when it
returns, it has a hole in it, but will no longer fit the attachment at
the end of your leg. <rboatright>
-
Assembly Language
-
For those who like to load their own rounds before shooting themselves in the foot. <rhsmith>
Of course, it didn't end there; there are many extensions to this
idea (some included below). What many fail to recognise, however
(especially those that add more complicated options for C, or reorder the
list) is the meta-joke. Given the first line, the list starts off looking
like yet another insult to C. But after reading the whole list, and coming
back to the beginning, it becomes clear this is actually a
compliment
to C!
I have compiled the following lists from a variety of different
sources on the Web, and from
emailed
suggestions; it includes contributions from
Giles Constant,
James Davis,
Steve DiVerdi,
Fritz Freiheit,
Murray S. Kucherawy,
Laurent Laborde,
Simon Mikkelsen,
Doug Snell,
Reynir Stefánsson,
Wayne Throop,
Juan M. Uys,
and Nick Wallis.
-
Pascal
-
The compiler won't let you shoot yourself in the foot.
-
HyperTalk
-
Put the first bullet of the gun into foot left of leg of you.
Answer the result.
-
FORTRAN-77
-
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 still can't do
exception-processing.
-
Modula-2
(alternative)
-
You perform a shooting on what might be currently a foot with what
might be currently a bullet shot by what might currently be a gun.
-
BASIC (compiled)
-
You shoot yourself in the foot with a BB using a SCUD missile
launcher.
-
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
(alternative)
-
BULLET DUP3 * GUN LOAD FOOT AIM TRIGGER PULL BANG!
EMIT DEAD IF DROP ROT THEN
(This takes about five bytes of
memory, executes in two to ten clock cycles on any processor and can
be used to replace any existing function of the language as well as in
any future words). (Welcome to bottom up programming - where you, too,
can perform compiler pre-processing instead of writing code)
-
APL
(alternative)
-
You hear a gunshot and there's a hole in your foot, but you don't
remember enough linear algebra to understand what happened.
or
@#&^$%&%^ foot
-
Pascal
(alternative)
-
Same as Modula-2 except that the bullet is not the right type for
the gun and your hand is blown off.
-
Snobol
(alternative)
-
If you succeed, shoot yourself in the left foot. If you fail, shoot
yourself in the right foot.
-
Prolog
(alternative)
-
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.
or
No.
-
COMAL
-
You attempt to shoot yourself in the foot with a water pistol, but
the bore is clogged, and the pressure build-up blows apart both the
pistol and your hand.
or
draw_pistol
aim_at_foot(left)
pull_trigger
hop(swearing)
-
Ada (alternatives)
-
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.
-
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 (alternative)
-
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.
-
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.
-
Postscript
-
foot bullets 6 locate loadgun aim gun shoot showpage
or
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 (alternatives)
-
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.
-
BCPL
-
You shoot yourself somewhere in the leg -- you can't get any finer
resolution than that.
-
Concurrent Euclid
-
You shoot yourself in somebody else's foot.
-
Motif
-
You spend days writing a UIL description of your foot, the
trajectory, the bullet and the intricate scrollwork on the ivory
handles of the gun. When you finally get around to pulling the
trigger, the gun jams.
-
Powerbuilder
-
While attempting to load the gun you discover that the LoadGun
system function is buggy; as a work around you tape the bullet to the
outside of the gun and unsuccessfully attempt to fire it with a nail.
In frustration you club your foot with the butt of the gun and explain
to your client that this approximates the functionality of shooting
yourself in the foot and that the next version of Powerbuilder will
fix it.
-
Standard ML
-
By the time you get your code to typecheck, you're using a shoot to
foot yourself in the gun.
-
MUMPS
-
You shoot 583149 AK-47 teflon-tipped, hollow-point, armour-piercing
bullets into even-numbered toes on odd-numbered feet of everyone in
the building -- with one line of code. Three weeks later you shoot
yourself in the head rather than try to modify that line.
-
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.
-
Scala
-
You spend weeks figuring out how to make a gun,
then one day it all clicks and you end up
shooting yourself in the foot recursively.
-
Python
-
Unable to figure out how to shoot yourself in the foot,
you copy/paste some code from the internet to shoot yourself in the head.
It shoots yourself in the foot. You have no idea why.
FOOTOS
-- A Guide to Modern Operating Systems
extended the joke
to operating systems, with Unix playing the role of C, of course. And this
too has grown...
-
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
%
-
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.
-
or
-
You shoot yourself in the head just thinking about it.
-
DOS 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.
-
VMS
-
[by
Jon
Konrath
]
$ 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
or
%SYS-F-FTSHT, foot shot
(fifty lines of traceback omitted)
-
Apple System 7
-
Double click the gun icon and a window giving a selection for guns,
target areas, plus balloon help with medical remedies, and assorted
sound effects. Click "shoot" button and a small bomb appears
with note "Error of Type 1 has occurred."
-
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.
-
CP/M
-
I remember when shooting yourself in the foot with a BB gun was a
big deal.
-
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.
And it has extended even further, to databases, and other
computer-related things...
-
Access
-
You try to point the gun at your foot, but it shoots holes in all
your Borland distribution diskettes instead.
-
Paradox
-
Not only can you shoot yourself in the foot, your users can too.
-
dBase (alternative)
-
You buy a gun. Bullets are only available from another company
and are promised to work so you buy them. Then you find out that the
next version of the gun is the one scheduled to actually shoot
bullets.
-
SQL
[by
John
Wright
]
-
Insert into Foot
Select Bullet
From Gun.Hand
Where Chamber = 'LOADED'
And Trigger = 'PULLED'
-
Oracle
-
The menus for coding
foot_shooting
have not been
implemented yet and you can't do foot shooting in SQL.
-
Revelation
[an implementation of the PICK Operating System]
-
You'll be able to shoot yourself in the foot just as soon as you
figure out what all these bullets are for.
-
FlagShip
-
Starting at the top of your head, you aim the gun at yourself
repeatedly until, half an hour later, the gun is finally pointing at
your foot and you pull the trigger. A new foot with a hole in it
appears but you can't work out how to get rid of the old one and your
gun doesn't work anymore.
-
FidoNet
-
You put your foot in your mouth, then echo it internationally.
-
PicoSpan
[a UNIX-based computer conferencing system]
-
You can't shoot yourself in the foot because you're not a host.
or
(host variation)
Whenever you shoot yourself in the foot, someone opens a topic in
policy about it.
-
Internet
-
You put your foot in your mouth, shoot it, then spam the bullet so
that everybody gets shot in the foot.
-
troff
-
rmtroff -ms -Hdrwp | lpr -Pwp2 & .*place bullet in footer
.B .NR FT +3i .in 4 .bu Shoot! .br .sp .in -4 .br .bp NR HD -2i .*
-
Genetic Algorithms
-
You create 10,000 strings describing the best way to shoot yourself
in the foot. By the time the program produces the optimal solution,
humans have evolved wings and the problem is moot.
-
CSP
(Communicating Sequential Processes)
-
You only fail to shoot everything that isn't your foot.
In July 2002 a correspondent emailed me the following story, with
contributions to the list
Last summer, I
found myself analyzing the plague of problems afflicting a sorely
neglected MS-SQL Server implementation. This process was made more
interesting by the fact that this analysis was being performed with an
eye toward moving the database over to Sybase. My previous database
experiences involved Oracle and Ingres, so I found myself learning about
both platforms at the same time.
In short order I uncovered the fact of their shared heritage (early
versions of MS-SQL Server were licensed from Sybase). This became a
strong platform for understanding the differences between these two
systems. I found it particularly fascinating that MS made it
blindingly easy to get the system up and running, but in doing so it
pretty much assured that you would shoot yourself in the foot by
allowing the user to avoid performing basic tasks that are essential
to good database design. Sybase, in contrast, makes it stupefyingly
difficult to get a system up and running, thereby reducing your
likelihood of foot shooting (by making it nearly impossible to shoot
anything), but the Sybase documentation is so abysmal that you're also
more or less assured of soundly shooting yourself for the difficulty
of finding the information that will prevent this from among the
confusing and circuitous cross references. This melange of
similarities and contrasts inspired me to author the following
vignettes. (Keep in mind, we were specifically trying to
avoid
any foot shooting, so these bits each end with advice toward that
end.)
-
MS-SQL Server
-
MS-SQL Servers gun comes pre-loaded with an unlimited supply
of Teflon coated bullets, and it only has two discernible features:
the muzzle and the trigger. If that wasn't enough, MS-SQL Server also
puts the gun in your hand, applies local anesthetic to the skin of
your forefinger and stitches it to the gun's trigger. Meanwhile,
another process has set up a spinal block to numb your lower body. It
will then proceeded to surgically remove your foot, cryogenically
freeze it for preservation, and attach it to the muzzle of the gun so
that no matter where you aim, you will shoot your foot. In order to
avoid shooting yourself in the foot, you need to unstitch your trigger
finger, remove your foot from the muzzle of the gun, and have it
surgically reattached. Then you probably want to get some crutches and
go out to buy a book on SQL Server Performance Tuning.
-
Sybase
-
Sybase's gun requires assembly, and you need to go out and purchase
your own clip and bullets to load the gun. Assembly is complicated by
the fact that Sybase has hidden the gun behind a big stack of
reference manuals, but it hasn't told you where that stack is. While
you were off finding the gun, assembling it, buying bullets, etc.,
Sybase was also busy surgically removing your foot and cryogenically
freezing it for preservation. Instead of attaching it to the muzzle of
the gun, though, it packed your foot on dry ice and sent it UPS-Ground
to an unnamed hookah bar somewhere in the middle east. In order to
shoot your foot, you must modify your gun with a GPS system for
targeting and hire some guy named "Indy" to find the hookah
bar and wire the coordinates back to you. By this time, you've
probably become so daunted at the tasks stand between you and shooting
your foot that you hire a guy who's read all the books on Sybase to
help you shoot your foot. If you're lucky, he'll be smart enough both
to find your foot and to stop you from shooting it.
In May 2003 Kristof Elst emailed me his contribution to the list
I'm a highly
frustrated Magic Software developer who would rather be back to coding
tsql. So I made my own version.
-
Magic software
-
You spend 1 week looking up the correct syntax for GUN. When you
find it, you realise that GUN will not let you shoot in your own foot.
It will allow you to shoot almost anything but your foot. You then
decide to build your own gun. You can't use the standard barrel since
this will only allow for standard bullets, which will not fire if the
barrel is pointed at your foot. After four weeks, you have created
your own custom gun. It blows up in your hand without warning, because
you failed to initialise the safety catch and it doesn't know whether
the initial state is "0", 0, NULL, "ZERO", 0.0,
0,0, "0.0", or "0,00". You fix the problem with
your remaining hand by nesting 12 safety catches, and then decide to
build the gun without safety catch. You then shoot the management and
retire to a happy life where you code in languages that will allow you
to shoot your foot in under 10 days.