[易 易 部 落]--分 享 技 术 和 思 想

英语“复数”之罪及其带给软件编程的麻烦

作者:Eureka

英文中名词会有一个“复数”的概念,英文为“Plural”,其复数为“plurals”(真是复数的复数呀!),例如”boy”的复数形式为“boys”,并且由于拼写等等原因很多单词的复数并不是简单的加一个“s”了事,这是每个学过英文的人都知道的事!给我们这些本来撑握方块字的人学习英文的人带来很多的麻烦,必须去记忆各种单词的复数形式,这也算是复数的罪孽了!而中文并没有所谓“复数”的概念,如果要表示复数这个意义,我们一般都加一个“们”字就行了,如“男孩”的复数意义为“男孩们”。然而,“男孩”这个单词本身就会指一类人,对于中文来说根本无需考虑这个单词的单复数意义。

如果要改革语言,也许我们可以用中文的思想把英文的复数给“革命”了,但这是不可能的,因为语言就象我们使用的“键盘”一样,虽然它有很多不足之处,但已经成形,已经成势,就象作为世界较为通用的语言,人造的“世界语”就始终不敌“英语”。若真要去改革那只昐“上帝”能重新造一遍这个世界了。然而在这个世界里现在很多人都在使用一种叫“编程语言”的东西。就象我使用C#,她使用Java一样。在使用这些语言的时候我们都会跟各种名词打交道,跟名词打交道时我们就会用到“复数”概念!

曾几何时,我一直在为数据库表的命名烦恼,一个存储“书”这个表的名字到底是“book”,还是“books”呢!诸如此类出现在集合中的名词也是这样,到底怎么样去规范命名才是正确的呢,这就是复数带给我的烦恼。复数不单是给我带来烦恼,显然也给世界顶级公司的开发人员带来烦恼,例如“微软公司”的开发人员。微软的关系数据库管理架构一路走来,到2010年开始已经开始主推“实体框架”了!然而,在实体框架(entity framework)中对实体的概念进行描述时,也曾一度不得不陷于名称的复数概念而不能自拨,并且曾使用“复数化”的概念来描述实体概念映射。并且取名的时候对实体加“s”来表示。如果看过Asp.net MVC 的一个最新训练教程:ASP.NET MVC Music Store Tutorial(Version 1.0,Jon Galloway - Microsoft 10/8/2010。就会发现其中对“复数”使用的困惑!并且实际使用上已经开始不用“复数”的概念了。慢慢的,微软也觉得复数这个概念真的有罪,开始使用“们”,微软用英文表示就是“Set”,boy的复数概念变成了boyset而不是boys了。于是乎软件开发中终于用中文的“们”将复数之罪给改革了。

就象我,也曾经给很多集合名称用复数来表示,现在我也将它给改革了,尽量不用复数名称,而是使用“们”,也就是Set或者其它本身有复数含义的单词。谁叫现在编程语言还是英文一统天下呢,如果中文一统天下时,那就本身没有复数概念,不用再为它纠葛了。

说起复数概念,也让我想起微软在另一个“单数”概念上的变化,那就是在Visual Studio 2010 以前的版本(例如2008)中建立一个新的WPF应用程序时,它自动创建的窗口名称是Window1.xaml(带window1.xaml.cs),这个“1”就是一个单数的概念,在创建新项目时,作为“本体”意义上我总觉的不妥。我每次都会把它改成MainWindow.xaml(MainWindow.xml.cs)。现在微软也意识到了,在Visual studio 2010中将其改了MainWindow.xaml(MainWindow.xml.cs)。我始终相信,软件编程会越来越靠近它所表示事物的本体,这一切都是例证。


下面您可根据自己的喜好分别使用“Disqus”或者“多说”进行留言评论: