当一种语言是另一种语言的平行超集时,这意味着什么?

What does it mean when one language is a parallel superset of another?

我正在阅读 a journal article about Real-Time Concurrent C,它在摘要中提到(因此你们中的任何人也可以通过 link 了解上下文)"Concurrent C, is a parallel superset of C (and of C++)"。

现在我知道超集是什么了,但是当提到编程语言时,"parallel superset" 是什么意思?

他们声称有两件事,而不是一件 "modified"。这就像说 "a quick red car";这辆车很快 红色,它没有快速的颜色。

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

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

这是两个不同的概念。

"Superset" 意味着它扩展了语言,而不删除或更改任何现有的语言功能。所以任何有效的 C 程序(理论上)都是有效的并发 C 程序。

"Parallel" 表示扩展支持并行执行 - 程序可以同时做不止一件事。

这篇文章是旧的。它写于上个千年。它早于第一个 C++ 标准和 POSIX.

实时扩展的第一个版本

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

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

的 Microsoft 扩展

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