【问题标题】:Rationale behind the C syntax for blocks块的 C 语法背后的基本原理
【发布时间】:2016-06-04 07:51:44
【问题描述】:

我最近试图找出导致在 C 语言和 same family 的其他语言中使用花括号作为块 (compound-statements) 的原因。

认为数组的方括号或改变运算符优先级的括号似乎来自用于这些事情的mathematicalnotation,所以这对我来说很有意义。分号也很有意义,它用于分隔 related sentences with independent clauses,它在 C 中做了类似的事情。

但我找不到与花括号类似的东西:它们在数学中用于 sets,而在某种程度上相似的是它们在 musical notationEnsemble staves)中的使用用于表示所有五线谱上的音乐将同时播放(不完全相同的用法,但我认为它比它们在数学中的集合更接近)。

另外,我想知道 C 是否真的是第一个引入这种块语法的语言,还是它只是普及了它?

【问题讨论】:

  • 可能就像( )[ ] 已经被占用一样简单。为什么我们将< > 用于模板/泛型?

标签: c syntax notation curly-braces


【解决方案1】:

第一个 curly brace programming language 是 1966 年的 BCPL,尽管除了 {} 之外,它还允许 $($) 分隔块。

BCPL 基于CPL,它使用不寻常的(在现代程序员眼中)§ 来打开一个块,并使用带有一条线的相同符号来关闭该块。 "How BCPL evolved from CPL": 中 BCPL 的发明者 Martin Richards 说:

CPL 使用节符号 (§) 等效于 Algol 的 BEGIN 和 用斜线叠印的部分符号表示END。采用 BCPL $($) 用于这些标记,并且与 CPL 一样,这样的部分括号可以 被标记,允许关闭部分括号关闭多个 部分。不幸的是,这种约定导致相当模糊 编程错误,所以当大括号({})变成 可用,它们仅用作未标记的部分括号和 不鼓励使用 $($)

花括号通过B (1969) 来到 C (1972)。

【讨论】:

  • 我想你猜对了。字符集和键盘中特殊字符的可用性是(并且有时仍然是)便携式编程的问题。这就是为什么 {} 仍然有替代编码作为三合字母(??<??>)和二合字母(<%%>)。
  • 我的猜测是错误的,所以我把它编辑掉了——我找到了 Martin Richards 的参考资料,并用它替换了我的猜测。
  • 感谢“How BCPL evolved from CPL”的链接,对从一种语法/语言到另一种的演变进行解释非常有趣!
猜你喜欢
  • 2012-04-06
  • 2011-03-11
  • 2011-06-17
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多