Una rapida premessa
Impara facendo: conoscenza vs know-how
C'è una differenza enorme conoscenza e know-how. È un errore comune per i nuovi studenti pensare che, poiché possono "capire" un programma mentre lo leggono, in realtà comprendono il ragionamento per il programma che viene scritto così com'è.
E l'unico modo per arrivare a quella seconda parte è esercitarsi. Siediti, apri un editor di testo, una riga di comando e scendi.
È probabile (e previsto) che in questa fase la capacità di comprendere in che modo diversi componenti software complessi interagiscono tra loro è limitata. Ed è in realtà una buona cosa, in quanto ti costringe a iniziare dalle basi. Non saltare la pistola e muoverti al ritmo giusto: inizia con piccoli esercizi per piccoli compiti.
Ad essere sincero, non sono mai stato convinto che iniziare a imparare a programmare con Java sia la strada da percorrere (insegnavo programmazione per vivere all'università, e ancora faccio occasionalmente lezioni private). È di per sé troppo complesso per iniziare e la maggior parte dei libri di Java apparirà piuttosto scoraggiante. Tuttavia, sicuramente può essere fatto (almeno per alcune aree di quella conoscenza globale che ci aspettiamo dai programmatori), purché ti limiti ad apprendere passo dopo passo.
Libri
Dato che sei impostato su Java e se hai bisogno di un libro Java decente, ti consiglio di:
- Pensando in Java . Va bene, anche se ora leggermente obsoleto.
- Il tutorial Java . Non è esattamente il miglior compagno dello studente, ma è un ottimo riferimento da tenere a portata di mano, poiché copre tutte le basi e fornisce esempi. Il Learning the Java Language Trail dovrebbe probabilmente essere nella tua lista di lettura, anche se penso che possa essere scoraggiante per i principianti completi in quanto introduce concetti che all'inizio potrebbero essere difficili da comprendere.
- Java efficace . Non è un grande libro per l'apprendimento, ma anche un riferimento fantastico che dovresti avere a portata di mano per dopo. Non leggere in una sola seduta, ma in pezzi di dimensioni ridotte.
Sto solo citando questo perché non so cosa usi in classe. Ci sono un sacco di altri libri. Alcuni sono buoni Alcuni paralizzeranno gli studenti per anni.
Il tuo processo di studio
Il flusso di lavoro di base
D'ora in poi, ti consiglio di seguire questo processo in 2 passaggi per tutti gli esercizi e gli esempi di codice che hai visto in classe:
- leggi e studia
- leggi gli esercizi
- assicurati di averli capiti
- codice
- chiudi il libro
- sedersi davanti a un computer con quell'editor di codice e quella riga di comando
- prova a riscrivere il programma da solo
In caso di guasto
Se fallisci e senti di dover dare una sbirciatina al libro, è probabile che il tuo fallimento sia:
- (molto probabilmente) che in realtà non hai capito la soluzione,
- (meno probabile) di aver dimenticato l'aspetto di un particolare bit della soluzione: sintassi, utilizzo dell'API, ...
La prima causa è probabilmente quella che affronti più spesso. Il secondo è aneddotico. Entrambi sono affrontati dalla pratica ricorrente.
Ogni volta che fallisci nell'implementare uno di questi primi esempi, guarda di nuovo il libro, quindi richiudilo. Non scrivere codice mentre guardi il libro. Ti consiglierei anche di eliminare l'intera soluzione e ricominciare. La ripetizione è una parte fastidiosa ma importante del processo di apprendimento.
Non prenderlo alla leggera. Ogni volta che senti il bisogno di dire a te stesso "sì, ok, lo so " o "Sono lì al 90%, è quasi buono come fatto" e vuoi saltare ad un'altra sezione, combattere quel bisogno e ricominciare da capo. È molto difficile avere l'onestà di ammettere a te stesso di non aver compreso appieno un concetto.
Nota a margine: ritengo sia un grande disservizio il fatto che la maggior parte dei programmi scolastici ora tenti di "dare il via" ai corsi di programmazione smorzando troppo le cose e fornendo strumenti che sono troppo avanzati per gli studenti: l'obiettivo non è rendere la tua vita infelice o anche per te imparare a memoria cose che più avanti nella tua carriera saranno automatizzate dai tuoi strumenti e che a volte ti ricorderai a malapena. È per insegnarti tutti i pezzi che galleggiano intorno.
In caso di successo: vai oltre!
Se riesci a implementare il tuo esercizio, non necessariamente passare direttamente a quello successivo. Prova a vedere cosa puoi fare per migliorarlo. È possibile modificare l'output richiesto? Aggiungi una piccola funzionalità? Un opzione? Provaci, dato che ora sei in quella zona divertente in cui hai superato la difficoltà principale, e questi piccoli requisiti autoimposti hanno maggiori probabilità di mantenere un po 'di morale.
Non andare troppo lontano però: non passi dalla stampa dell'alfabeto e dalla sua inversione fino a farla apparire improvvisamente su una diagonale sullo schermo con una sfumatura di colori. Fai piccoli passi. L'apprendimento è un processo lungo e iterativo e devi affrontare i problemi con livelli crescenti di difficoltà (ad esempio, vedi come di solito penso a spiegare la ricorsione ).
È solo apprendimento: un confronto
Il tuo problema non è in realtà legato alla programmazione. È lo stesso problema che migliaia di persone incontrano quando provano ad imparare la matematica.
Se dai loro un problema, non vedono come raggiungere la soluzione. Tuttavia, se scrivi la soluzione per loro, la maggior parte la capirà e penserà "dannazione, è stato così semplice!". Tuttavia, darai loro un problema simile con misure e ipotesi diverse e non riusciranno a risolverlo: non hanno capito la logica dietro di esso e hanno bisogno di pratica per essere in grado di farlo da soli.
Nota che questo è un problema comune con la matematica, ma secondo me lo vedi in molti altri campi in cui è richiesta una logica: apprendimento del solfege, grammatica della lingua, fisica, ecc ... E non si tratta di un'abilità "naturale" capire queste cose: si riduce alla pratica (sia in quell'area, sia in altre che portano l'individuo a cogliere più facilmente i concetti in questo campo).
Non c'è motivo per cui non puoi imparare a scrivere codice. Devi solo continuare a provare finché non raggiungi quel "ah AH!" / Momento Eureka. Quindi passa al problema successivo, più difficile.
Questi possono aiutare anche (in seguito):