当前位置:  开发笔记 > 开发工具 > 正文

为什么许多语言区分大小写?

如何解决《为什么许多语言区分大小写?》经验,为你挑选了12个好方法。

为什么许多语言区分大小写?

这仅仅是遗产问题吗?C++区分大小写,因为C是,Java区分大小写,因为C++是等等?或者背后有更实用的理由吗?



1> Paulius..:

我不认为你会得到一个比"因为那种语言的作者认为这样更好"的答案更好的答案.我个人认为他们是对的.我讨厌在同一个源文件中的任何地方找到这些行(并引用相同的对象+方法)...

SomeObject.SomeMethod();
...
SOMEOBJECT.SOMEMETHOD();
...
someObject.someMethod();
...
sOmEoBjEcT.sOmEmEtHoD();

我认为没有人会很高兴看到这个......


公平地说,区分大小写不会阻止怪物的发生,它只是保证所有四个都会调用不同对象上的不同方法.我也不知道那是件好事.:)
不区分大小写的语言没有这些问题,因为任何严肃的IDE都会为您解决这个问题.无论如何,如果您在记事本中工作,您可以使用简单的搜索和替换来修复案例,您不能在区分大小写的语言中执行此操作,因为它可能会破坏代码.
唯一比SOMEOBJECT.SOMEMETHOD()的不同版本更糟的是仅在引用相同的对象/方法对的情况下变化它们指的是不同的对象/方法对
看看我对这个问题的回答.使用仅根据大小写不同的名称是不好的做法.

2> Tom Kidd..:

Unix的.

Unix是区分大小写的,因此在Unix上开发的许多编程语言区分大小写.

计算机不宽容 - 大写字符与小写字符不同,它们完全不同.回到处理周期,RAM等昂贵的时候,不值得努力迫使编译器和计算机"宽容",人们只是想让事情发挥作用.

请注意,在Visual Basic出现之前,案例不敏感并没有真正变得有用- 一旦公司开始投入这个概念,让群众参与计划对他们的底线来说是一件好事(例如,微软赚更多钱,如果Windows上有更多的程序)语言开始变得更友好,更宽容.


我觉得你有点不对劲.最初,一切都是大写的(FORTRAN,COBOL,LISP等).但它很难阅读,所以他们添加了对某些系统(IBM大型机)的不区分大小写,以及对其他系统(Unix)的区分大小写.系统区分大小写然后确定语言区分大小写.但最初,语言不区分大小写,但您必须使用大写.
@JS:你可以使用你想要的任何情况,只要它是大写的吗?:)
UNIX是区分大小写的,原因相同,早期语言不区分大小写.显然,编程语言早于UNIX.

3> Jon Skeet..:

一个有趣的事情是英语也区分大小写.(我怀疑大多数自然语言都是如此,但对所有人来说可能都不是这样.)

两者之间存在很大差异(无论如何,我住在雷丁镇附近):

我喜欢阅读.

我喜欢阅读.

同样的,虽然很多人利用不正确,你通常可以明白什么意思,这并不意味着这样的写作被认为是正确的.当涉及到这种事情时,我是一个坚持不懈的人,当然,这并不是说我自己做对了.我不知道这是否是编程语言区分大小写的继承的一部分,但我怀疑它可能是.

