What is the history of the use of "foo" and "bar" in source code examples? (2012)
softwareengineering.stackexchange.com
softwareengineering.stackexchange.com
The military slang 'FUBAR' f'ed up beyond all recognition, was in the student and professor engineering vocabulary. The tradition became to use 'fu' and 'bar' as nominal function names, in same manner as X and Y were nominal variables.
Often in the MIT technical reports, one would see 'x = fu(y)' or 'y > bar(z)' and so forth. If you knew, you knew.
A few years later, perhaps with the welcome progress of more female faculty and students, textbooks changed the spelling, but not the pronunciation of the vulgar acronym 'fu' to 'foo'. Again, if you knew, you knew.
And now you all know.
I simply did not believe than an American GI ever said "nuts". So, I asked my dad (WW2 veteran). He said he briefly worked for the General, and asked him what he actually wrote. The General laughed, and replied "what do you think I wrote?"
F-U
The Stars&Stripes journalists changed it to "nuts" thinking the Americans couldn't handle the profanity.
https://history.stackexchange.com/questions/40063/what-did-g...
> including by the US Army official historian
An official US Army historian's job is to make the US Army look good.
As we are all painfully aware these days, the accounts of newspapers are rarely accurate, and often outright fabrications. Why would WW2 accounts be any different?
I doubt McAuliffe would want to besmirch his record after the war, had nothing to gain by contraindicating it, and would be content to let it stand.
My father was a carefully honest man, and was never known by me to lie. He held his tongue until after McAuliffe passed away. He also told me some family secrets after all involved had passed, and asked me to keep them to myself until after he died, which I did.
It never occurred to me to ask him to write down that story, and now it's too late.
I know my evidence is hearsay and inadmissible in court. You're free to draw your own conclusions.
P.S. I was once personally involved in an incident that made the local TV news. There was nothing political about it, but each of the three local news channels got essentially all the basic facts about it wrong. But that is the "record" of the event. It pretty much soured me on the veracity of news reports.
Is it all a grand conspiracy to protect the good name and reputation of McAuliffe?
I'll say no more.
> Is it all a grand conspiracy to protect the good name and reputation of McAuliffe?
A small conspiracy is not at all far-fetched. First off, it's an inconsequential thing. Secondly, if one of the three told the truth, then he'd be called a liar by the other two. Who needs that? If you're in the military, you don't get ahead by contradicting the narrative. (My dad found that out the hard way - he was punished more than once for not writing reports that fit the narrative.)
For a grand conspiracy, consider how long Biden's staff held out insisting that Biden was sharp as a tack and writing off contrary reports as disinformation.
The most compelling bit about my evidence is the frankly laughable idea that a GI would use the word "nuts".
If there is any takeaway here, it would be that historical accounts are always suspect. History is written by the victors, as they say.
Obfuscating the context is what F's it Up. Usually that's a problematic thing, but in the case of foo and bar, the F'ed Up version is maybe better.
Germans: "Wie Sie vermutlich wissen, sind Sie und Ihre Leute von allen Seiten umstellt. Wir gehen davon aus, dass Sie bereit sind, sich zu ergeben. Bitte bestätigen Sie dies."
MCAuliffe: "Dies Nutz"
Hmm, "fu"? The decades confound my memory, but I don't immediately recall seeing a "fu" there? Before the "foo" of AIM-127a[1] in 1967 and MIT-LCS-TR-032[2] in 1966, there's still a decade of AI Memos, and couple of years of TRs. DSpace finds at least some "fu"s... lots of ocr fragments. The AITR-220 '64 hit is ocr fragment. My search-fu tonight wasn't up to being exhaustive (spot checks were all fragments). And also, OCR could be missing older "fu"s. But I didn't quickly find a real "fu".
A foo-bar-baz-quux in MIT-LCS-TR-365[3] in 1986.
One can start on the CSAIL collections page[4] and explore.
[1] "FOO" in abstract of AIM-127a LISP Linkage Feature: Incorporating MIDAS into PDP-6 LISP https://dspace.mit.edu/handle/1721.1/6136 [2] "Thus if FOO has the definition (LAMBDA (X Y) [alpha]), and the user calls SYSTEM1 with NAME= FOO, ADVICE= [beta], WHERE= BEFORE" on page 43 of MIT-LCS-TR-032 Pilot: A Step Towards Man-Computer Symbiosis https://dspace.mit.edu/handle/1721.1/149354 [3] "if the back trace is: FOO [1] <- BAR (2] <- BAZ [3] <- QUUX [4]" on page 20 of ID World: An Environment for the Development of a Dataflow Programs Written in ID MIT-LCS-TR-365 https://dspace.mit.edu/handle/1721.1/149633 [4] https://dspace.mit.edu/handle/1721.1/5458
I was always told that fu became foo because it lined up nicely on screens and on paper, making the code easier to scan.
foo = 1
bar = 2
looks better than fu = 1
bar = 2An interesting example of the quirks we carry along with us, and the fact that the combination of behavior, intention, and interpretation can mix oddly.
Everywhere else gets the shit and hell and damn that I use in regular language. No slurs and no sexual words like Fuck. But that's just good manners.
Curse words are like salt and pepper for the language. They're not necessary, but often add just the right amount of extra spice.
And even if not, I haven't heard anyone describe the coinage 'fupa' as offensive.
(Neglecting that there weren't many women in CS in the 1960s. I don't even see that the word-fragment would have been considered offensive in civilian context, esp. to non-US speakers of English)
I think it was the opposite; they were infantilzed and sensitive, considered liable to faint or have a bout of hysteria. They were to be protected. Swearing might upset a woman.
Men had final authority over them in many cases. For example, often women couldn't get jobs without their husband's permission.
Women were sometimes the source of a sensitive, compassionate, nurting viewpoint, a balance to the man's roughness. She might appeal to him, but it was his decision.
This reads like aliens trying (and failing) to figure out why women act more like women than men do.
Everything else is speculation unless their is some evidence that women’s complaints were the driving factor of a change in policy rather than, say, the infantilization of women or a sexist expectation that women would take exception to it.
Honestly I don't know pussy.
Smug responses like this just means you don't actually have a point.
FUBAR ("fucked up beyond all recognition") was supposedly a military slang phrase.
And the popular comic strip Smoky Stover starting in the 1930's used the word "Foo" wrt a firefighting character perhaps giving that spelling more currency.
this is the Foomobile from that comic https://duckduckgo.com/?t=ffab&q=Foomobile&iax=images&ia=ima...
Smokey Stover started the meme of substituting 'foo' into words. 1930s german language classes turned furchtbar (frightful) into 'foo-bar'. The US military acronymized it into FUBAR. Apparently MIT adopted fu() and bar() as algebra placeholders.
I'm partial to the 1938 song WHAT THIS COUNTRY NEEDS IS FOO - https://m.youtube.com/watch?v=W2pljKyCgwc
It might be good to know that you linked to the version which one person had outsized influence of, and should probably not be used to write history from. Except history on early Internet drama, perhaps.
--
New version has many more terms in the lexicon, but it's good to see the "canonical" terms although the foreword exhibits its own strong bias. Original is missing some of my favorites from the so-called rogue fork like "bogo sort", "magic smoke", and "big red switch"
--
Link to original
I'm trying to maintain that the nerds of yore and the bros* who invaded in the 2010s are different groups -- in which case "old-school nerd bro" would be a contradiction in terms -- but alas "bro" has simply come to mean "male", and, to the English majors writing the newspaper articles, "they all look the same". So maybe I need to give up.
* etymology: "tech bro", in analogy with "finance bro", which originated because fraternity brothers from top schools used to go into finance, but then migrated into Tech around '08. Associated stereotypically with developed pectorals and polo shirts with popped collars. Close to the "Chad" archetype, but with some light granola/yoga overtones.
the early "nerd-bro" practically required the distinction as a form of identity reclamation in a culture that disparaged their puny interests in computing. We should celebrate that that particular shield is no longer needed, and thus that gatekeeping is no longer needed for ego-survival, either.
These days it seems weird, even mildly culty, to make definitive and specific statements about “what hackers are like”. There are millions of us all over the world. Many of us barely have a spoken language in common, let alone share a sense of humor or cultural values.
And it includes an explanation of what is wrong with ESR's version. But well, lets reiterate that: ESR is this weird kind of quasi-libertarian ego-maniac who occasionally produces something marginally useful and then oversells how that thing is part of the critical internet infrastructure or something like that.
I wonder when it was.
I personally, and professionally, think it’s a horrible convention.
trait Foo {
fn frobulate()
}
struct Bar;
struct Baz;
impl Foo for Bar {
fn frobulate() {
// TODO
}
}
fn qux<T: Foo>(...)
It's ends up being too abstract. A more concrete example would help clarify the relationship of the different elements.Reading about "FUBAR" makes it even worse.
Here's a variant:
https://developer.arm.com/documentation/dui0493/i/CHDFAGEE
> foo\bar\baz\gazonk\quux\bop
Some Erlang reference:
https://erlang.org/pipermail/erlang-questions/2009-January/0...
> 43> lists:keysearch(foo, 1, [3.14, {foo,bar} | gazonk]). > {value,{foo,bar}}
The GNU Emacs manual:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Li...
> (setq foo '(bar zot > gazonk))
https://www.epicroadtrips.us/2003/summer/nola/nola_offsite/F...:
> Gazonk is often used as an alternative for baz or as a fourth metasyntactic variable. Some early versions of the popular editor Emacs used gazonk.foo as a default filename.
That doesn't look like it's a potentially Swedish word.
It does resemble an English one: https://en.wiktionary.org/wiki/gazongas
(For whatever reason, wiktionary insists on defining "gazongas" only as "the plural form of 'gazonga'", but the word "gazonga" cannot be used at all; much as with "scissors" or "pants", only the plural form exists.)
*Where you heard this?
There's no risk of being misunderstood, but that doesn't mean it's possible to phrase a question in English this way.
What would you understand if someone asked you for "the scissor"?
Foo Bar came from model trains at MIT - https://news.ycombinator.com/item?id=41069963 - July 2024 (2 comments)
The Origin of Foo and Bar - https://news.ycombinator.com/item?id=14030938 - April 2017 (1 comment)
Kind of related but not really:
foo@bar.com - https://news.ycombinator.com/item?id=24605949 - Sept 2020 (281 comments)
The Foo at bar.com - https://news.ycombinator.com/item?id=10108287 - Aug 2015 (29 comments)
foo@bar.com is a real email address - https://news.ycombinator.com/item?id=3263021 - Nov 2011 (91 comments)
The naming convention is known as the NATO phonetic alphabet: https://en.wikipedia.org/wiki/NATO_phonetic_alphabet
Able was an air burst over Bikini (thus the name of the swimsuit).
Baker, the water burst, was the world's first atomic disaster; as a result of Baker, the third scheduled test Charlie was cancelled. My father died years later of colon cancer, perhaps not unrelated to contaminated air and water at the Eniwetok base afterwards.
FUBAR indeed.
Bit offtopic: As well as general use, a lot of thesed are used to classify Soviet/Russien submarines from a NATO point of use.
Even more off topic:This is quite interesting (to me at last) in that NATO has used prefix schemes for bombers, fighters etc. (for example Bear (bomber), Fishbed (fighter)) rather than their makers names. As far as I know, in WW2 the Germans always referred to RAF fighters by their RAF names.
One character variable names for temp or iterator values are everywhere in programming. But I've never ever encountered one spelled out as a full transcriptions of the NATO phonetic alphabet like alfa, bravo, charlie. Exception is alpha for probability/statistics.
Not all. Military definitely favors NATO, but there are other phonetic alphabets in use. In particular, at least in the US, fire/ems personnel (and sometimes also law enforcement) use alternatives. The one that goes Adam, Boy (or Baker), Charlie, David, Edward, Frank, ... is still widely used.
I've also known agencies to use a mix, like Adam, Baker, Charlie, Delta, ... (a law enforcement agency that I dispatched for back in the 1990's used this version).
Source: was a firefighter and 911 dispatcher in a previous life and still spend a lot of time monitoring fire/ems channels locally just to stay connected to that world.
I don't tend to use single-letter variable names outside of the standard `for(;;)` syntax, but if I did, I don't think I'd replace them in this way.
There’s a few steps there missing.
But on the other hand, a lot of posters in TFA writes “if you knew you knew”, and maybe most people who spread this didn’t know. I mean, I’ve used it without a second thought plenty of times just because.
It might be as simple as an ex military professor writing it and students picking it up as “this is how we talk” with basically no one knowing what they are talking about.
foo/bar/baz/bing/bang/bong
Once in a while I’ll throw “biz” in after baz. I suspect the bar/baz pairing felt like alliteration to me and I extended it.
I’ve never used it in production code of course, but I have in tests. For string interpolation or parsing tests you tend to need a lot of variables or values and you don’t care what the variable means you just want the right ones placed in or extracted from the correct spots.
In particular if the rest of the data looks legit and the bits sunstituted looks like gibberish, I find it makes the red tests’ failure message quicker to read.
Reprint cover of "Ala Ka Zot!":
https://m.media-amazon.com/images/I/61hytBWmsqL._SL1000_.jpg
I mean everyone knows using descriptive variable names is good practice, but then in a coding tutorial it is somehow fine to use foo, bar, a, b, c? That makes things clearer for someone who understands all the types and the syntax, and wants to see the structure algorithm more clearly. It hurts someone trying to learn the language.
Yea but the truth is a huge of audience of people who are not super familiar with the syntax of a languague will read tutorials describing how to build stuff in that language hoping they can piece things together. So for them it would be helpful.
Also, isn't all of programming just playing with types in a way? I feel like Intro to types never stops lol.
https://www.globalnerdy.com/wp-content/uploads/2014/06/poopy...
They have absolutely no connection to the matter at hand. Since foo is often used before bar, you would think there is an ordering between the two but there doesn't have to be. They are hard to pronounce and easier to confuse.
Whenever I give an example I use variable names that actually make sense and are related to the example. I'm glad that I have been fortunate to not see "foo" and "bar" anywhere in all of the code I've seen in recent memory.
I couldn’t disagree more. The entire point is that the variables are disconnected from the matter at hand. They’re widely recognised as placeholders, single syllable, distinctly pronounced from each other, and have an implied ordering.
This isn't so much of an advantage for "bar" and "baz". Those sound pretty distinct to Americans, now, but "r" -> "z" is a known type of sound change, which implies that for some people they'll sound the same. "R" -> "s" is attested in Latin, presumably because "z" wasn't an option. (Latin fricatives don't have voicing distinctions.)
For an only slightly different current example, the second consonants in "virile" and "vision" are perceived as distinct in American English, but identical in Mandarin Chinese, which is why the sound is spelled as "r" in Hanyu Pinyin and as "j" in Wade-Giles.
I’d find it hard to think of two words easier to pronounce— what do you mean by this?
Using foo bar baz qux is lazy when you can easily find countless examples.
> Using foo bar baz qux is lazy when you can easily find countless examples.
Countless examples of what?
Yes to both.
> Countless examples of what?
Anything illustrative. Like libraries/books, cars, whatever. Anything is better than foo/bar
You detest that someone says "thing" instead of "house" or something?
"...so you take a thing-"
"what thing?"
"It doesn't matter. It might be anything. So you-"
"A car?"
Come on man.