Scusate, ma… questa pagina è un po’ vecchia. Stiamo aggiornando le risorse consigliate.

Se sei un principiante e vuoi pubblicare le tue domande: entra nel nostro subreddit in Italiano dedicato al C++, scrivi un messaggio di testo e taggalo con flair “principanti”:

Ricordati che un bravo Neofita non pubblica post del tipo “mi risolvete l’esercizio?”, ma piuttosto pone domande dettagliate su quello che non ha capito 🙂

Ci trovi anche su Discord.

 

Una domanda ricorrente è “da dove iniziare per imparare a programmare in C++?”. Esistono tante scuole di pensiero e risposte possibili, anche noi di ++it desideriamo dare la nostra interpretazione.

Molto dipende dal livello di programmazione e dalle conoscenze di chi pone la domanda, se già si conoscono altri linguaggi, se si desidera approfondire argomenti avanzati, ecc. La pagina è quindi divisa in diverse sezioni che aiutano ad orientarsi in base ad esigenze e argomenti differenti.

Tre raccomandazioni importanti:

  • Dove possibile, tendi sempre a utilizzare risorse moderne (>= C++11)
  • Non spaventarti se la maggior parte delle risorse sono in Inglese (ma ti indicheremo quelle in italiano)
  • Imparare a programmare in C++ ≠ Imparare a programmare in C
Per programmare in C++ non serve conoscere il C
 

Ebbene sì, sfatiamo un mito! Il C è quasi un subset del C++ ma in realtà è un linguaggio molto più scarno, privo di moltissimi costrutti e meccanismi supportati dal C++. Il C è un linguaggio adatto a fare Systems Programming, il C++ è un linguaggio di più alto livello ma adatto a fare sia Systems Programming che Application Programming. Programmare in C++ con uno stile C-like è come comprare una PS4 e usarla solo per giocare con dei titoli della PS3!

Qualche esempio concreto? Si vedono spesso in giro stringhe fatte come char*, quando invece potrebbe andar benissimo una std::string. Oppure array dinamici gestiti manualmente con T*, quando un std::vector<T> è quasi sempre una scelta appropriata.

Se non ti abbiamo ancora convinto leggi questo breve articolo di Bjarne Stroustrup! Oppure dai un’occhiata a questa presentazione di Kate Gregory!

Una raccomandazione sul materiale pre-C++11

 

Come forse saprai il C++ si è trasformato con l’introduzione del C++11, mutando molti idiomi e semplificandosi tantissimo. Per questa ragione molti libri “classici” del passato (pre-C++11) ora mancano delle “ultime novità”. Tuttavia, alcuni sono ancora dei validissimi strumenti (li indicheremo con la dicitura “old but gold“).

La nostra raccomandazione è di imparare partendo dal nuovo standard e solo in seguito – eventualmente – spingersi su materiale “più datato”. In questo modo si avranno più strumenti per adattare il vecchio al nuovo. Esistono delle eccezioni ovviamente, ma in questa fase transitoria occorre un po’ di pazienza! Quindi in caso di dubbi valgono le raccomandazioni di sempre: cercare su Internet, postare una domanda sul forum, ecc.

Catalizzatori di risorse/news
 

Il bravo C++-ista è sempre interessato all’evoluzione del linguaggio e delle tecnologie ad esso correlate! Oltre a seguire italiancpp, segue i siti internazionali più importanti (si raccomanda di seguirli anche su twitter):

Reference ufficiali
 

 

Da dove iniziare?

Segue il set minimo di risorse consigliate per iniziare. Abbiamo classificato alcune richieste comuni in cui il lettore potrà identificarsi. Col tempo e grazie anche al feedback degli utenti ne inseriremo delle altre. Le sezioni successive aiuteranno ad “andare oltre”.

Vorrei un’introduzione di alto livello sul linguaggio e sulla sua evoluzione

 

  • Libro gratuito: “C++ Today” di Jon Kalb & Gašper Ažman
Desidero imparare a programmare e ho scelto il C++ come linguaggio

 

Sono un programmatore, vorrei imparare il C++

 

Sono un programmatore C++ “old-school” (pre-C++11), vorrei modernizzarmi

 

Sono un programmatore C#, vorrei imparare il C++

 

Sto imparando il C++11/C++14/C++1z, cosa non devo perdermi?

 

 

Beyond the basics

Se sei arrivato/a qui hai comunque letto “Effective Modern C++” di Scott Meyers (Esiste la versione italiana).

Perfezionare la conoscenza del linguaggio

 

Best Practices & Idiomi

 

Approfondire lo studio della STL

 

 

Argomenti avanzati

Programmazione multi-thread & multi-core

 

Template Metaprogramming

 

 

Altre risorse online