What does foo mean?
Categories:
Understanding 'foo' and 'bar' in Programming

Explore the origins, common uses, and significance of 'foo' and 'bar' as metasyntactic variables in programming and technical documentation.
In the world of programming, you've likely encountered the terms foo
and bar
in code examples, tutorials, and discussions. These aren't keywords with special meaning to compilers or interpreters; rather, they are classic examples of metasyntactic variables. This article delves into what these terms mean, their historical context, and why they are so prevalent in the developer community.
What are Metasyntactic Variables?
A metasyntactic variable is a placeholder name used in examples, much like 'John Doe' or 'Jane Smith' are used for people in general examples. They are intentionally meaningless in the context of the problem being solved, serving only to represent a generic entity. This allows developers to focus on the logic or structure being demonstrated without getting sidetracked by the specific meaning of the variable names themselves. foo
and bar
are the most common pair, often followed by baz
, qux
, and quux
.
flowchart TD A[Developer Needs Example] --> B{Choose Variable Names?} B -->|Meaningful| C[Risk of Distraction] B -->|Metasyntactic| D[Focus on Logic] D --> E["Use 'foo', 'bar', 'baz'"] C --> F[Example Becomes Confusing] E --> G[Clear, Concise Example]
Decision flow for choosing variable names in examples
The Origins of 'foo' and 'bar'
The exact origin of foo
is somewhat debated, but it is widely believed to stem from the acronym FUBAR (F***ed Up Beyond All Recognition/Repair), a military slang term from World War II. The term foo
itself appeared in early programming contexts, notably in the Tech Model Railroad Club (TMRC) dictionary at MIT in the 1960s, which also influenced the Jargon File (now part of the Hacker's Dictionary). bar
naturally followed as a common pairing, much like 'x' and 'y' in mathematics. Their widespread adoption is a testament to their utility and the communal nature of programming culture.
foo
and bar
are excellent for examples, avoid using them in production code. Meaningful variable names are crucial for code readability and maintainability in real-world applications.Common Usage in Code Examples
foo
and bar
are ubiquitous across various programming languages and paradigms. They can represent anything from function names, variable names, class names, or even entire modules. Their purpose is always to illustrate a concept without implying any specific domain knowledge.
public class Foo {
private String bar;
public Foo(String bar) {
this.bar = bar;
}
public void doSomething() {
System.out.println("Foo doing something with: " + bar);
}
public static void main(String[] args) {
Foo myFoo = new Foo("Hello Bar");
myFoo.doSomething();
}
}
A simple Java class demonstrating 'Foo' and 'bar' as placeholders.
def foo_function(bar_argument):
print(f"Inside foo_function with argument: {bar_argument}")
class BarClass:
def __init__(self, baz_value):
self.baz = baz_value
def get_baz(self):
return self.baz
foo_function("example_value")
my_bar = BarClass("another_value")
print(my_bar.get_baz())
Python example showing 'foo', 'bar', and 'baz' in functions and classes.
foo
and bar
are not exclusive to Java; they are used across nearly all programming languages, including Python, JavaScript, C++, and many others.