foobar

4 views
Skip to first unread message

Stephen Suen

unread,
Jan 4, 2006, 4:08:19 AM1/4/06
to [Programmer Cafe]

作为一个程序员,一定经常看到很多人将 foo,bar,foobar 这样奇怪的字眼用作范例中使用的类,变量或者方法等实体的名称。比如:

    public class Foo {
        public static void main(String[] args) {
            System.out.println("Foo");
        }
    }

反正是例子,我们知道这些名字没有什么特殊意义,只要理解例子本身就行了。不过,如果你是一个热爱计算机编程的人,也许你想知道关于这些奇怪字眼的更多的东西。

实际上,类似 foo 和 bar 是计算机编程世界中的一种文化现象,一种"行话"。它们的学名被称为 metasyntactic variable(这个术语太难翻译了,也许可以译作"元语法变量"。为了避免造成更多的困惑,还是使用英文原文吧)。Foo 实际上是这种已经成为"标准行话"的一组变量中的第一个,这样的变量还可以依次包括 bar,baz,qux,quux 等等(剩下的字眼对我这样非英语母语的人士太难记忆了,也就不在此一一列举了)。
 
这些变量经常在例子用于代表任何正在讨论的事物。可以用作临时的文件名等等,但更常见于对语法的阐释和说明中。我想,这也是它们的学名的来历,meta-syntactic,meta 前缀表示"对...的说明",比如 metamodel(元模型,模型的模型,对模型的描述)。不过,也有人说这么叫其实完全是出于好听而已。

更有趣的是,这种变量的列表甚至可以反映出文化的区域性,比如 foo,bar,baz,quux,quuux... 这样的一组变量常见于麻省理工学院或者斯坦福;而 foo,bar,baz,bongo 常见于耶鲁;spam,eggs 则常用于 Python 程序员。

Foo 还经常和 bar 合用成为另一个常见的变量名 foobar,它是 FUBAR 的一个变体,源于二战中常见的说法,Fucked Up Beyond All Recognition,根据字典中的说法,应该是指"彻底地糊涂了"。

知道了这些有趣的背景,希望你可以更加愉快地像个行家一样的使用这些变量了。如果还想了解更多的内容,可以参阅以下网址(非常不错的网站):

    http://www.answers.com/metasyntactic%20variable



--
Stephen Suen
stephe...@gmail.com
http://spaces.msn.com/members/stephensuen
http://groups.google.com/group/programmercafe

Strong Yuan

unread,
Jan 4, 2006, 7:30:03 PM1/4/06
to program...@googlegroups.com
got it thanks.

2006/1/4, Stephen Suen <stephe...@gmail.com>:



--
↘麻甩仔↙小強oO
Good Good Study Day Day Up.
Don't feel bad. A lot of people have no talent!

xiaoxiao

unread,
Jan 15, 2006, 10:01:36 PM1/15/06
to Programmer Cafe
原来还有这个意思哦
Reply all
Reply to author
Forward
0 new messages