superconjunto subconjuntos subconjunto simbolo resueltos propios propio primaria para impropio igualdad entre ejercicios diferencia conjuntos conjunto c++ c concurrency programming-languages real-time

c++ - subconjuntos - superconjunto simbolo



¿Qué significa cuando un idioma es un superconjunto paralelo de otro? (3)

Estoy leyendo un artículo de revista sobre C concurrente en tiempo real , y menciona en abstracto (para que cualquiera de ustedes pueda ver el contexto a través de ese enlace también) que "Concurrente C, es un superconjunto paralelo de C (y de C ++) ) ".

Ahora sé qué es un superconjunto, pero ¿qué quieren decir con un "superconjunto paralelo" cuando se refiere a los lenguajes de programación?


Esos son dos conceptos separados.

"Superconjunto" significa que amplía el idioma, sin quitar o cambiar ninguna característica de idioma existente. Entonces, cualquier programa C válido es (en teoría) un programa concurrente C válido.

"Paralelo" significa que las extensiones admiten ejecución paralela: los programas pueden hacer más de una cosa al mismo tiempo.


Este artículo es viejo . Fue escrito en algún milenio anterior. Es anterior al primer estándar de C ++ y el primer lanzamiento de la extensión en tiempo real a POSIX.

Si bien C ++ existía conceptualmente en aquel entonces, no había forma de decir qué era C ++. No había estándares de C ++, de facto u oficiales, en 1991. Hoy en día, existe un estándar de C ++.

C ++ no ha admitido oficialmente el paralelismo hasta hace muy poco. POSIX extiende C en lugar de C ++, y estrictamente hablando, no es un superconjunto; entra en conflicto con el estándar C en áreas clave. Lo mismo se aplica a las extensiones de Microsoft para C / C ++.

En mi opinión, los primeros superconjuntos paralelos de ISO / IEC 9899 e ISO / IEC 14882 son C11 y C ++ 11, y estrictamente hablando, incluso esos no son superconjuntos. Extienden C / C ++ en algunas áreas, pero lo restringen en otras (por ejemplo, restrict , que no era una palabra clave en el estándar C original).


Reclaman dos cosas, ninguna es "modificada". Es como decir "un coche rojo rápido"; el auto es rápido y rojo, no tiene un color rápido.

  • Es paralelo, porque admite programación paralela
  • Es un superconjunto, porque cada programa C o C ++ válido también es un programa válido de Concurrent C.

Eso es un poco extraño también, ya que no todos los programas C válidos son válidos en C ++.