Foobar: Difference between revisions
mNo edit summary |
sultan |
||
Line 1: | Line 1: | ||
{{distinguish|FUBAR}} |
{{distinguish|FUBAR}} |
||
{{otheruses}} |
{{otheruses|Green}} |
||
The terms '''''foobar''''', '''''foo''''', '''''bar''''', and '''''baz''''' are common [[placeholder name]]s (also referred to as [[metasyntactic variable]]s) used in [[computer programming]] or computer-related documentation.<ref name="rfc3092" /> They are commonly used to represent unknown values, typically when describing a scenario where the purpose of the unknown values is understood, but their precise values are arbitrary and unimportant. The terms can be used to represent any part of a complicated system or idea, including the [[data]], [[variable (programming)|variable]]s, [[Function (computer science)|functions]], and [[command (computing)|command]]s. The words themselves have no meaning in this usage, and are merely logical representations, much like the letters ''x'' and ''y'' are used in [[algebra]]. ''Foobar'' is often used alone; ''foo'', ''bar'', and ''baz'' are usually used in that order, when multiple entities are needed. |
The terms '''''foobar''''', '''''foo''''', '''''bar''''', and '''''baz''''' are common [[placeholder name]]s (also referred to as [[metasyntactic variable]]s) used in [[computer programming]] or computer-related documentation.<ref name="rfc3092" /> They are commonly used to represent unknown values, typically when describing a scenario where the purpose of the unknown values is understood, but their precise values are arbitrary and unimportant. The terms can be used to represent any part of a complicated system or idea, including the [[data]], [[variable (programming)|variable]]s, [[Function (computer science)|functions]], and [[command (computing)|command]]s. The words themselves have no meaning in this usage, and are merely logical representations, much like the letters ''x'' and ''y'' are used in [[algebra]]. ''Foobar'' is often used alone; ''foo'', ''bar'', and ''baz'' are usually used in that order, when multiple entities are needed. |
||
Revision as of 09:10, 8 January 2010
The terms foobar, foo, bar, and baz are common placeholder names (also referred to as metasyntactic variables) used in computer programming or computer-related documentation.[1] They are commonly used to represent unknown values, typically when describing a scenario where the purpose of the unknown values is understood, but their precise values are arbitrary and unimportant. The terms can be used to represent any part of a complicated system or idea, including the data, variables, functions, and commands. The words themselves have no meaning in this usage, and are merely logical representations, much like the letters x and y are used in algebra. Foobar is often used alone; foo, bar, and baz are usually used in that order, when multiple entities are needed.
It is used extensively in computer programming examples (sometimes expressed as "for once only") and pseudocode. Eric S. Raymond has called it an "important hackerism" alongside kludge and cruft.[2]
History
The origins of the terms are not known with certainty, and several anecdotal theories have been advanced to identify them. Foobar may derive from the military acronym FUBAR, or it may have gained popularity due to the fact that it is pronounced the same. In this meaning it also can derive from the German word furchtbar, which means awful and terrible and described the circumstances of the Second World War. American soldiers in Germany had problems with the pronunciation of the German word and used it in a simplified form.
FOO is an abbreviation of Forward Observation Officer, a British Army term in use as early as the First World War.[3] The etymology of foo is explored in the Internet Engineering Task Force (IETF) Request for Comments 3092, which notes usage of foo in 1930s cartoons including The Daffy Duck and comic strips, especially Smokey Stover and Pogo. From there the term migrated into military slang, where it merged with FUBAR.[1]
Other origins
The terms may have developed in electronics, where a digital signal which is considered "on" with a negative or zero-voltage condition, is identified with a horizontal bar over the signal label; the notation for an inverted signal foo would then be pronounced "foo bar".[citation needed]
The use of foo in hacker and eventually in programming context may have begun in MIT's Tech Model Railroad Club (TMRC). In the complex model system there were scram switches located at numerous places around the room that could be thrown if something undesirable was about to occur, such as a train going full-bore at an obstruction. Another feature of the system was a digital clock on the dispatch board. When someone hit a scram switch the clock stopped and the display was replaced with the word "FOO"; at TMRC the scram switches are therefore called "Foo switches". Because of this an entry in the 1959 Dictionary of the TMRC Language went something like this: "FOO: The first syllable of the misquoted sacred chant phrase 'foo mane padme hum.' Our first obligation is to keep the foo counters turning."[4]
The term foobar was propagated through computer science circles in the 1960s and early 1970s by system manuals from Digital Equipment Corporation.[citation needed]
Foobar was used as a variable name in the Fortran code of Colossal Cave Adventure (1977 Crowther and Woods version). The variable FOOBAR was used to contain the player's progress in saying the magic phrase "Fee Fie Foe Foo".
Usage in code
The terms are very often used in programming examples, much like the Hello World program is commonly used as an introduction. For example, foo and bar might be used to illustrate a simple string concatenation:
// C/C++ code
#include <stdio.h>
int main()
{
char Foo[] = "Hello, ";
char Bar[] = "World!";
printf("%s%s\n", Foo, Bar);
return 0;
}
Usage in culture
$foo is the name of a Perl programming magazine,[5] and Foo Camp is an annual hacker convention (the name is also a backronym for Friends of O'Reilly, the event's sponsor).
During the United States v. Microsoft trial, some evidence was presented that Microsoft had tried to use the Web Services Interoperability organization as a means to stifle competition, including e-mails in which top executives including Bill Gates referred to the WS-I using the codename "foo".[6]
See also
- BarCamp, an international network of user generated conferences
- John Doe, a placeholder name for a male party, in a legal action, case or discussion, whose true identity is either unknown or must be withheld for legal reasons
- Foo Camp, an annual hacker event hosted by publisher O'Reilly Media
- FUBAR, a homophonous acronym
- Lorem ipsum, the name given to commonly used placeholder text
- Placeholder name
References
- ^ a b D. Eastlake III; et al. (2001). "Etymology of "Foo"". Internet Engineering Task Force. Retrieved 2007-11-05.
{{cite web}}
: Explicit use of et al. in:|author=
(help) - ^ Eric S. Raymond (1996). The New Hacker's Dictionary. MIT Press. ISBN 0262680920.
- ^ Extract from War Diary of 118th Siege Battery WO95/322
- ^ "Computer Dictionary Online".
- ^ Foo-magazin.de Template:De icon
- ^ Microsoft ploy to block Sun exposed
External links
- RFC3092 Etymology of "Foo"
- The Free Online Dictionary of Computing entry on "foo"
- The Jargon File entry on "foobar"
- Foobar2000 is an advanced audio player for the Windows platform
- RFC 1639 – FTP Operation Over Big Address Records (FOOBAR)