IRP (Internet Relay Programming) is an esoteric programming language designed by Gregor Richards that uses a cooperative programming approach. There are several variations, but the most common is IRP#IRP.
To program in IRP#IRP, join the #IRP channel on irc.freenode.net, then simply write, in plain English, in polite command form, what you intend for your program to do. If other IRP programmers (knowingly or not!) are on the channel, and are in a good mood, you should get the appropriate response.
Make sure you ask politely and thank your fellow IRP programmers for their assistance!
IRP is probably not Turing-complete due to the limited faculty of the human brain (unless they're allowed to keep notes on paper -- and even then, let us give some thought of the stress that computing Ack(m,n) for large m would put on the forestry industry.) However, it can quite trivially be proven to be a Bounded-storage machine. The proof itself is left as an exercise to the reader.
 Hello, World!
<GregorR> Please say "Hello, World!" <jix> Hello, World!
 Fibonacci sequence
<GregorR> Please, someone write the first 16 numbers of the Fibonacci Sequence. <calamari> 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
<GregorR> Please write this exact line to this channel. <jix> Please write this exact line to this channel.
Due to IRP's nature, any quine is potentially a severe DDOS worm.
 Safe quine
<linde> Please write this exact line unless it has been written more than once before. <boom> Please write this exact line unless it has been written more than once before.
Note that this quine's behaviour is at present undefined, as it has now been written more than once before.
 Iterating quine
<CakeProphet> Could someone please ask someone to repeat this request? <pikhq> Could someone please repeat the previous request? <RodgerTheGreat> Could someone please ask someone to repeat this request?
The only real problem with a quine in this format is that it could easily lead to infinite recursion, until the interpreters get bored. Another potential problem is THE INTERPRETER BEING A NOOB AND PUTTING QUOTATIONS AROUND THE ORIGINAL REQUEST... however this can be prevented by changing the source to
<CakeProphet> Could someone please ask someone to repeat this request WITHOUT BEING A NOOB AND PUTTING QUOTATION MARKS AROUND IT <RodgerTheGreat> ERROR 8: DON'T_BE_A_DOUCHE_TO_YOUR_INTERPRETER ERROR
 99 bottles
Due to a bug in the IRP interpreter, it is very difficult to produce a working implementation of the 99 bottles of beer program in this language. Shown below is a typical result of this bug.
<GregorR> Please, write the lyrics to the song 99 Bottles of Beer on the Wall. <memonic> go to hell
 Lightbulb change
Note that this tends to be inefficient; timing information is added here.
[16:04:45] <ais523> Would someone here please change a lightbulb? [16:13:51] <MichaelRaskin_> #Done [16:14:07] <MichaelRaskin_> #No observable effects for you, though
< Stephen> Could someone please provide a link to an example of the usefulness of this system? < Shrdlu> http://esoteric.voxelperfect.net/wiki/IRP#Documentation
Implementations in other programming languages such as C, tcl, or perl are easy to come by, but tend to be quite flawed, implementing only a very incomplete subset of the language and sometimes requiring awkward syntax in statements. A self-hosted implementation in IRP does not exist because if it did it would be quite annoying.
 See also
- Cfluviurrh -- while it is likely that emotions will be experienced during the execution of an IRP program, this is an implementation detail and there is nothing saying you won't join #IRP on the very day it happens to be staffed entirely by psychopaths. In constrast, Cfluviurrh specifies which emotions must be felt during program execution, and how strongly.