In che modo il comitato per gli standard C ++ mette alla prova le loro idee di progettazione?

29

Il comitato C ++ prova le sue nuove specifiche di progettazione con una specie di compilatore prototipo prima di rilasciare un nuovo standard? O rilasciano uno standard che è, in effetti, solo teorico fino a quando i grandi compilatori lo implementano?

    
posta Matthew James Briggs 20.03.2016 - 20:32
fonte

1 risposta

26

Il Comitato standard C ++ ha statuto e regole, ma la maggior parte di questi sono centrati attorno alla struttura dell'organizzazione, come presentare proposte, votare, pubblicare lo standard, ecc. e non tanto sui dettagli tecnici dello standard stesso né su come esso possa essere testato.

Non esiste un requisito formale per "testare" una funzionalità o il suo design per quanto ne so. C ++ è anche un po 'unico nel fatto che non esiste un'implementazione di riferimento o "primaria" (ad esempio Microsoft CLR, Oracle JDK, Zend PHP). Tuttavia, i membri del comitato sono costituiti da molte organizzazioni con una profonda conoscenza della lingua e dell'implementazione del compilatore. Ad esempio, se segui quel link precedente, vedrai i rappresentanti di Microsoft e Intel che hanno entrambi compilatori C ++ ben rispettati. Sono coinvolti anche Red Hat e alcune altre aziende che contribuiscono al GCC.

Quando proponi una nuova funzione, i membri del comitato hanno già una buona idea se sia fattibile, se potrebbe entrare in conflitto con altre funzionalità o causare grammatica per essere ambigua in un modo che complica l'analisi inutilmente. ( ecco una buona domanda sulla grammatica del C ++ )

La risposta breve è "no, il comitato non richiede di testare i propri progetti usando la prototipazione". Tuttavia, non c'è molto bisogno perché i membri del comitato sono esperti in C ++ che capiscono tutti i dettagli fini a un livello che la stragrande maggioranza dei programmatori non fa. Ricorda, queste persone sono architetti di lingue che sono esperti di teoria del linguaggio e progettazione di compilatori.

Dato il coinvolgimento dei produttori di compilatori nel processo, è possibile che uno o più di loro possano prototipare una nuova funzionalità, ma ancora una volta, non vi è alcun requisito formale per questo né è qualcosa che io ho letto in documenti disponibili al pubblico dal Comitato C ++.

Inoltre tendono ad essere molto conservativi, aggiungendo in modo incrementale nuove funzionalità che hanno una domanda nel mondo reale senza specificare grandi quantità di nuove funzionalità che potrebbero rivelarsi rischiose. In effetti negli ultimi anni hanno aggiunto nuove funzionalità che esistevano come estensioni proprietarie o librerie open-source che già funzionano nel mondo reale. Ad esempio, C ++ 11 e C ++ 14 incorporano parti di Boost , che è già stato testato nel mondo reale in più compilatori e ambienti di esecuzione. Non è necessario testare qualcosa che è già stato testato.

    
risposta data 20.03.2016 - 21:05
fonte

Leggi altre domande sui tag