【问题标题】:What does it mean when one language is a parallel superset of another?当一种语言是另一种语言的平行超集时,这意味着什么?
【发布时间】:2015-05-21 15:27:26
【问题描述】:

我正在阅读a journal article about Real-Time Concurrent C,它在摘要中提到(因此你们任何人都可以通过该链接查看上下文)“并发 C,是 C(和 C++)的并行超集”。

现在我知道什么是超集了,但是当提到编程语言时,它们所说的“并行超集”是什么意思?

【问题讨论】:

  • “超集”表示所有 C 功能以及更多特性。 “并行”表示并发方面。

标签: c++ c concurrency programming-languages real-time


【解决方案1】:

他们声称两件事,而不是一件“修改”的事情。这就像在说“一辆快速的红色汽车”;这辆车很快并且是红色的,它没有快速的颜色。

  • 它是并行的,因为它支持并行编程
  • 它是一个超集,因为每个有效的 C 或 C++ 程序也是一个有效的并发 C 程序。

这也有点奇怪,因为不是每个有效的 C 程序都是有效的 C++ 程序。

【讨论】:

  • 这就是我感到困惑的地方,我认为并行以某种方式修改了超集的含义。谢谢。
  • C++ 通常被认为是 C 的超集,因为差异通常微不足道(或者甚至没有出现)。
【解决方案2】:

这是两个不同的概念。

“超集”意味着它扩展了语言,而不删除或更改任何现有的语言功能。因此,任何有效的 C 程序(理论上)都是有效的并发 C 程序。

“并行”表示扩展支持并行执行——程序可以同时做不止一件事。

【讨论】:

    【解决方案3】:

    这篇文章是旧的。它是在上个千年写成的。它早于第一个 C++ 标准和 POSIX 实时扩展的第一个版本。

    虽然当时 C++ 在概念上存在,但无法说出 C++ 是什么。 1991 年,无论是事实上的还是官方的 C++ 标准都没有。如今,有一个 C++ 标准。

    直到最近,C++ 才正式支持并行性。 POSIX 扩展了 C 而不是 C++,严格来说,它不是超集;它在关键领域与 C 标准相冲突。这同样适用于 Microsoft 对 C/C++ 的扩展。

    在我看来,ISO/IEC 9899 和 ISO/IEC 14882 的第一个并行超集是 C11 和 C++11,严格来说,即使它们也不是超集。它们在某些领域扩展了 C/C++,但在其他领域限制了它(例如,restrict,这不是原始 C 标准中的关键字)。

    【讨论】: