Language agnostic 选择常用注释符号的原因和历史

Language agnostic 选择常用注释符号的原因和历史,language-agnostic,comments,interpreted-language,compiled-language,Language Agnostic,Comments,Interpreted Language,Compiled Language,大多数编程语言使用/或#作为单行注释(请参阅)。似乎#特别用于解释语言。根据解释,这似乎是因为早期的shell之一(bourne shell)使用了“#”作为注释并利用了它() 选择#作为注释符号是否有逻辑上的原因(例如,符号化通过#划掉)?为什么我们在许多编译语言中使用/作为注释符号(特别是在C语言中,因为它似乎是最早使用该符号的编译语言之一)?有没有合乎逻辑的原因?为什么不用代替/,或者用/代替 (在早期shell中)选择#作为注释符号是否有逻辑上的原因 Bourne shell标记器非常简

大多数编程语言使用
/
#
作为单行注释(请参阅)。似乎
#
特别用于解释语言。根据解释,这似乎是因为早期的shell之一(bourne shell)使用了“#”作为注释并利用了它()

选择
#
作为注释符号是否有逻辑上的原因(例如,符号化通过
#
划掉)?为什么我们在许多编译语言中使用
/
作为注释符号(特别是在C语言中,因为它似乎是最早使用该符号的编译语言之一)?有没有合乎逻辑的原因?为什么不用
代替
/
,或者用
/
代替

(在早期shell中)选择
#
作为注释符号是否有逻辑上的原因

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

如果希望与EBCDIC和ASCII(当时使用的两个主要字符集)兼容,则可以选择的单个字符集非常小:
(逻辑不在
bc

#

%
(bc
中的模)
@

^
(电源输入
bc

~
(用于路径)

现在,我列出了在同一时间段内使用的计算器bc中使用的那些,不是因为它们是一个原因,而是因为您应该了解Bourne shell开发人员和用户的上下文。
bc
符号不是凭空出现的;流行的偏好影响了选择,因为开发人员希望语法是直观的,至少对他们自己是这样。因此,上面的
bc
注释有助于展示当代开发人员与特定角色之间的关联。我并不想暗示卑诗省必然对伯恩壳牌公司产生影响,但我确实相信它确实产生了影响;开发Bourne shell的原因之一是使像
bc
这样的工具的使用和自动化更容易

实际上,只有
#
@
是ASCII和EBCDIC中可用的“未使用”字符;看起来“哈希”胜过了“at”

为什么我们在许多编译语言中使用
/
作为注释符号

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

我怀疑
/
注释风格在页边空白注释中具有历史背景;一条双垂直线,用于将实际内容与注释或解释分隔开来,这是一个清晰的视觉分隔线,即使对于那些不熟悉该实践的人也是如此

为什么不使用
而不是
/
,或者[反之亦然]

在上述两种情况下,都有明确的逻辑。然而,这并不意味着这些是唯一合乎逻辑的选择。在做出选择的时候,这些对开发人员来说是最有意义的——我试图解释一下可能的原因,上面提到的选择的背景


如果你对这类问题感兴趣,我建议你找到旧的数学和科学(特别是物理学)书籍,甚至可能是旧笔记的复制品。你看,最好的工具是直观的;要想找到某人的直觉,你需要找出他们工作的背景。我绝对相信,通过了解早期开发人员及其同事和导师的习惯,您可以找到有趣的“原因”——使某些选择对他们来说是合乎逻辑和直观的,而对我们来说,它们可能看起来很奇怪

喜欢绿色而不是蓝色有什么合乎逻辑的原因吗?@StoryTeller是的,例如,如果我想为森林中的人们放置重要的警告标志,而我只能在蓝色和绿色之间选择,我会为他们选择蓝色。@SearchSpace-在这种情况下,你会喜欢红色或黄色,因为你想让它们脱颖而出(你在这两种情况下都不受限制)。但这是离题的。你的问题要求解释语言设计师的想象力所做的事情。@StoryTeller是的,我会为应用程序选择合适的颜色(在这种情况下,我希望警告符号突出,我会选择一种对比度高的颜色)。问题是,为什么语言设计师喜欢choosen符号(他们的应用案例中考虑的是什么——因为我们的脑海中有“突出”的意思)。我不认为他们拿了骰子/立方体(你只是假设他们没有理由,因为你还没有看到,但这并不能保证没有理由[这可能不像警告标志示例中那样明显])你对 //< /C>的论证有一个缺点:C直到C99才支持它。它最初是用C++来介绍的,而不是C,因此BCPL和C++之间有一个空隙。其他语言使用了其他格式,Pascal,例如<代码>(**)。。我怀疑人们是否真的能够合理化所做的选择,很可能连开发人员都无法做到。只是“为什么不在C中使用
#
”很明显: < <代码> >用于预处理器指令。@奥拉夫:不; //< /Cord>最初是在BCPL中引入的,而不是C++。它是由B继承的,但是C99之前用块注释格式来继承。Soustrup的C类重新介绍了<代码> //< /COD>注释格式,但我不知道是因为Soustrup喜欢B还是BCPL。C99重新引入了
/
注释格式,因为大多数