选择共同评论标志的原因和历史

时间:2017-02-16 10:33:05

标签: language-agnostic comments interpreted-language compiled-language

大多数编程语言使用//#作为单行注释(请参阅wiki)。似乎#特别用于解释语言。根据{{​​3}},其原因似乎是早期的一个shell(bourne shell)使用'#'作为注释并使用它(this question)。

是否有合理的理由选择#作为评论标记(例如,#跨越的symobolize)?为什么我们在许多编译语言中使用//作为注释符号(特别是在C中,因为它似乎是最早使用该符号的编译语言之一)?这有合理的原因吗?为什么不使用#代替//,或//代替#

1 个答案:

答案 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令牌和运算符已经是多个字符长,我怀疑开发人员认为更好(为了互操作性)重用已经使用过的字符作为注释行标记,而不是引入一个全新的字符。

我怀疑//评论风格在保证金备注中有历史背景;双垂直线,用于将实际内容与注释或解释分开,即使是那些不熟悉实践的人也可以将其视为清晰的视觉分隔符。

  

为什么不使用#代替//,或者[反之亦然]?

在上述两种情况中,都有明确的逻辑。但是,这并不意味着这些是唯一合理的选择。这些只是在做出选择时对开发人员最有意义的那些 - 我试图阐明可能的原因,选择的上下文,上方。

如果您对这些问题感兴趣,我建议您查找旧的数学和科学(特别是物理)书籍,甚至可能复制旧笔记。你知道,最好的工具直观;为了找到对某人来说很直观的东西,你需要找出他们工作的背景。我绝对肯定你能找到有趣的“理由” - 让某些选择符合逻辑和直观的东西,而对我们来说,他们似乎奇怪 - 找出早期开发者及其同事和导师的习惯。