2015-05-21 13 views
11

Sto leggendo a journal article about Real-Time Concurrent C, e menziona in astratto (quindi ognuno di voi può vedere il contesto attraverso quel collegamento) che "Concurrent C, è un superset parallelo di C (e di C++)".Che cosa significa quando una lingua è un superset parallelo di un'altra?

Ora so cos'è un superset, ma cosa si intende per "superset parallelo" quando si fa riferimento ai linguaggi di programmazione?

+1

"Superset" indica tutte le funzionalità C più funzioni. "Parallelo" significa l'aspetto della concorrenza. – CoryKramer

risposta

19

Stanno rivendicando due cose, non una cosa che è "modificata". È come dire "una macchina rossa veloce"; l'auto è veloce e rossa, non ha un colore veloce.

  • E 'in parallelo, in quanto supporta la programmazione parallela
  • Si tratta di un super-set, perché ogni programma in C++ valido C o è anche un programma C Concurrent valido.

Anche questo è un po 'strano, poiché non tutti i programmi C validi sono un programma C++ valido.

+0

Ecco dove ero confuso, stavo pensando che il parallelo stesse in qualche modo modificando cosa intendesse il superset. Grazie. – pepers

+0

Beh, forse è un'estensione che hanno per entrambi ... – Deduplicator

+1

Il C++ è spesso considerato come un superset di C, poiché le differenze sono * spesso * banali (o non arrivano nemmeno). – immibis

9

Ecco due concetti separati.

"Superset" significa che estende la lingua, senza rimuovere o modificare le caratteristiche della lingua esistente. Quindi qualsiasi programma C valido è (in teoria) un valido programma Concurrent C.

"Parallelo" significa che le estensioni supportano l'esecuzione parallela - i programmi possono fare più di una cosa allo stesso tempo.

6

Questo articolo è vecchio. È stato scritto in qualche millennio precedente. Precede il primo standard C++ e la prima versione dell'estensione in tempo reale di POSIX.

Mentre C++ esisteva concettualmente, non c'era modo di dire cosa fosse C++. Non esisteva uno standard C++, di fatto o ufficiale, nel 1991. Oggi esiste uno standard C++.

C++ non ha ufficialmente supportato il parallelismo fino a poco tempo fa. POSIX estende C piuttosto che C++ e, in senso stretto, non è un superset; è in conflitto con lo standard C in aree chiave. Lo stesso vale per le estensioni Microsoft a C/C++.

A mio parere, i primi supersets paralleli di ISO/IEC 9899 e ISO/IEC 14882, sono C11 e C++ 11, e in senso stretto, anche quelli non sono superset. Estendono C/C++ in alcune aree, ma lo restringono in altri (ad es., restrict, che non era una parola chiave nello standard C originale).

Problemi correlati