选择常见评论符号的原因和历史
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"——让某些选择对他们来说合乎逻辑和直观的事情,而对我们来说他们可能看起来很奇怪——通过了解早期开发人员及其同事和导师的习惯。
大多数编程语言使用 //
或 #
作为单行注释(参见 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"——让某些选择对他们来说合乎逻辑和直观的事情,而对我们来说他们可能看起来很奇怪——通过了解早期开发人员及其同事和导师的习惯。