Что это означает, когда один язык является параллельным надмножеством другого?

Я читаю статью в журнале о реальном времени в режиме реального времени, и она упоминает в абстрактной форме (так что любой из вас может видеть контекст через эту ссылку как хорошо), что "Concurrent C, является параллельным надмножеством C (и С++)".

Теперь я знаю, что такое надмножество, но что они подразумевают под "параллельным надмножеством" при обращении к языкам программирования?

Ответ 1

Они утверждают две вещи, а не одну вещь, которая "модифицирована". Это как сказать "быстрый красный автомобиль"; автомобиль быстрый и красный, он не имеет быстрого цвета.

  • Параллельно, поскольку поддерживает параллельное программирование
  • Это супер-набор, потому что любая действительная программа C или С++ также является допустимой программой Concurrent C.

Это немного странно, так как не всякая действительная C-программа является допустимой программой на С++.

Ответ 2

Это две отдельные концепции.

"Superset" означает, что он расширяет язык, не удаляя или не изменяя существующие функции языка. Таким образом, любая действительная программа C (теоретически) является действительной программой Concurrent C.

"Параллельный" означает, что расширения поддерживают параллельное выполнение - программы могут выполнять несколько операций одновременно.

Ответ 3

Эта статья old. Это было написано в предыдущем тысячелетии. Он предшествует первому стандарту С++ и первой версии расширения реального времени для POSIX.

В то время как С++ существовал концептуально тогда, не было никакого способа сказать, что такое С++. В 1991 году не было стандартного C++, де-факто или официального. В настоящее время существует стандарт С++.

С++ официально не поддерживал parallelism до недавнего времени. POSIX расширяет C, а не С++, и, строго говоря, это не суперсет; он противоречит стандарту C в ключевых областях. То же самое относится к расширениям Microsoft для C/С++.

По-моему, первые параллельные надмножества ISO/IEC 9899 и ISO/IEC 14882 являются C11 и С++ 11, и, строго говоря, даже те, которые не являются суперсетями. Они расширяют C/С++ в некоторых областях, но ограничивают его в других (например, restrict, который не был ключевым словом в исходном стандарте C).