La migliore panoramica dei moderni paradigmi C ++? [chiuso]


16

Scrivevo ampiamente C ++ tra 8 e 10 anni fa. Da allora sono passato a C # per motivi professionali. Tuttavia, di volta in volta vedo dichiarazioni come

"Se stai ancora monitorando manualmente i riferimenti del puntatore, lo stai facendo male"

o

"Il C ++ è perfettamente sicuro fintanto che stai usando concetti moderni come RAII e non allochi la memoria manualmente come uno sviluppatore C.

Entrambi erano una procedura standard un decennio fa. Ho visto che il C ++ è stato notevolmente migliorato negli ultimi tempi; C ++ 0x in particolare sembra avere alcune nuove funzionalità. Qual è la migliore risorsa per un programmatore "C / vecchio C ++" per rimanere invischiato su modelli e pratiche "moderni" C ++?


3
Erano una procedura standard un decennio fa. Sfortunatamente, c'è ancora una parte molto significativa di sviluppatori C ++ che utilizzano la procedura standard di tre decenni fa.
DeadMG

7
Non conosco una singola risorsa, ma il C ++ moderno in sostanza si riduce a: (1) ampio utilizzo dell'STL ogni volta che è possibile invece di algoritmi a rotazione manuale, (2) utilizzo di puntatori intelligenti e contenitori STL su allocazione / deallocazione manuale , (3) uno stile di programmazione di tipo funzionale che utilizza funzioni / lambda insieme a funzioni di ordine superiore e (4) una preferenza per il polimorfismo statico basato su template rispetto alle funzioni virtuali di runtime quando possibile
Charles Salvia,

Risposte:


5

Potrebbe avere più a che fare con il materiale didattico rispetto alla maggior parte delle altre cose, ma 8-10 anni fa mi sembra che il modo in cui la lingua è stata utilizzata differiva molto da oggi. L'attenzione oggi è più focalizzata sull'utilizzo di modelli, sicurezza dei tipi e programmazione generica dove prima c'era più paura di tutto ciò e le persone si concentravano quasi esclusivamente sulla C con gli oggetti.

Anche i materiali didattici stanno cambiando. Mentre prima del libro di inizio standard C ++ ti portava attraverso printf, scanf, ecc ... non li vedi quasi nemmeno nei libri con un approccio moderno.

Alcuni buoni libri sono uno dei libri rossi. C ++ eccezionale, C ++ più eccezionale, Metaprogrammazione di modelli C ++, Design moderno C ++, C ++ accelerato ...

Penso che guardare dove lavoro attualmente possa essere un buon esempio. Sono venuto qui usando C ++ in modo moderno e sembra che la maggior parte degli sviluppatori non sappia nemmeno cosa sto facendo o perché. Creare oggetti con operator () ad esempio ... Doveva commentare l'inferno di ogni ricorrenza di bind () e alla fine gli fu detto di eliminare tutto quel codice. Non so cosa fanno gli inizializzatori ... In realtà è stato davvero strano e difficile per me.


5

Per ottenere una rapida supervisione delle funzionalità moderne presentate abbastanza bene, non sbaglieresti a visualizzare la recente presentazione di Herb Sutter , "Scrivere codice C ++ moderno: come il C ++ si è evoluto negli anni" delle funzionalità C ++ su // build /.

Parla del perché è un linguaggio migliore di C # (ovviamente - Microsoft cambia regolarmente i suoi pantaloni, e oggi indossano la moda C ++ quindi lo pubblicizzeranno, solo che hanno ipotizzato C # come la risposta alla fame nel mondo un decennio fa) ma nel fare ciò descrive tutti i bit buoni (come la gestione della memoria "automatica" e le classi STL) e continua a parlare dei nuovi bit dallo standard C ++ 0x.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.