Posted by shan_man
on January 16, 2006 at 8:22 AM PST
Where Shannon Hickey learns about metasyntactic variables in other languages, during a recent trip to Montreal, Canada.
Do the toto!
Shortly before the holidays, I had the opportunity to visit a customer site in the
wonderful city of Montreal, Canada. I was an eater of excellent food, a seer of
new sites, and a lucky fan at Centre Bell
when the Montreal Canadians won their first
overtime shootout under the new NHL rules! And that was just in the off hours. I also
truly enjoyed myself during the day in the company of the folks whom I met,
who, by the way, are all very savvy and are doing powerful things with Java and Swing.
I thank them for their friendly hospitality, for switching to English during my visit,
and for encouraging my multiple attempts at expanding my French vocabulary
(Je voudrais des frites, s'il vous plait). I also thank them for introducing me
to toto. The introduction went something like this:
We were sitting in a conference room, where it was my turn at the whiteboard to demonstrate
code snippets. So I began:
boolean foo = ... And then
I stopped, for suddenly (and I don't what prompted it) I was unsure if they'd ever met
foo. Feeling it was important to know before continuing, I asked them straight out.
Gesturing over my shoulders with both hands towards the board, I asked them: "Do you foo?"
Well I assume they took my gestures out of context, for the next few seconds were
extremely comical. I watched as they looked at each other, and some non-verbal communication
passsed between them. Then, looking back at me akwardly, they slowly pushed back their chairs
and rose. Beginning a cute little dance, they responded in the negative: "Non...nous ne foo pas. But we toto!"
Alright, okay, so the true story is a lot less entertaining. In actuality, I did ask about the
use of foo in French programming and, in fact, these gentlemen had not seen it before.
But, being that these were smart guys, they deduced exactly what it represented.
And that's how it came about that they introduced me to foo's French counterpart
toto. You see, where we'd normally talk using "foo", "bar" or "baz"
in English, as a proper francophone you should correctly use the French "toto", "titi" or "tata".
And while I personally couldn't get Dorothy's little
puppy out of my head for the first
hour, I eventually became very comfortable with this. Due to their pattern that has you alternating
hands between letters (LEFT: t - RIGHT: o - LEFT: t - RIGHT: o), some of these little guys are exceptionally easy to
type - and can be entered even faster than the three-letter foo! Give it a try.
But what about the words themselves? Is "toto" as steeped in culture as the English "foo"? Is "titi" a direct
translation of our "bar", the place where programmers rejuvinate on coffee between late-night coding sessions?
And what about "tata", a word I've actually used myself when speaking with my two-year-old sons; as in
"tata honey, please give Daddy back the digital camera that you're not supposed to be playing with."
Well it turns out that these words are designed to have no inherent meaning at all when we use them to talk
about computer systems. With a little googling, I've discovered that all of these words, English and French alike,
belong to a group with the easy-to-remember name of metasyntactic variables. They are so-called,
according to Wikipedia and
The Jargon File ,
because (a) "They are variables in the metalanguage used to talk about programs, etc." and (b)
"They are variables whose values are often variables (as in usages like 'the value of f(foo, bar) is the sum of foo and bar')."
Nifty - so someone's named some of the nonsense that we programmers instinctively understand!
But what I find particularly interesting, since I'd never considered it before, is that the implementation
of the concept varies across cultures and languages. Again reading from
I've learned that when programming in Estonia you may need to refer to the "kalatehas (fish factory)" or maybe
"oxe (misspelled vomit)". And in Italy, according to
The Jargon File ,
be prepared to be introduced to "pippo (Goofy)" and "paperino (Donald Duck)".
Cool! By happening to discover the non-universality of foo, I met his francophone twin toto,
became more cultured, and learned about a universal concept. I'd say my visit to Montreal was quite succesful!