为什么许多语言不接受从数字开始的名称?

时间:2014-01-25 09:00:31

标签: naming-conventions language-design

在阅读任何编程语言参考时,我总是遇到一个奇怪的事实:

  

变量或常量名称不能以数字

开头

当然,即使允许使用数字名称,使用这些名称也是不好的做法。

但真正的主要原因是什么?

  • 解析会不会很难?

  • 为了不对代码进行模糊处理,是否已弃用?

2 个答案:

答案 0 :(得分:1)

存在此限制是为了简化语言解析器。接受具有前导数字的标识符所需的工作可能不值得复杂。

并非所有语言都有此限制;考虑Racket(Lisp / Scheme方言):

pu@pumbair: ~  racket
Welcome to Racket v5.3.6.
-> (define 9times! 9)
-> (* 9times! 2)
18

但当然Lisp语言特别易于解析。

至于混淆,我确信标识符可以是unicode字符(例如在Racket和Go中)的事实会让人感到更加困惑:

-> (define ǝʃqɐıɹɐʌ-ɐ-sı-sıɥ⊥ 144)
-> (sqrt ǝʃqɐıɹɐʌ-ɐ-sı-sıɥ⊥)
12

答案 1 :(得分:1)

为了使解析有效,解析器依赖于预测下一个字符以确定下一个令牌的可能性。当变量名,常量名和单词等标识符可以以数字开头时,为下一个标记分支的可能性数量会急剧增加。同样取决于解析方法,它可能需要向前看更多字符以确定令牌类型,这会导致解析器更加复杂。