对编程语言区分大小写的一个明显优势是文本也变得对文化不敏感.很难不得不偶尔向编译器拼出哪个文本编码用于源文件 - 必须指定它所处的文化会更糟糕:(


日本人,韩国人和中国人没有案例,也不影响易读性.但你的观点是价值.

4> Axelle Ziegl..:

对于开发人员和语言语法规范来说,它实际上非常实用:低/大写区别为标识符命名增加了很多表现力.

从语言语法的角度来看,您可以强制某些标识符以小写或大写(例如Java类名称)开头.这使得解析更容易,因此有助于保持语法清晰.

从开发人员的角度来看,这允许大量方便的编码约定,使您的代码更清晰,更易于理解.


这种特殊的编码约定,仅由大小写不同的标识符使代码*更难以阅读.看看我对这个问题的回答.

5> 小智..:

我的猜测是,区分大小写扩大了名称空间.一个很好的技巧,如

MyClass myClass;

用不区分大小写的编译器是不可能的.


问:为什么Wirth选择了Modula-2的区分大小写,尽管他早期的Pascal不区分大小写.答:他发现他在一个程序中需要超过26个变量.是的......这是一个玩笑,但那里有一个真实的核心.
这不是不可能的:编译器可以使用每个令牌的位置,知道哪个是类型的名称,哪个是变量的名称.
但是,如果类型和变量不共享命名空间,那将是可能的.

6> Aaron Digull..:

案例折叠在英语中很简单(对于所有字符<128).德国sz或"sharp s"(ß)在ISO 8859-1字符集中没有大写字母变体.经过大约十年的讨论,它只收到一个Unicode (现在,所有字体都必须更新......).汉字和平假名(日语字母)甚至不知道小写字母.

为了避免这种混乱,即使在这个Unicode时代,允许大小写折叠 unicode标识符也是不明智的.


在土耳其语语言环境中,"i"和"I"不是相应的小写/大写字符.`i`-`İ`是一对,而`ı`-`I`是一对.

7> AnthonyWJone..:

回来,当解析和编译真的很昂贵并且需要整晚时,如果它不必担心案例,那么它对编译器是有利的.

一旦标识符存在,只有通过它们的情况才是唯一的,它变得非常难以返回.许多开发人员喜欢它,并且似乎没有很大的愿望来撤消它.



8> Scott Langha..:

ExpertSexChange

我相信这是Stack Overflow的竞争对手,您必须付费才能阅读答案.嗯......在不区分大小写的情况下,网站名称的含义是模棱两可的.

这是语言区分大小写的一个很好的理由.不那么模棱两可!程序员的模糊性被认为是令人讨厌的.


该网站的名称是和专家交流.(忽略点繁荣愚蠢的时期)

9> Bill the Liz..:

区分大小写通过使用命名约定增加了语言可读性.你不能写

Person person = new Person("Bill");

如果您的语言不区分大小写,因为编译器无法区分类名和变量名.

此外,拥有人,人,PersoN,PeRsOn和PERSON,都等同于令人头疼.:)


强烈反对.广泛使用这两种语言,不得不担心标识符中的大小写差异,因此在区分大小写的语言中阅读不熟悉的代码会更加困难.

10> McDowell..:

什么是资本形式(U + 0049)或者İ(U + 0130)?

资本化取决于区域设置.


大多数英语课程.它应该是语言设计的绝对要求吗?我认为区分大小写不那么模棱两可.此外,字符U + 0069!= U + 0049.外(字母依赖)自然语言处理,为什么要这样呢?我没有看到任何好处.

11> joel.neely..:

许多(非编程)语言(例如使用罗马字母表的欧洲语言)区分大小写,因此这些语言的母语使用者使用大/小写区别是很自然的.

编程语言区分大小写的想法是由于早期硬件(包括使用5位字符代码的计算机电传打字机)的限制而产生的历史假象.

争论案例盲语的人必须无法区分

IAmNowHere

IAmNowhere

(这是个玩笑! ;-)



12> 小智..:

因为它们像一盒青蛙一样愚蠢,正是因为这个线索中的相反观点所给出的原因(我甚至不会问这是什么.伍德为树木和所有这些).

当FOOBAR = FooBar = foobar时,您可以选择您的约定,其他编码员也可以这样做,无论他们是否共享您的偏好.没有混乱.

他们也无法摆脱具有常数,函数和变量的天才在同一个文件中具有相同名称,尽管有不同的上限.再一次,没有混乱.

你调用你的变量WebSite,他们称他们为网站,哪个系统混淆了?在扫描时也不容易.

至于查找,在查找之前将名称转换为小写是否真的要多得多?做一个你自己的过早优化是一回事,期望你选择的语言的开发人员是一个完全错过这一点的其他级别.

......然而,所有这些答案都说区分大小写可以减少混淆.


在不区分大小写的语言中使用了很多Iraim,我认为两者都很糟糕,而且我也没有(尽管在区分大小写的语言中).两者都只是拐杖,所以你不必真正考虑真正使这些事情与众不同的东西.
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有