not在计算机语言中是什么意思,关于编程语言:为什么变量名中不允许使用特殊字符?...

为什么在编程语言的变量名中不允许使用特殊字符(下划线除外)?

是否有任何与计算机体系结构或组织有关的原因。

它与计算机历史有关。 即,如果您使用名称中的@创建了一个变量,那么没有@键的人将无法编辑您的代码。 另请参阅:en.wikipedia.org/wiki/Digraphs_and_trigraphs

这随语言而异。 见stackoverflow.com/questions/7656937/

如上所述,这会随语言的变化而变化(例如,Swift允许使用unicode标识符),但是另一个原因(从历史上讲,一定是历史原因)可能是在仅允许使用纯ASCII时使符号表更短(及其操作更简单)。

大多数语言都有悠久的历史,使用ASCII字符集。这些语言往往具有简单的标识符描述(例如,以A-Z开头,然后是A-Z,0-9,也许是下划线; COBOL允许"-"作为名称的一部分)。当您只有029键打孔或电传打字机时,您没有太多其他字符,并且大多数字符都用作运算符或标点符号。

在较旧的计算机上,这样做的好处是您可以将标识符编码为基数37(AZ,0-9,空)[32位6个字符]或基数64(AZ,az,0-9,下划线和空) )数字(用于小型符号表的数字[36位6个字符,在较早的机器中是常见的字长)。结果是:许多较旧的语言在标识符大小上有6个字符限制(例如FORTRAN)。

长期以来,LISP语言已被允许使用。名称可以是LISP特殊含义的字符以外的任何字符,例如()[]'`#,通常可以使用某种转义约定将这些字符插入名称中。我们的PARLANSE语言就像LISP;它使用"?"作为转义符,因此您可以将?(begin +?)end写为单个标识符,其实际拼写为"(begin + end)"。

更现代的语言(Java,C#,Scala等,...,甚至是PARLANSE)在Unicode时代长大,并且倾向于允许标识符中的大多数unicode(实际上,它们倾向于允许将命名的Unicode子集作为Unicode的一部分)身份标识)。由汉字构成的标识符在此类语言中是完全合法的。

在西半球有点像口味问题:大多数标识符名称仍倾向于仅使用字母和数字(有时是西欧字母)。我不知道日语和汉语在具有支持Unicode的字符集时真正用于标识符名称的含义。我所见过的亚洲代码很少遵循西方标识符约定,但注释倾向于使用更多的Unicode字符集。

从根本上讲,这是因为它们通常用作运算符或分隔符,因此会引起歧义。

Is there any reason relate to computer architecture or organization.

否。计算机看不到变量名。只有编译器可以。但是它必须能够将变量名与两个由运算符分隔的变量名区分开,并且大多数语言设计人员都采用了这样的原理,即计算机程序的含义不应受到空格的影响。

我爱堆雪人! (我希望更多的语言将空格视为更相关的分隔符:-/)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值