Quanto è importante conoscere lo standard C ++?

10

Ho provato a cercare, ma non ho visto una domanda simile (o quella o la mia terminologia di ricerca non era corretta - in tal caso, sentitevi liberi di chiudere).

Sono un utente avido di SO, e noto che ci sono molti riferimenti allo standard C ++ nelle discussioni e nelle risposte - e devo ammettere che non ho mai letto questo particolare documento, il linguaggio mi fa male agli occhi. .. Quindi, la domanda è, può uno sviluppatore C ++ davvero codice per vivere senza aver mai letto questo documento? È davvero importante per noi semplici mortali che non sono nel business della scrittura di compilatori?

    
posta Nim 14.02.2011 - 21:46
fonte

9 risposte

16

No - puoi andare avanti senza problemi

Tuttavia, avrai una comprensione molto più profonda se ti prendi il tempo per impararlo. Forse segui i riferimenti di quelle domande che ti turbano e impara un piccolo pezzo alla volta.

    
risposta data 14.02.2011 - 21:50
fonte
8

Se vuoi discutere della semantica linguistica e standardese, allora lo standard è molto importante. (Non intendo questo in modo del tutto derogatorio.) Se vuoi solo ottenere il lavoro in nella lingua (rispetto a su la lingua), allora è molto meno .

Lo standard può fare un riferimento decente alla libreria standard (non tanto per il linguaggio stesso) una volta che ci si sente un po 'a suo agio, ma sono riluttante a raccomandare che venga usato in questo modo. La maggior parte delle persone sembra fare meglio con altri materiali. Detto questo, mi rivolgo allo standard più spesso che non quando devo cercare qualcosa sullo stdlib.

Tuttavia, leggere le bozze e i documenti del comitato è un modo per stare al passo con il C ++ 0x - in effetti, uno dei pochi, al momento.

Per SO e altri forum, ho esitato a citare lo standard tranne quando sembra che il poster avrebbe chiaramente e sicuramente beneficiato - forse l'hanno chiesto o penso che lo stiano implicitamente aspettando. Nella maggior parte dei casi, e specialmente con i programmatori nuovi in C ++, citarlo di solito non aiuta molto.

    
risposta data 14.02.2011 - 21:57
fonte
6

Dovresti averlo a disposizione per riferimento, ma non credo che nessuno, a parte i suoi autori, abbia letto tutto ... se anche l'hanno fatto (lavorano in gruppi concentrandosi su aree, quindi ne dubito).

Il motivo per cui dovresti averlo a disposizione è che a volte una domanda sulla correttezza del codice può essere risolta solo facendo riferimento allo standard.

    
risposta data 14.02.2011 - 21:55
fonte
2

Probabilmente è più importante sapere dove si trova lo standard e sapere quando cercare le cose.

Se non altro, dovresti controllare periodicamente per assicurarti di aderire alla versione più recente e non lasciare che il tuo codice vada alla deriva.

    
risposta data 14.02.2011 - 21:55
fonte
2

Su una grande squadra, dovresti generalmente avere una (ma solitamente non più) persona che conosce lo standard almeno ragionevolmente bene, in modo che possano fare cose come sistemare argomenti / domande su cose come se un particolare codice è conforme allo standard requisiti.

Realisticamente, tuttavia, quelle risposte devono essere mitigate dal giudizio e dall'esperienza. Lo standard (attuale) dice che export è una parola chiave e dice cosa fa. In realtà, semplicemente non funziona in questo modo con la maggior parte dei compilatori. Allo stesso modo, in molti casi, se tre persone non sono d'accordo su un particolare codice e su ciò che lo standard potrebbe dire al riguardo, potrebbe essere un segno che il codice potrebbe aver bisogno di riscrivere per essere più semplice.

Allo stesso tempo, la maggior parte dei team lavorerà di più su un'unica piattaforma e avrà uno standard (e qualcuno che abbia almeno ragionevolmente familiarità con esso) in giro per controllare che quello che stai facendo non è troppo strettamente legato a quella piattaforma può certamente essere utile.

    
risposta data 14.02.2011 - 22:08
fonte
2

Ho guadagnato il mio pane come sviluppatore C ++ per circa 4 anni in totale, senza aver letto lo standard. Infatti, per i primi due anni circa, non ho letto molto più di C ++ Primer di Stan Lippman e degli articoli MSDN. Quindi è possibile - in effetti temo che la maggior parte delle persone che producono codice C ++ non abbia nemmeno letto lavori fondamentali come Efficace C ++ et al. che io stesso ho scoperto solo più tardi.

Per essere uno sviluppatore C ++ di buona qualità, è necessario comprendere la logica interna della lingua o delle lingue (come nota Scott Meyers, C ++ è di circa 4 lingue diverse) e gli idiomi e le insidie comuni, ed essere pronto a imparare sempre di più . Leggere i thread su SO può insegnare molto sui casi d'angolo, dove a sua volta può valere la pena di leggere su parti rilevanti dello standard, se qualcuno vuole davvero scavare più a fondo. Ma leggere l'intero è probabilmente raramente necessario per la maggior parte di noi.

    
risposta data 14.02.2011 - 21:57
fonte
1

"Conoscere lo standard" è una questione di grado e non significa necessariamente memorizzare il documento originale.

Un documento standard è progettato per essere autorevole, non necessariamente accessibile. Ci sono molte fonti rimosse in un solo passaggio che sono molto più accessibili. È vero, ci sono un po 'di Whispers cinesi in questo, ma raramente è un grosso problema, certamente al livello one-step-rimosso.

Full disclosure - Devo dire che non ho mai letto lo standard. Anche se probabilmente farò lo sforzo di ottenere l'intero documento C ++ 0x quando è finalizzato.

EDIT ovviamente se Stroustrup rilascia una nuova edizione di "The C ++ Programming Language", potrei accontentarti di nuovo.

    
risposta data 14.02.2011 - 21:55
fonte
1

Quando programmavo in C ++, mi riferivo spesso allo standard di lingua per informazioni sulle funzioni di libreria standard. La libreria standard C ++ è abbastanza grande e ho trovato lo standard del linguaggio come la fonte più conveniente.

    
risposta data 14.02.2011 - 22:34
fonte
1

Avrei giurato di aver già risposto a questa domanda, ma non riesco a trovarlo. Fondamentalmente, il C ++ è diverso da Java in quanto inteso ha buchi nelle specifiche che possono essere riempite da altre specifiche della piattaforma (ad esempio POSIX, o le specifiche ABI della tua architettura, o il tuo compilatore). Pertanto, quando si rispondono a domande su siti come StackOverflow, è comune richiamare le specifiche per indicare che solo perché qualcosa funziona su un compilatore non implica che funzioni ovunque. In altre parole, molte delle ragioni per cui si fa riferimento a specifiche specifiche quando si lavora con C ++ è quello di chiarire esattamente quanto sia portatile un particolare uso della lingua.

    
risposta data 15.02.2011 - 05:56
fonte

Leggi altre domande sui tag