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