- For other senses of the word "code", see code (disambiguation).
In communications, a code is a rule for converting a piece of information (for example, a letter, word, or phrase) into another form or representation, not necessarily of the same sort. In communications and information processing, encoding is the process by which a source (object) performs this conversion of information into data, which is then sent to a receiver (observer), such as a data processing system. Decoding is the reverse process of converting data, which has been sent by a source, into information understandable by a receiver. A codec is an implementation of that rule (or algorithm) for coding and decoding, for example MP3, which may be a hardware implementation or a software implementation , and which may include compression.
One reason for coding is to enable communication in places where ordinary spoken or written language is difficult or impossible. For example, a cable code replaces words (eg, ship or invoice) into shorter words, allowing the same information to be sent with fewer characters, more quickly, and most important, less expensively. Another example is the use of semaphore flags, where the configuration of flags held by a signaller or the arms of a semaphore tower encodes parts of the message, typically individual letters and numbers. Another person standing a great distance away can interpret the flags and reproduce the words sent.
In the history of cryptography, codes were once common for ensuring the confidentiality of communications, although ciphers are now used instead. See code (cryptography).
Codes in communication used for brevity
Code can be used for brevity. When telegraph messages were the state of the art in rapid long distance communication, elaborate commercial codes which encoded complete phrases into single words (commonly five-letter groups) were developed, so that telegraphers became conversant with such "words" as BYOXO ("Are you trying to weasel out of our deal?"), LIOUY ("Why do you not answer my question?"), BMULD ("You're a skunk!"), or AYYLU ("Not clearly coded, repeat more clearly."). Code words were chosen for various reasons: length, pronounceability, etc. Meanings were chosen to fit perceived needs: commercial negotiations, military terms for military codes, diplomatic terms for diplomatic codes, any and all of the preceding for espionage codes, ... Codebooks and codebook publishers proliferated, including one run as a front for the American Black Chamber run by Herbert Yardley between WWI and WWII. The purpose of most of these codes was to save on cable costs.
In the computer era since World War II, there are also "codes" for data compression, e.g. Huffman coding, which uses short codes for frequent symbols and longer codes for seldom used symbols - the same principle is used in the Morse code. It and the Baudot code which uses the same length representation for all symbols and characters, both go back to telegraph days. The latter was a primary ancestor of the ASCII character code widely used in computers.
An example: the ASCII code
Probably the most widely known data communications code (aka character representation) in use today is ASCII. In one or another (somewhat compatible) version, it is used by nearly all personal computers, terminals, printers, and other communication equipment. Its original version represents 128 characters with seven-bit binary numbers—that is, as a string of seven 1s and 0s. In ASCII a lowercase "a" is always 1100001, an uppercase "A" always 1000001, and so on. Extensions to ASCII have included 8-bit characters (for letters of European languages and such things as card suit symbols), and in fullest flowering have included glyphs from essentially all of the world's writing systems (see Unicode and Bob Bemer).
Codes to detect or correct errors (e.g., in storage or transmission)
Codes may also be used to represent data in a way more resistant to errors in transmission or storage. Such a "code" is called an error-correcting code, and works by including carefully crafted redundancy with the stored (or transmitted) data. Examples include Hamming codes, Reed-Solomon, Reed-Muller, Bose-Chaudhuri-Hochquenghem, Turbo, Golay, Goppa, and Gallager Low-density parity-check codes space-time code. Error detecting codes are optimised to detect burst errors, and random errors.
Codes and acronyms
Acronyms and abbreviations can be considered codes, and in a sense all languages and writing systems are codes for human thought. Occasionally a code word achieves an independent existence (and meaning) while the original equivalent phrase is forgotten or at least no longer has the precise meaning attributed to the code word. For example, the number "86" was once used as a code word in restaurants meaning "We're out of the requested item". It is now commonly used to mean the removal or destruction of something. '30' was widely used in journalism to mean "end of story", and it is sometimes used in other contexts to signify "the end".
List of coding terms