Revision as of 14:55, 11 February 2004 view sourceAncheta Wis (talk | contribs)Extended confirmed users39,286 edits distinguish hard-coding from soft-coding.← Previous edit | Revision as of 00:17, 19 February 2004 view source 217.225.24.164 (talk)No edit summaryNext edit → | ||
Line 70: | Line 70: | ||
---- | ---- | ||
In the ], which is the same for all living |
In the ], which is the same for all living beings, codes specify which amino acids to use for creating proteins. | ||
---- | ---- |
Revision as of 00:17, 19 February 2004
In communications, a code is a rule for converting a piece of information (for example,
a letter, word, or phrase) into another object or action, not necessarily of the same sort.
One reason for this 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, 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.
Cryptography: codes versus ciphers
Codes have long been used in cryptography. The transformation is used to disguise the content or meaning of a message, preventing those not in on the secret from understanding what is actually transmitted. The usual method is to use a "codebook" with a list of common phrases/words matched with different phrases/words, so that people without the codebook who might intercept the message get nothing but a message referring to something else altogether, or alternatively, complete gibberish. A cable code would be one such.
The term code is very often confused with the term cipher.
These can be distinguished best by the scope of the transformation. A code is a set of rules to represent meaningful information in another way - this doesn't necessarily include secrecy. When the information should not be known to somebody else but the intended recipient, there has to be some secret knowledge not known to anybody else to decode it. A code which requires such secret knowledge (or is this secret knowledge) is a cryptographic code, and the secret information and rules to use it is a codebook.
A cipher by contrast, does not work at the level of meaningful information. While a code might transform "attack" into "FRGPL" or "mincemeat pie", a cipher transforms elements below the semantic level, ie, below the level of meaning. The "a" in attack might be converted to "Q", the first "t" to "f", the second "t" to "3", and so on. Cyphers are more convenient than codes in some situations, there being no need for a codebook. Codes on the other hand, were believed to be more secure than cyphers, there being (if one's codebook constructor did a good job) no 'pattern of transformation' which can be discovered. With the advent of automatic processors (ie, in recent times the electronic computer), cyphers have come to dominate 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, pronouncability, 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 preceeding for espionage codes, ... Codebooks and codebook publishers proliferated, inlcuding 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 WWII, 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 later 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 Robert Bemer).
Codes to detect or correct errors (eg, 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, Golay, Goppa, and Galagher codes.
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".
In computer programming, the word code refers to instructions to a computer in a programming language. In this usage, the noun "code" typically stands for source code, and the verb "to code" means to write source code, to program. This usage may have originated when the first symbolic languages were developed and were punched onto cards as "codes".
Engineers often use the word "code" to mean a single program. They might say "I wrote a code" or "I have two codes". No software engineer or computer scientist would say that. They would say "I wrote some code" or "I have two programs". Since English allows virtually any word to be used as a verb, a programmer, or coder might also say I coded a program; but, since a code can stand for multiple concepts, that coder might say I hard-coded it right into the program, as opposed to the metaprogramming model, which might allow multiple re-uses of the same piece of code to accomplish multiple goals. Thus, the coder might instead soft-code a concept, which ensures that it will have a longer lifespan than a hard-coded concept.
In linguistics a code is often just a mere synonym for a variety of a language (a dialect, sociolect). A sociolect is the language of a specific social group. The term code has some technical connotation.
In the genetic code, which is the same for all living beings, codes specify which amino acids to use for creating proteins.
A code is also a rule or a set of rules, such as code of honor, code of laws, or dress code. See civil code, codification.
This word has acquired a large number of subtly, and grossly, incompatible meanings, particularly in cryptographic contexts. Use it with care.