MIT AI Lab back in the 1960s published technical reports containing program code.
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.
On a related note, we all know the story from WW2 where Bastogne was surrounded by the Wehrmacht, and the Wehrmacht sent a note to General McAuliffe suggesting he surrender. He returned with a note that simply said "nuts".
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.
Why would women in particular object to "fu" and not "foo"?
In the 60's the belief was that they could not tolerate profanity. Or maybe it was that they'd tattle on the rest of us.
There was a concept of treating women with respect.
Back in the 1960s United States, women were often perceived as more sensitive to public profanity, compared to men of the same age.
Is it not clear what “f” and “u” is short for?
Of course it is. What's not clear is what that has to do with women.
I imagine that, due to the societal expectations historically placed on women, they’ve typically had to be “the adult in the room.” Contrast this with men historically being able to get away with acting childishly (or worse). So when terminology used in the workplace is particularly vulgar, it would follow that women would take more issue with it than men.
This is a sexist statement
It’s a discussion about a sexist environment. Catch up
Describing the factual sexist environment that existed in a prior time (or, hell, the ones that exist today) is not itself sexist.
It’s a fact the environment was sexist.
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.
How so?
> due to the societal expectations historically placed on women
This reads like aliens trying (and failing) to figure out why women act more like women than men do.
Can you elaborate on that? My goal was to be as clear as possible and leave minimal room for misinterpretation.
It's clear. Fucked Up
'F--- you'
In this case the u stands for “up”: https://www.merriam-webster.com/dictionary/fubar
No
Because they are subject both to sexual harassment and to higher expectations, including "professionalism" (not using profanity at the workplace in this specific case).
This isn't an answer to the question.
Smug responses like this just means you don't actually have a point.
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'.
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 = 2
It blows me away that "The Jargon File" is not required canon. Well, it can be anachronistic and old-school-nerd-bro coded, but there's some primal stuff in there
> old-school-nerd-bro
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.
I've been the same way but I think it's time to give up; the language has moved on, and it's only a very specific age bracket that recognizes the distinction. Graybeard means something different now too. It's okay though. It's not important and doesn't need to be maintained; it was just another form of gate-keeping...
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.
maybe it's time for an update
I don't know the story of the entry of foo into the computer science lexicon, but it is the case that the early days of computers were populated with a fair number of military veterans because early computers were mostly used in military applications so that produced people with computer experience (not to mention the compulsory draft which meant that a large number of people would have military experience anyway).
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...
The missing link is 'FURCHTBAR'.
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
Seems like that retelling comes from an IETF RFC: https://www.ietf.org/rfc/rfc3092.txt (Etymology of "Foo")
The date of the rfc is Apr 1st -- unclear how truthful it is.
I have always felt that the foo/bar demo/example snippets have held me back in comprehending code, because there was no reasonable logic to it. It just means nothing to me, other than the FUBAR reference others have mentioned.
I personally, and professionally, think it’s a horrible convention.
Surprisingly little. Others?
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)
Heads up that link to bar.com goes to an advertisement to sell the domain now.
For some reason, in Sweden, the word "gazonk" is common after "foo" and "bar". I've never been been able to figure out why.
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.
> For some reason, in Sweden, the word "gazonk" is common after "foo" and "bar".
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.)
"In World War One “Foo was here” was scrawled across camps occupied by the Australian Expeditionary Force. Generally assumed to have come from the acronym for Forward Observation Officer, veterans of that war may have brought the tradition with them into the next global conflict over two decades later" https://taskandpurpose.com/history/the-story-of-kilroy-and-w...
In addition to the military-programming history of "foo", there's also a military-programming history for the variable naming convention of "alfa", "bravo", "charlie", "delta", etc.
The naming convention is known as the NATO phonetic alphabet: https://en.wikipedia.org/wiki/NATO_phonetic_alphabet
> "alfa", "bravo", "Charlie", "delta"
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.
In the 1940s, the Army used a phonetic alphabet starting Able, Baker, Charlie. My late father was on the first two postwar atomic bomb tests (the first after Trinity, and at Hiroshima, Nagasaki) which were Able and Baker.
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.
The change from able... to alpha... was a NATO thing. some European countries don't use the "a" in "able", so it was changed to the "a" in "alpha"
NATO phonetic alphabet is used in all areas where you have to say letters over voice.
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.
> NATO phonetic alphabet is used in all areas where you have to say letters over voice.
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.
Some of them could potentially be a little confusing as well, such as "delta" in game development, "echo" in some networking contexts, or "uniform" in OpenGL shaders.
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.
I understand that these variables have a rich and long history, but if you have ever heard a professor or anybody else say "foo" in lecture you will understand why I detest them.
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.
> 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.
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.
I would agree with the comment you're responding to, too often in tutorials or especially in off hand comments here, I find their usage to assume some common but unindicated convention or subtext and obscure the concept they're trying to convey.
They’re the programmer equivalent of ‘x’ and ‘y’ in mathematics — which programmers don’t use as generic variables because they’re used for “math” embedded in code such as coordinates or measurements.
> distinctly pronounced from each other
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.
> they are hard to pronounce
I’d find it hard to think of two words easier to pronounce— what do you mean by this?
Proof that for any little thing that existed, exists, or could ever exist in this universe, there will be a non-zero list of human beings unhappy with it. Until the end of humanity, at least...
I am unhappy with your characterisation of my natural human trait of having a preponderance for unhappiness with all possible outcomes.
It's like business schools using "widget" for the product and "Acme" for the company — they are dealing in concepts, not absolutes
The very reason you say something like foo is to avoid using any specific example that might actually mean something and confuse the listener into thinking it matters and focussing on some irrelevant detail instead of the actual concept being illustrated.
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.
When I started to learn programming (by myself), I had a really hard time understanding what foo and bar were and what they meant in various tutorials and blogs. I was already trying to learn the syntax and programming concepts, throwing some unknowns words in the mix did NOT help. For some time I thought foo had special meaning in PHP, or that it meant something in English (not my first language, and I was much less proficient in English at ~14 than I am today).
Using foo bar baz qux is lazy when you can easily find countless examples.
No zot? I don't remember where I picked them up. But it was always fubar and zot.
Never heard of zot, but baz
Zot is (at least in part) from the old comic Wizard of Id and (by the same artist, Johnny Hart and Brant Parker) BC. It was the sound of a lightning bolt (natural or wizard-created).
Reprint cover of "Ala Ka Zot!":
https://m.media-amazon.com/images/I/61hytBWmsqL._SL1000_.jpg
foobar should die out. myvariable, mystring, myfunction etc. are better in every way.
Is it not foo() and bar()? MyVariable and… ?
they're longer, for one, so no
How about x, y, f?
How about emoji?
https://www.globalnerdy.com/wp-content/uploads/2014/06/poopy...
No love for quxx?
Scroll down. It's more commonly qux or quux.
Nope. Not even for xyxzzy