Plug and Play is a term used in the computer field to describe a computer's ability to have new devices, normally peripherals, added to it without having to restart the computer. There are a number of terms or variations that describe similar abilities, including PnP, and hot swapping. The term Plug and Play is most associated with Microsoft, who started using it in reference to their Windows 95 product. Many other operating systems had already supported such features for some time, but all of them soon used the same terminology.
PnP requires support both in hardware and in software. The hardware typically requires some sort of ID code that it can supply, in order for the computer software to correctly identify it. Apple Desktop Bus (ADB) used a simple four-bit code for this, but most systems use longer codes of several types in order to deliver more information, including names and serial numbers.
This ID code system was not integrated into the early Industry Standard Architecture (ISA) hardware common in PCs when Plug and Play was first introduced. ISA Plug and Play caused some of the greatest difficulties that made PnP initially very unreliable. This led to the derisive term "Plug and Pray", since I/O addresses and IRQ lines often set incorrectly in the early days. Later computer buses like PCI (which was becoming the industry standard at that time) integrated this functionality.
Another ability needed in the hardware is the ability of the computer bus in question to recognize changes to its configuration when devices are added or removed. In the case of ADB, the hardware did not have this ability, so the system was unable to support PnP. More modern systems, notably USB and FireWire, deliberately designed such support into the bus.
Finally, the operating system of the computer needs to be able to handle these changes. Typically this means looking for interrupts from the bus saying that the configuration has changed, and then reading the information from the bus to locate what happened. Older bus designs often required the entire system to be read in order to locate these changes, which can be time consuming for lots of devices. More modern designs use some sort of system to either reduce or eliminate this "hunt"; for example, USB uses a hub system for this purpose (and others).
When the change is located, the OS then examines the information in the device to figure out what it is. It then has to load up the appropriate device drivers in order to make it work. In the past this was an all-or-nothing affair, but modern operating systems often include the ability to find the proper driver on the Internet and install it automatically.