为什么许多编程语言对大小写敏感?
这只是继承的问题吗?C++对大小写敏感是因为C对大小写敏感,Java对大小写敏感是因为C++对大小写敏感等等?还是有更实际的原因呢?
为什么许多编程语言对大小写敏感?
这只是继承的问题吗?C++对大小写敏感是因为C对大小写敏感,Java对大小写敏感是因为C++对大小写敏感等等?还是有更实际的原因呢?
我认为你不会得到比“因为那个语言的作者认为那样更好”更好的答案。就我个人而言,我认为他们是正确的。我很讨厌在同一个源文件中找到这些行(并引用相同的对象和方法)...
SomeObject.SomeMethod();
...
SOMEOBJECT.SOMEMETHOD();
...
someObject.someMethod();
...
sOmEoBjEcT.sOmEmEtHoD();
我认为没有人会高兴看到这个...
Unix.
Unix是区分大小写的,因此许多为在Unix上使用而开发的编程语言也是区分大小写的。
计算机不会原谅 - 大写字母和小写字母不是同一件事,它们完全不同。而当处理周期、RAM等资源昂贵时,强制编译器和计算机“原谅”大小写错误并不值得付出这样的努力,人们只是试图使它们正常工作。
请注意,直到类似于Visual Basic这样的东西出现后,大小写不敏感真正成为有用的东西 - 一旦公司开始投资于让群众参与编程的概念是对他们的底线有好处的事情(即,如果Windows上有更多的程序,Microsoft就能赚更多钱),语言才开始变得友好和宽容。
有趣的一点是,英语也是大小写敏感的。(我怀疑大多数自然语言都是如此,但并非所有语言都是如此。)
在我居住的地方(靠近雷丁镇),下面两句话有很大的区别:
我喜欢阅读。
和
我喜欢Reading镇。
同样,虽然许多人会错误地使用大写字母,通常你可以理解其意思,但这并不意味着这样的写法是正确的。对于这种事情,我是一个坚持原则的人,当然,并不是说我自己什么都做得正确。我不知道这是否是编程语言大小写敏感性的遗传,但我怀疑可能是。
编程语言大小写敏感的一个明显优点是它使文本变得文化上无歧视。必须偶尔向编译器指明源文件使用的文本编码已经够糟糕了 - 不得不指定所处的文化背景将更加糟糕 :(
实际上,这对于开发人员和语言语法规范来说都非常实用:大小写的区分为标识符命名增加了很多表现力。
从语言语法的角度来看,你可以强制某些标识符以小写或大写字母开头(例如Java类名)。这使得解析更容易,因此有助于保持语法清晰。
从开发者的角度来看,这允许使用大量方便的编码约定,使您的代码更清晰、更易于理解。
大小写折叠仅在英语中简单实现(对于所有字符 < 128)。德国的sz或“sharp s”(ß)在ISO 8859-1字符集中没有大写变体。它只在Unicode中得到了一个大写变体,经过约十年的讨论后(现在,所有字体都必须更新…)。假名和平假名(日文字母)甚至不知道小写。
为了避免这种混乱,即使在Unicode时代,允许大小写折叠 和 Unicode标识符也不明智。
i
和I
不是相应的小写/大写字符。i
-İ
是一对,而ı
-I
则是一个。 - CodesInChaosmyThing
,使用MyThing
的代码将无法编译,但编译器/IDE可以轻松地提供更改为正确形式的选项(该选项必须是唯一的)。字形变体可以是区分范围或用法的有用视觉提示,但我认为不应该依赖它们来实现这些目的。 - supercat我猜大小写敏感会扩大命名空间。一个不错的技巧是
MyClass myClass;
使用大小写不敏感的编译器将是不可能的。
ExpertSexChange(专家性转换)
我认为这是 Stack Overflow 的一个竞争对手,你需要支付费用才能阅读答案。嗯...由于不区分大小写,该网站名称的含义存在歧义。
这是语言区分大小写的一个好理由。较少的歧义! 程序员认为歧义很讨厌。
在解析和编译非常耗费时间且需要整夜的时代,如果编译器不必担心大小写问题,它会更加有利。
一旦只能通过大小写来区分唯一标识符出现,回到以前就变得非常困难。许多开发人员喜欢这样做,似乎也没有很大的反悔意愿。
区分大小写通过使用命名约定增加了语言的可读性。您无法编写
Person person = new Person("Bill");
如果您的语言是不区分大小写的,因为编译器无法区分类名和变量名。
此外,Person、person、PersoN、PeRsOn 和 PERSON 都被视为等效标记会让我头痛。