Uso principalmente C++ per fare calcoli scientifici e ultimamente mi sono limitato a un sottogruppo di caratteristiche C++ molto simile a C; vale a dire, nessuna classe/eredità eccetto il complesso e STL, i modelli usati solo per trovare/sostituire i tipi di sostituzioni e alcune altre cose che non riesco a mettere in parole in cima alla mia testa. Mi chiedo se ci siano sottoinsiemi ufficiali o ben documentati del linguaggio C++ che potrei considerare come riferimento (oltre che come logica) quando seleziono e scelgo quali funzioni utilizzare.Sottosistemi di linguaggio C++ ufficiale
risposta
C'è Embedded C++. Sembra per lo più simile a quello che stai cercando.
C++ incorporato mai rilevato; una volta che hai massacrato così tanto la lingua, non ha alcun vantaggio rispetto a C. –
@Mike, alcuni sostengono che non sia mai esistito. –
Bene, gli ultimi sviluppi (TR1, C++ 0x) in C++ lo hanno reso molto generico, consentendo di eseguire una programmazione funzionale imperativa, OOP o anche (limitata) in C++. Le librerie come Boost ti permettono anche di fare una meta-programmazione basata su template dichiarativa molto potente.
Penso che Boost sia la prima cosa da provare in C++. È una libreria completa, che include anche diversi moduli che consentono di programmare in stile funzionale (Boost.Functional) o di effettuare una meta-programmazione dichiarativa in fase di compilazione (Boost MPL).
Sottoreti, non superset. –
Beh, dipende da ciò che chiamate un set - se solo STL, quindi Boost è davvero un superset. Ma il mio punto era che Boost.Functional e Boost.MPL sono sottoinsiemi di C++ come linguaggio. –
Originariamente intendevo sottoinsieme come in un sottoinsieme delle caratteristiche del linguaggio stesso. Boost sembra richiedere un set completo di funzionalità C++. –
Gli sviluppatori GCC stanno per consentire alcune funzionalità C++. Non sono a conoscenza di alcuna linea guida ufficiale, tuttavia, ma sono abbastanza sicuro che ne definiranno alcuni. Dai un'occhiata allo initial report sulla mailing list.
Non molto tempo fa ho ascoltato questo podcast SE-Radio - Episode 152: MISRA with Johan Bezem, che introduce MISRA, linee guida standard per C e C++ per garantire una migliore qualità, provare a guardarlo.
Google pubblica la sua guida di stile C++ interna, che viene spesso definita come un sottoinsieme: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml. Ben Maurer, la cui azienda reCAPTCHA è stata acquisita da Google, lo descrive come segue in this post on Quora:
Che, fondamentalmente, può pensare di sottoinsieme C++ di Google come C, più un po 'di zucchero:
La possibilità di aggiungere metodi per strutturare
ereditarietà di base.
di incasso e di stringa classi
ambito di gestione delle risorse basato.
Pubblicano anche uno strumento di niente, cpplint.py.
OpenCL ha utilizzato C per la scrittura di kernel, ma hanno aggiunto di recente (o sarà presto aggiungere) binding C++ e Java, forse. OpenCL lascia fuori un certo numero di feature di robbing delle prestazioni di C. Excluded sono cose come i puntatori di funzione e la ricorsione. Puntatori intelligenti e polimorfismo creano anche un sovraccarico.
Restrizioni C: SIMD programming languages
Leggermente fuori tema: Ecco una buona discussione il confronto OpenCL con CUDA usando C. OpenCL or CUDA Which way to go?
Il mio punto è che OpenCL limita ciò che è permesso usare in C e C++. Molte funzionalità sono rimosse o non supportate o offrono supporto limitato. Tuttavia, questi sottoinsiemi di quei linguaggi sono ancora abbastanza utili e consentono di scrivere tutti i tipi di simulazioni e software da utilizzare su GPGPU, DSP, FPGA e CPU multicore. – Max
- 1. Omettere alcuni sottosistemi C++
- 2. MongoDb C# aggiornamento di massa pilota ufficiale
- 3. C# come linguaggio di scripting
- 4. linguaggio di scripting per C++
- 5. Qual è il Qt SDK ufficiale (C++)?
- 6. Dove posso trovare il file di grammatica ufficiale per il linguaggio di programmazione Java 7?
- 7. Iterator in linguaggio C
- 8. Estensione del linguaggio C#?
- 9. linguaggio C: significato dell'operatore "#"?
- 10. IDE linguaggio C gratuiti?
- 11. Chiama C++ (C) dal linguaggio D
- 12. Esistono modelli nel linguaggio di programmazione C?
- 13. C# è un linguaggio di alto livello?
- 14. Creare un linguaggio di programmazione con C#
- 15. Utilizzo di C# come linguaggio di scripting per un'applicazione C#
- 16. CodeBlocks, GCC: cambia linguaggio di progetto c e C++?
- 17. Documentazione ufficiale per MVC3
- 18. Upserting in Mongo DB usando ufficiale C# conducente
- 19. Qual è lo stato ufficiale del supporto C99 in VS2013?
- 20. specifiche del linguaggio PHP?
- 21. Perché C non è un linguaggio dinamico?
- 22. Estensione del linguaggio C#, quanto sforzo/guadagno?
- 23. UTF-8 -> ASCII in linguaggio C
- 24. Estensione del file in linguaggio C
- 25. Chiamare funzioni C da linguaggio assembly x86
- 26. Quale parte del linguaggio C# è .ForEach()?
- 27. individuazione del carattere nella stringa linguaggio C
- 28. Esiste un modo ufficiale/non ufficiale per programmare gli script Unity in python?
- 29. Mirroring del repository ufficiale di pacchetti nuget
- 30. socket.io problemi di connessione client ufficiale?
Qual è la tua motivazione per definire un sottoinsieme del C++? Perché non usare solo le funzionalità che ti aiutano e lascia da solo le funzionalità che non lo fanno.È potenzialmente molto lavoro definire un sottoinsieme coerente di funzionalità; qual è il guadagno? –
Non molto, ero solo curioso di sapere se questo genere di cose sia mai stato ben definito. Mi piace mantenere le cose facilmente interfacciabili con C e Fortran, e volevo le opinioni di altre persone su alcune delle funzionalità linguistiche. –