选择常见评论符号的原因和历史

Reasons and history for choice of common comment signs

大多数编程语言使用 //# 作为单行注释(参见 wiki). It seems to be that # is especially used for interpreted languages. According to this question the reason for that seems to be that one of the early shells (bourne shell) used '#' as a comment and made use of it (shebang)。

为什么选择 # 作为评论符号(例如用 # 符号化划掉)是否有合乎逻辑的理由?为什么我们在许多编译语言中使用 // 作为注释符号(尤其是在 C 中,因为它似乎是最早使用该符号的编译语言之一)?这有合乎逻辑的理由吗?为什么不使用 # 而不是 //,或者 // 而不是 #

Is there a logical reason why to choose # as a comment sign [in early shells]?

Bourne shell 分词器非常简单。要添加注释行支持,单个字符标识符是最简单且合乎逻辑的选择。

如果您希望同时兼容 EBCDIC 和 ASCII(当时使用的两个主要字符集),您可以选择的单个字符集非常小:
! (逻辑不在 bc 中)
#
% (在 bc 中取模)
@
^ (电源 bc
~ (用于路径)

现在,我列出了bc中使用的那些,同时期使用的计算器,不是因为它们是一个原因,而是因为你应该了解Bourne的上下文shell 开发者和用户。 bc 符号不是凭空而来的;普遍的偏好影响了选择,因为开发人员希望语法直观,至少对他们自己来说。因此,上面的 bc 注释有助于显示当代开发人员与特定角色之间的关联。我无意暗示 bc 一定会对 Bourne shell 产生影响——但我确实相信它确实存在;开发 Bourne shell 的原因之一是使 bc 等工具的使用和自动化更加容易。

实际上,在 ASCII 和 EBCDIC 中只有 #@ 是 "unused" 个字符;看起来 "hash" 战胜了 "at"

And why do we use // as a comment sign in many compiled languages?

// 评论风格来自 BCPL。许多 BCPL 令牌和运算符已经有多个字符长,我怀疑当时开发人员认为最好(为了互操作性)为注释行令牌重用一个已经使用的字符,而不是引入一个全新的字符。

我怀疑//评论样式在页边注释中有历史背景;用于将实际内容与注释或解释分开的双垂直线,即使对于那些不熟悉这种做法的人来说也是一个清晰的视觉分隔符。

Why not use # instead of //, or [vice versa]?

以上两种情况,逻辑清晰。然而,这并不意味着这些是唯一可用的合乎逻辑的选择。这些只是在做出选择时对开发人员来说最有意义的那些——我试图阐明 可能的 原因,上下文上面的选择。

如果您对这些问题感兴趣,我建议您找到旧的数学和科学(尤其是物理学)书籍,甚至可能是旧笔记的复制品。最好的工具 直观 ,你看;要找到某人的直觉,你需要找出他们工作的环境。我绝对肯定你会发现有趣的 "reasons"——让某些选择对他们来说合乎逻辑和直观的事情,而对我们来说他们可能看起来很奇怪——通过了解早期开发人员及其同事和导师的习惯。