Come imparare a programmare (e da CS50x).
Qual è il modo migliore per imparare a programmare? Come posso fare per ottenere il massimo dai corsi che seguo? Questo articolo ha una spiegazione dettagliata che risponderà a queste domande e altro ancora!
Quando impari a programmare, se hai appena iniziato, probabilmente avrai alcune idee sbagliate. Spero che i punti di questi articoli aiutino a chiarire queste idee sbagliate e ti impediscano di commettere gli stessi errori che ho fatto io.
I. Come affrontare l'apprendimento del codice (e l'apprendimento dal corso CS50x):
1. Non avere fretta:
Questo potrebbe essere il consiglio più semplice ma cruciale che potrei dare agli studenti.
Quando stavo imparando C, come la maggior parte degli studenti, ero competitivo. Volevo essere il primo tra i miei coetanei e compagni di studio a "completare" C. Ho cercato di velocizzare le lezioni e completare i set di problemi il prima possibile.
Alla fine della terza settimana di lezioni (in CS50x), sono diventato frustrato dalla mia incapacità di risolvere senza problemi i set di problemi entro un'ora (un obiettivo irrealistico). Ho dovuto prendermi una pausa per schiarirmi le idee e non essere perseguitato dall'obiettivo di "completare" C il prima possibile.
È stato più tardi, quando ci sono tornato e ho svolto pazientemente il Problem Set 4 (in CS50x), che mi sono reso conto che stavo andando nel modo sbagliato.
Non "completi" C o qualsiasi altro linguaggio di programmazione come faresti con un argomento in una materia scolastica. La conoscenza che acquisisci dall'apprendimento del C ti aiuterà per molto tempo e devi affrontarla tenendo presente questo.
Inoltre, non immergerti in alcun esercizio di codifica o serie di problemi, paragonandolo a un problema. Anche la velocità con cui si completa una serie di problemi non indica una maggiore comprensione dell'argomento.
I set di problemi in CS50x non sono problemi. Ogni serie di problemi ti insegna qualcosa, dalla costruzione della logica alla comprensione delle rappresentazioni bitmap delle immagini (e come manipolarle).
Gli insiemi di problemi dovrebbero essere programmi o progetti dati agli studenti da cui imparare: una lezione in sé. Cerca di imparare qualcosa di nuovo da ogni esercizio di programmazione che fai. Sarai sorpreso di quanto possano insegnarti questi insiemi di problemi apparentemente piccoli.
La programmazione non è qualcosa che impari più velocemente allenandoti più duramente e più velocemente. Richiede pratica costante, pazienza e concentrazione. Non puoi aspettarti di escogitare codici di soluzione per serie di problemi in modo super veloce solo perché capisci abbastanza bene un concetto.
Quindi, impara e programma con pazienza. Ripassa il contenuto che ti è stato fornito in CS50x (o qualsiasi altro materiale a cui ti riferisci) più volte se necessario per capire qualcosa.
Quando esegui un esercizio di codifica, non cercare mai soluzioni solo perché non riesci a pensare a una risposta o il tuo programma ha fallito alcune volte. Prova il programma un paio di volte. Se ancora non lo ottieni dopo alcuni tentativi (e inizia a diventare frustrante), ti suggerisco di prenderti una pausa da quel problema. Vai al prossimo argomento o esercizio.
Successivamente, torna di nuovo allo stesso problema. Se non sei ancora in grado di trovare una risposta, puoi cercare una soluzione. Tuttavia, dovresti leggere e comprendere il codice della soluzione e, una volta compreso, tornare indietro e provare a codificare il programma da solo, senza guardare la soluzione.
Potresti completare gli argomenti più velocemente se ti affretti. Tuttavia, avrai sempre dubbi sparsi e potresti non avere piena fiducia negli argomenti che hai imparato. A me sembra disastroso e non consiglio a nessuno di imparare da CS50x o da qualsiasi altro corso in questo modo.
2. All'infinito:
Un certo numero di serie di problemi richiede una lettura di base per aiutarti a capirli meglio. Dovresti fare molte ricerche per questi.
I compiti complessi che i computer potrebbero svolgere ci sembrano difficili da immaginare. Come può un essere umano creare un computer, una macchina con una potenza di elaborazione così enorme? Gli sforzi e le conoscenze messe in campo per costruire queste cose sembrano incredibilmente intricati e complicati. Non osiamo pensare che potremmo mai essere in grado di comprenderlo nel breve tempo che abbiamo.
Tuttavia, tutte queste complesse funzioni che i computer sono in grado di svolgere oggigiorno sono il risultato di una logica sviluppata e applicata dagli esseri umani. Questa logica e la conoscenza dietro di essa sono alla nostra portata e siamo in grado di apprendere e alla fine comprendere questa conoscenza. Quando raggiungi questo cambiamento mentale, si sviluppa il desiderio di imparare e comprendere di più.
Questo passaggio servirà in qualche modo a spiegare come sono riuscito a ottenere questo cambiamento e come sono arrivato a vedere la codifica come ho fatto io.
La conoscenza inizia a sentirsi a portata di mano man mano che conduci ricerche e istruzione più indipendenti. Ci rendiamo conto che siamo, infatti, in grado di apprendere e alla fine comprendere cose che prima non avremmo mai potuto capire. Questo perché ottieni una prospettiva più ampia sulla codifica, su come è stata sviluppata (con i suoi errori durante la sua creazione poiché è stata creata dagli umani) e gli impatti del mondo reale che ogni concetto che impari può avere.
Cerca "Y2K problem" sul tuo browser, leggilo e forse sarà il primo passo per iniziare la ricerca indipendente. Una volta letto, cosa ne pensi? I computer sono in definitiva sviluppati da esseri umani come noi, quelli capaci di commettere errori (come illustrato dal problema Y2K), quelli che imparano e crescono. Ora senti una connessione più forte con il codice che stai imparando? Hai un'idea del potenziale impatto immediato che potrebbe avere sulla tua vita e su quella degli altri?
Ho imparato questa lezione quando stavo risolvendo il set di problemi 4. Ti consente di codificare un programma in grado di differenziare gli oggetti in un'immagine. Ho sempre creduto che un compito impegnativo come quello fosse senza dubbio al di là delle mie capacità prima di iniziare questo programma. Avevo pensato che richiedesse alcune sofisticate "cose" di intelligenza artificiale che probabilmente mi avrebbero fritto il cervello se avessi provato a capirlo. Tuttavia, ho fatto il programma, ne ho capito la logica e mi sono sentito molto più vicino alla programmazione allora.
Una volta che sarai consapevole di quanto sei ancora in grado di apprendere e comprendere, sentirai uno zelo nello studio e nell'acquisizione di nuove conoscenze.
3. Fai noioso e fai crescere la tua cassetta degli attrezzi:
Una volta che hai finito con una serie di problemi, prova sempre a cercare soluzioni più efficienti su Internet. Anche se questo può sembrare noioso, ti insegnerà nuove prospettive e logica per lo stesso programma. Questo aumenta la "cassetta degli attrezzi" che hai durante la codifica dei programmi.
Man mano che la tua "cassetta degli attrezzi" si allarga, sarai in grado di visualizzare più percorsi verso il tuo risultato o il codice della soluzione. Simile alla matematica, puoi risolvere i problemi in modo più rapido ed efficace se ti eserciti di più.
Conoscere più soluzioni può essere utile quando si affrontano problemi particolarmente impegnativi che possono essere risolti solo utilizzando un approccio particolare.
Pertanto, "fai noioso" e lo apprezzerai sicuramente in seguito!
4. Prendi appunti:
Sebbene prendere appunti durante l'ascolto delle lezioni sia del tutto facoltativo e una questione di preferenze personali, renderà il tuo apprendimento più produttivo e come se stesse progredendo. Ti farà guardare la lezione con maggiore attenzione.
Puoi prendere appunti compatti. Fai un elenco di tutte le domande che hai o delle informazioni che hai trovato particolarmente nuove e interessanti. Quindi, fai qualche ricerca e cerca di chiarire le domande o i dubbi che hai annotato.
Quando sto imparando, prendere appunti mi fa sentire più produttivo e mi piace farlo.
Risolvi diligentemente tutti i set di problemi, concedendo a ciascuno una notevole quantità di tempo
II. Passaggi da seguire quando si impara da CS50x:
- Impara pazientemente da ogni lezione, non avere fretta. Facoltativamente, prendi appunti durante l'ascolto delle lezioni.
- Non saltare mai i cortometraggi video prima di dare un'occhiata ai loro argomenti. Sfoglia i cortometraggi e, se pensi che valgano il tuo tempo, guardali. I cortometraggi contengono spesso spiegazioni più approfondite. A volte, i cortometraggi trattano anche argomenti che non sono trattati nella conferenza principale.
- Risolvi diligentemente tutti i set di problemi, concedendo a ciascuno una notevole quantità di tempo e prova a risolverli da solo. Se non lo capisci, passa attraverso i suggerimenti che hanno dato. Se questo non è abbastanza, guarda la procedura dettagliata (questo rende molto più facile la comprensione del problema). Va bene non capire il problema, non devi sentirti male. Nemmeno io avevo capito tutti i problemi al mio primo tentativo. Una volta che tutto non funziona, cerca la soluzione, quindi codifica la risposta senza guardare la soluzione una volta che l'hai capita.
- Se riscontri errori nel tuo programma e non sei in grado di identificarli, usa 'check50' o 'submit'. Questi due comandi forniscono un collegamento una volta eseguito il programma e le informazioni nel sito che il collegamento apre sono molto utili per risolvere gli errori.
- Se non sei ancora riuscito a risolvere il problema, prenditi una pausa. Passa alla lezione o alla serie di problemi successiva e torna alla stessa serie di problemi più tardi.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































