Lo farei:
Percorso A: il metodo semi-tipico
-
Impara una lingua con una sintassi più regolare come Java, C # o Python. Perl è uno strumento insanamente utile ma è anche molto molto libero in termini di come ti permette di fare le cose. Le altre lingue che ho elencato sono molto, molto meno.
-
Ottieni un libro sulle strutture dati in tale lingua.
-
Ottieni un libro su Algorithms in detta lingua.
-
Ottieni codice completo ed efficace Java / C # / Qualunque sia la versione di Python.
Percorso B: Sentiero dell'Illuminazione di Joel Spolsky (o Morte, prendi la tua scelta)
-
Ottieni il libro "Codice"
-
Ottieni K & R "The C Programming Language"
-
Ottieni la struttura e l'interpretazione della programmazione per computer
Per quanto riguarda il metodo, il metodo 1 ti insegnerà a programmare in modo più regolare. Concetti di Informatica in una certa misura (nessuna teoria della complessità ancora, credimi) e fornirti un linguaggio migliore per lavorare in progetti con altre persone e per creare applicazioni più grandi.
Il Metodo 2 è più hardcore, è molto più un approccio di base con "Codice" che spiega le basi, K & R che introduce il materiale a livello di macchina e il SICP che introduce i concetti di livello superiore. È un percorso molto più difficile ma più mirato.
In entrambi i casi, concediti il tempo. Roma non è stata costruita in un giorno e nemmeno le abilità di programmazione, anche se sei un genio. La programmazione di Peter Norvig in 10 anni è il solito saggio a cui rivolgo le persone.
Addendum:
Per quanto riguarda le cose gratis disponibili: Python the Hard Way come elencato di seguito è un buon inizio, da lì, Come pensare come uno scienziato informatico è una continuazione ragionevole.
Ci sono un certo numero di risorse sugli algoritmi là fuori e, onestamente, probabilmente potresti cambiare i passaggi 3 e 4 senza problemi. Tenete a mente, questo è il punto in cui la matematica inizia davvero a presentarsi, quindi non abbiate mai paura di chiedere aiuto quando arrivi a questo stadio. Questa sembra essere una guida gratuita ragionevole.
In realtà non esiste un equivalente gratuito coesivo a Code Complete per say anche se Codice come a Pythonista sembra abbastanza solido. La cosa importante è concentrarsi sul rendere leggibile il tuo codice una volta che hai ottenuto le basi fondamentali. Non è "necessario" nello stesso modo in cui avere tutta la sintassi del codice corretta è, ma rende molto più facile vivere una volta superato i piccoli programmi o lavorando su qualcosa per un lungo periodo.
Potresti scoprire che mi sono concentrato principalmente su Python, perché è il più semplice dei tre a trovare materiale libero ben scritto. Penso che i tutorial di Java di Oracle siano soddisfacenti, ma sono un po 'aridi e non ideali per i principianti. C # si trova in una situazione simile sebbene nessuno dei due soffra di mancanza di documentazione.
Inoltre, il tuo primo scherzo / gioco di parole CS: vuoi "Riformare" la tua istruzione, non Backtrack.