Что это означает, когда один язык является параллельным надмножеством другого?
Я читаю статью в журнале о реальном времени в режиме реального времени, и она упоминает в абстрактной форме (так что любой из вас может видеть контекст через эту ссылку как хорошо), что "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).