Assieme a “Mamma come si fanno i bambini?” è forse la domanda più ricorrente del giovane virgulto che, spaesato, muove i primi timidi passi nel mondo della programmazione.
Per amor del cielo non iniziare dal C, mio giovane padawan, perché il C (e il C++) sono il lato oscuro della programmazione. “Il C ti costringerà a pratiche che molti considerano… innaturali”.
Troppo complesso, troppo vicino alla macchina e non al tuo modo di pensare, troppi concetti che riguardano l’architettura dei dispositivi hardware e delle CPU con le quali dovrai farei i conti ma che ancora non conosci. Ti distraggono dall’imparare a pensare alla soluzione di un problema come un programmatore umano.
Perché chiunque, caro mio, è in grado di scrivere codice che una macchina è in grado di comprendere, ma solo i buoni programmatori sono capaci di scrivere codice che un essere umano è in grado di comprendere.
Ti serve un linguaggio semplice, ad alto livello, che ti nasconda i dettagli a basso livello, che ti costringa piuttosto a imparare buone pratiche di programmazione ad oggetti al di là dei dettagli specifici di un’architettura, che ti scolpisca nella mente l’idea che la programmazione non e’ altro che un esercizio di gestione della complessità. I problemi da risolvere sono complessi, devi imparare a renderli semplici. E fornire soluzioni.
Per il programmatore pragmatico non c’è spazio per le guerre di religione: ignora i falsi profeti del C che cercheranno di imbonirti a colpi di puntatori e gestione della memoria dinamica. Le alternative sono varie e tutte di buon livello: accogli fra le tue braccia Java o C# se vuoi imparare un linguaggio con la sintassi C-like. Oppure l’esotico Python se ti incuriosiscono i linguaggi dinamici con le loro promesse di liberarti dal giogo della forte tipizzazione dei dati.
Disciplina e semplicità sono le chiavi del successo, mio futuro guerriero del codice. Quando avrai imparato i rudimenti, ti avvicinerai, se necessario, al lato oscuro del C e del C++ per domarlo e aggiungere nuovi strumenti al tuo bagaglio.