大多数编程语言使用//
或#
用于单行注释(请参阅wiki)。似乎#
是特别用于解释语言。根据这个问题,原因似乎是早期的 shell 之一(bourne shell)使用 '#' 作为评论并使用它(shebang)。
选择作为注释符号是否有合理的理由#
(例如象征性地划掉#
)?为什么我们//
在许多编译语言中使用注释符号(尤其是在 C 中,因为它似乎是最早使用该符号的编译语言之一)?这有合乎逻辑的理由吗?为什么不使用#
代替//
,或//
代替#
?
#
[在早期的 shell 中] 选择作为注释符号是否有合理的理由?
Bourne shell 分词器非常简单。要添加注释行支持,单个字符标识符是最简单且合乎逻辑的选择。
如果您希望与 EBCDIC 和 ASCII(当时使用的两个主要字符集)兼容,您可以选择的单个字符集非常小:(
!
逻辑非输入bc
)
#
%
(模输入bc
)
@
^
(幂输入bc
)
~
(用于路径)
现在,我列出了bc
在同一时期使用的计算器,不是因为它们是一个原因,而是因为您应该了解 Bourne shell 开发人员和用户的上下文。bc
符号不是凭空而来的;流行的偏好影响了选择,因为开发人员希望语法直观,至少对他们自己而言。因此,上述bc
注释有助于显示当代开发人员与特定角色之间的关联。我并不打算暗示这bc
必然会对 Bourne shell 产生影响——但我确实相信它确实如此;开发 Bourne shell 的原因之一是使工具的使用和自动化bc
变得更容易。
实际上,只有#
“@
未使用”字符在 ASCII 和 EBCDIC 中可用;并且看起来"hash"胜过"at"。
为什么我们
//
在许多编译语言中使用注释符号?
//
评论风格来自BCPL。许多 BCPL 标记和操作符已经是多个字符,我怀疑开发人员当时认为将已使用的字符用于注释行标记而不是引入一个全新的字符会更好(为了互操作性)。
我怀疑//
评论风格在边注中有历史背景;用于将实际内容与注释或解释分开的双垂直线是一个清晰的视觉分隔符,即使是那些不熟悉实践的人。
为什么不使用
#
而不是//
,或[反之亦然]?
在上述两种情况下,都有明确的逻辑。然而,这并不意味着这些是唯一可用的合乎逻辑的选择。这些只是在做出选择时对开发人员最有意义的那些——我试图阐明可能的原因,上面的选择的背景。
如果您对这类问题感兴趣,我建议您查找旧的数学和科学(尤其是物理)书籍,甚至可能是旧笔记的复制品。最好的工具是直观的,你看;为了找到对某人来说直观的东西,你需要找出他们工作的背景。我绝对肯定你会找到有趣的“原因”——使某些选择对他们来说合乎逻辑和直觉的事情,而对我们来说,它们可能看起来奇怪——通过找出早期开发人员及其同事和导师的习惯。