Descrizione di alto livello di come sono sviluppate le funzionalità sperimentali di C ++?

2

Herb Sutter in un video risponde a una domanda la proposta di concetti è stata presa in considerazione per C ++ 11 e dalle sue osservazioni sembra che più gruppi abbiano offerto implementazioni di prototipi, ma tutti hanno lasciato spazio ai tempi di compilazione lenti. Il commento mi ha sorpreso perché suggerisce che, almeno in alcuni casi, i prototipi in fase di sviluppo non sono solo delle dimostrazioni di concetto - sono addirittura tenuti a esibirsi. Tutto il lavoro che devo svolgere mi ha incuriosito.

Per le lingue mature, in particolare C ++, come vengono sviluppate le funzionalità del linguaggio sperimentale? È molto diverso dallo sviluppo di un compilatore che implementa uno standard? Uno sviluppatore ha la sensazione che funzionerà e funzionerà o anche se fosse possibile? Quali sono le parti che richiedono più tempo e le parti sono sorprendentemente più facili di quanto ci si potrebbe aspettare?

La domanda non è ciò che fa il comitato per gli standard C ++, ma piuttosto la parte che viene prima. Quando viene messa a punto un'implementazione sperimentale per una proposta e non ci sono regole completamente consolidate, come viene fatta la salsiccia?

Non sono uno sviluppatore professionista di compilatori né mi aspetto risposte con account passo-passo. Mi piacerebbe un'idea di alto livello su come questo sarebbe stato fatto o se ci sono dei modelli generali. Non so cosa aspettarmi dalle risposte, ma anche se non ci sono regole per il processo e il piccolo numero di persone che lo fanno si limitano a gestirlo e poi, per le cose che hanno funzionato, scrivono la "versione ufficiale" come una proposta, quella risposta sarebbe comunque informativa.

    
posta Praxeolitic 12.06.2014 - 15:02
fonte

1 risposta

3

In linea di principio è sufficiente avere un'implementazione prototipo, o anche solo per "provare" che una funzionalità è implementabile. Quindi il processo non è molto diverso da quello che sarebbe per implementare qualsiasi funzionalità nel compilatore, ma dal momento che si tratta di un prototipo è possibile tagliare alcuni angoli. Nessuno si aspetta velocità di produzione o risultati da questi prototipi.

Il problema con il pre-C ++ 11 Concepts non era che i prototipi fossero lenti, ma nessuno era sicuro se e in che modo le prestazioni potessero essere significativamente migliorate, dati gli algoritmi coinvolti e l'estensione dei dati richiesti.

Il lavoro di ottenere una funzionalità (anche piccola) nello standard è significativo. Devi fondamentalmente

  1. motivare il motivo per cui vuoi la funzione (mostrando un problema che non può essere risolto / è più difficile da risolvere senza di esso)
  2. prova che la funzionalità risolve veramente il problema (l'esperienza di implementazione aiuta qui)
  3. prova che il problema è reale e pertinentemente prevalente (avere qui le diverse soluzioni utilizzate nei progetti reali)
  4. prova che migliorerà la lingua più dei costi aggiuntivi di complessità (spesso molto controversi)
  5. prova che è (efficientemente) implementabile (il prototipo aiuta enormemente)
  6. prova che non esiste una soluzione più semplice (cioè una logica di progettazione ampiamente studiata)
  7. prova che non esiste una soluzione più generale
risposta data 12.06.2014 - 16:22
fonte

Leggi altre domande sui tag