Preambolo (Salta se non ti piace leggere)
Ho studiato C / C ++ a scuola per un anno e tutti i compiti del libro, dopo aver letto i capitoli, non erano troppo difficili da implementare. Alcuni esempi di programmi che ho scritto sono tipi di dati astratti come alberi binari, code, stack, elenchi e altri tipi di programmi: ricerca palindromo, crittografia e decrittografia di file e altri programmi simili del primo anno. Come ho detto, dopo aver letto i capitoli, sono stato facilmente in grado di implementare e comprendere gli algoritmi utilizzati per risolvere molti dei problemi. Quindi mi sento a mio agio con la sintassi e la logica di questi piccoli problemi gestibili.
Sfondo (puoi saltare questa parte)
In preparazione per il mio trasferimento a UCSD in autunno, ho installato Linux sulla mia macchina e sono passato a usare Vi - decisamente un cambiamento da Visual Studio. Per mantenere la mia mente nitida e avventurarmi in programmi del mondo reale, ho deciso di scaricare il sorgente per una famosa utility per console Linux chiamata Wget ( link ), con l'intento di riscrivere il programma come una versione orientata agli oggetti in C ++. La sfida che sto affrontando è che il programma, pur essendo una semplice utility single-purpose, è ancora abbastanza enorme quando si fissa il codice.
... La domanda (NON puoi saltare questa parte)
Come si inizia a guardare un programma che non hanno scritto e studiato per cercare di riscriverlo, modificarlo, ecc.? Immagino di cercare consigli / guida su un approccio di tipo divide et impera per studiare un programma scritto da altre persone per cercare di riscriverlo. Capisco che programmi voluminosi come OpenOffice, il kernel Linux, Gnome, ecc. Non rientrino in questo tipo di "Pensi che li scriverò di nuovo". Ma piccole utility che immagino fare.