为什么许多语言区分大小写?
这仅仅是遗产问题吗?C++区分大小写,因为C是,Java区分大小写,因为C++是等等?或者背后有更实用的理由吗?
我不认为你会得到一个比"因为那种语言的作者认为这样更好"的答案更好的答案.我个人认为他们是对的.我讨厌在同一个源文件中的任何地方找到这些行(并引用相同的对象+方法)...
SomeObject.SomeMethod(); ... SOMEOBJECT.SOMEMETHOD(); ... someObject.someMethod(); ... sOmEoBjEcT.sOmEmEtHoD();
我认为没有人会很高兴看到这个......
Unix的.
Unix是区分大小写的,因此在Unix上开发的许多编程语言区分大小写.
计算机不宽容 - 大写字符与小写字符不同,它们完全不同.回到处理周期,RAM等昂贵的时候,不值得努力迫使编译器和计算机"宽容",人们只是想让事情发挥作用.
请注意,在Visual Basic出现之前,案例不敏感并没有真正变得有用- 一旦公司开始投入这个概念,让群众参与计划对他们的底线来说是一件好事(例如,微软赚更多钱,如果Windows上有更多的程序)语言开始变得更友好,更宽容.
一个有趣的事情是英语也区分大小写.(我怀疑大多数自然语言都是如此,但对所有人来说可能都不是这样.)
两者之间存在很大差异(无论如何,我住在雷丁镇附近):
我喜欢阅读.
和
我喜欢阅读.
同样的,虽然很多人都利用不正确,你通常可以明白什么意思,这并不意味着这样的写作被认为是正确的.当涉及到这种事情时,我是一个坚持不懈的人,当然,这并不是说我自己做对了.我不知道这是否是编程语言区分大小写的继承的一部分,但我怀疑它可能是.
对编程语言区分大小写的一个明显优势是文本也变得对文化不敏感.很难不得不偶尔向编译器拼出哪个文本编码用于源文件 - 必须指定它所处的文化会更糟糕:(
对于开发人员和语言语法规范来说,它实际上非常实用:低/大写区别为标识符命名增加了很多表现力.
从语言语法的角度来看,您可以强制某些标识符以小写或大写(例如Java类名称)开头.这使得解析更容易,因此有助于保持语法清晰.
从开发人员的角度来看,这允许大量方便的编码约定,使您的代码更清晰,更易于理解.
我的猜测是,区分大小写扩大了名称空间.一个很好的技巧,如
MyClass myClass;
用不区分大小写的编译器是不可能的.
案例折叠在英语中很简单(对于所有字符<128).德国sz或"sharp s"(ß)在ISO 8859-1字符集中没有大写字母变体.经过大约十年的讨论,它只收到一个Unicode (现在,所有字体都必须更新......).汉字和平假名(日语字母)甚至不知道小写字母.
为了避免这种混乱,即使在这个Unicode时代,允许大小写折叠和 unicode标识符也是不明智的.
回来,当解析和编译真的很昂贵并且需要整晚时,如果它不必担心案例,那么它对编译器是有利的.
一旦标识符存在,只有通过它们的情况才是唯一的,它变得非常难以返回.许多开发人员喜欢它,并且似乎没有很大的愿望来撤消它.
ExpertSexChange
我相信这是Stack Overflow的竞争对手,您必须付费才能阅读答案.嗯......在不区分大小写的情况下,网站名称的含义是模棱两可的.
这是语言区分大小写的一个很好的理由.不那么模棱两可!程序员的模糊性被认为是令人讨厌的.
区分大小写通过使用命名约定增加了语言可读性.你不能写
Person person = new Person("Bill");
如果您的语言不区分大小写,因为编译器无法区分类名和变量名.
此外,拥有人,人,PersoN,PeRsOn和PERSON,都等同于令人头疼.:)
什么是资本形式我?我(U + 0049)或者İ(U + 0130)?
资本化取决于区域设置.
许多(非编程)语言(例如使用罗马字母表的欧洲语言)区分大小写,因此这些语言的母语使用者使用大/小写区别是很自然的.
编程语言不区分大小写的想法是由于早期硬件(包括使用5位字符代码的计算机电传打字机)的限制而产生的历史假象.
争论案例盲语的人必须无法区分
IAmNowHere
从
IAmNowhere
(这是个玩笑! ;-)
因为它们像一盒青蛙一样愚蠢,正是因为这个线索中的相反观点所给出的原因(我甚至不会问这是什么.伍德为树木和所有这些).
当FOOBAR = FooBar = foobar时,您可以选择您的约定,其他编码员也可以这样做,无论他们是否共享您的偏好.没有混乱.
他们也无法摆脱具有常数,函数和变量的天才在同一个文件中具有相同名称,尽管有不同的上限.再一次,没有混乱.
你调用你的变量WebSite,他们称他们为网站,哪个系统混淆了?在扫描时也不容易.
至于查找,在查找之前将名称转换为小写是否真的要多得多?做一个你自己的过早优化是一回事,期望你选择的语言的开发人员是一个完全错过这一点的其他级别.
......然而,所有这些答案都说区分大小写可以减少混淆.叹