Qual è il miglior codice sorgente C ++ da leggere per un principiante? [chiuso]


25

Sto cercando di migliorare la mia tecnica di codifica c ++ leggendo il codice sorgente c ++. Quale progetto open source consiglieresti? Il codice di Boost C ++ Libraries è buono?


11
Perché chiudere i voti? La domanda è chiara e concreta.
Nemanja Trifunovic,

Implementazioni STL
dukeofgaming

12
@dukeofgaming: hai dimenticato il tag "ironico".
Doc Brown,

1
Beh, immagino che il codice sorgente boost non sia una buona idea per un principiante. Probabilmente affogherai in modelli e tecniche SFNINAE che non capisci ancora il loro funzionamento e le ragioni.
Chris dice di reintegrare Monica l'

7
I voti stretti sono perché questa domanda, sebbene concreta, non è costruttiva. Il risultato sarà solo un elenco del progetto di tutti, in cui nessuna risposta può essere "la risposta". Per ulteriori informazioni, consulta le FAQ .
Walter

Risposte:


27

Consiglierei qualsiasi codice C ++ open source di Google, come il seguente:

Vantaggi dell'utilizzo del codice Google:

  • È scritto secondo standard elevati ed è sottoposto a peer review (diversamente da alcuni codici open source).
  • Ha una buona documentazione per gli sviluppatori (che semplifica la raccolta e la comprensione).
  • Utilizza alcune tecniche C ++ moderatamente avanzate (e quindi è buono per l'apprendimento).
  • Probabilmente è più facile da capire di Boost perché non si basa molto sulla metaprogrammazione di template avanzata e sulla metaprogrammazione del preprocessore e non è appesantito tanto con innumerevoli hack di compatibilità del compilatore e casi speciali.

La Guida allo stile di Google C ++ che utilizza il codice C ++ di Google è generalmente buona, ma ha alcuni bit abbastanza insoliti (come alcune delle loro linee guida per la denominazione o le loro eccezioni di non consentire), quindi tieni presente che il loro codice C ++ differirà sotto questi aspetti da quello che vedrai sul campo.


9

Non consiglierei di leggere una base di codice. Consiglio di leggere le domande frequenti su C ++ . C'è anche un libro eccellente che accompagna il sito. Il modo migliore per migliorare le tue abilità di codifica C ++.


13
-1: Non sono molto d'accordo. Leggere il codice di altre persone è una parte molto importante per migliorare le proprie capacità di programmazione. Tuttavia, correggere i bug in quel codice è ancora meglio.
Jan Hudec,

6
@Jan Accordo completo da parte mia. Tuttavia, la maggior parte del codice sorgente C ++ fa schifo e impiega tutti i tipi di modelli cattivi che insegnerebbero tecniche sbagliate. Conoscete un buon progetto OSS che può servire da lettura introduttiva?
Konrad Rudolph,

Mi riferivo a questo: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/… ma ora posso vedere che ci sono anche altri libri.
Onorio Catenacci,

6

Leggere il codice C ++ pulito esistente è un ottimo modo per imparare la lingua.

Il codice nel toolkit OpenFST è molto pulito, per esempio. È leggibile e utilizza funzionalità leggermente avanzate senza esagerare.

Il boost, d'altra parte, può essere un po 'difficile da leggere, in parte perché usano trucchi C ++ che sono difficili da capire e perché spesso cospargono il codice con soluzioni alternative diverse per diverse versioni del compilatore.


6

Suggerirei di leggere " C ++ efficace " di Scott Meyers e di usare i suggerimenti che ha in piccoli programmi di giocattoli.


2
Non imparerai nulla sui piccoli programmi giocattolo. Devi scrivere programmi che risolvano problemi reali. Non devono essere grandi, non riuscirai a scrivere grandi programmi da solo, ma non devono essere solo giocattoli.
Jan Hudec,

@JanHudec: Quello che descrivi è ciò che chiamo programmi giocattolo : un pezzo di codice che risolve un singolo problema. Quindi, per esempio, un algoritmo di Runge-Kutta sarebbe un "programma giocattolo", mentre una simulazione di N-body completa non lo sarebbe.
Sardathrion - Ripristina Monica l'

2
Questi sono entrambi "programmi giocattolo". Perché i problemi sono esempi inventati di un problema a meno che tu non stia facendo simulazioni numeriche e la maggior parte dei programmatori no. Il problema reale è qualcosa che tu o qualcuno che conosci userai davvero. Probabilmente avrà una GUI o almeno una complessa analisi della riga di comando e manipolerà i file o si connetterà alla rete e utilizzerà alcune librerie esistenti e non avrà algoritmi non banali, perché i programmi al 99% non lo fanno.
Jan Hudec,

1
@JanHudec stai dicendo che una persona non impara nulla lavorando prima con problemi piccoli e vincolati? Se i programmatori saltano direttamente in problemi grandi e complicati senza apprendere almeno alcuni principi di base e alcuni modi di dire linguistici di base, è così che finiamo con queste enormi app "Big Ball of Mud".
Onorio Catenacci,

3
Non sono sicuro che questo risponda alla domanda, ma ogni programmatore C ++ dovrebbe leggere quel libro (e i suoi sequel.)
Gort the Robot

2

Prova a leggere qualcosa che esiste da anni ed è di grandi dimensioni. Ci vorranno alcuni mesi per capire il codice e farci qualcosa.

Firefox, Thunderbird, OpenOffice.org, LibreOffice vengono in mente. Ci dovrebbero essere anche molti altri simili. Questi progetti vengono eseguiti su molti sistemi operativi e piattaforme hardware. Inoltre, devono segnare sulla leggibilità. Questi potrebbero essere le tecniche che cerchi.


0

Ancora meglio che leggere il codice sarebbe lavorare con quel codice sotto forma di correzione di bug e aggiunta di piccoli miglioramenti qua e là. Scegli un programma, preferibilmente uno che usi, iscriviti alla mailing list, inizia a cercare il loro bug tracker e prova a diagnosticare alcuni bug. Chiedi alla mailing list se trovi la soluzione per qualcosa che sia ragionevole o quando rimani bloccato. Ciò ti darà alcuni obiettivi specifici durante la lettura del codice, ti costringerà a capire davvero ed è quello che farai la maggior parte del tempo in qualsiasi lavoro.

Puoi forse guardare alcune applicazioni di KDE. La maggior parte sono scritti in C ++ e puoi iniziare con uno più piccolo prima.


-3

Sì, il codice di Boost C ++ Libraries è una grande risorsa da cui imparare, se non uno dei migliori del pianeta. Tuttavia, per un principiante, l'apprendimento dal codice Boost può rendere la curva di apprendimento molto ripida. Se vuoi davvero provare a leggere Boost, inizia con alcune librerie piccole e semplici come Boost.Array .


2
Penso che sarebbe come suggerire che un buon modo per imparare a sciare è comprare colpendo le piste con doppio diamante nero.
Gort il robot il

@StevenBurnap, per favore, leggi ancora una volta la mia risposta e fai notare quel ridicolo suggerimento che ho fatto. Smettila di cazzare, ti piacerebbe, e segnalare una libreria completa migliore che vale la pena leggere per i principianti. Arriverete alla conclusione che i migliori esempi adatti ai principianti provengono da un libro per principianti.
mloskot

-3

Prova a leggere il PDF C ++. È gratuito e ho imparato C ++ da esso, anche se non avevo altra esperienza di programmazione, e ho solo 14 anni. Incredibile.


3
Puoi aggiungere un link ad alcune risorse relative a questi progetti?
Giorgio,

3
Quale PDF C ++ intendi?
Martijn Pieters,
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.