Sono stato programmatore come consulente per anni e adoro il mio lavoro, che comporta molte analisi orientate agli oggetti e progettazione di sistemi software che utilizzano linguaggi gestiti (ad esempio ingegneria del software). Ma mi piacerebbe ottenere un dottorato alla fine, e mi dà fastidio che non ho mai veramente "ottenuto" la teoria della Computer Science. All'università ho fatto solo marginalmente bene in quei corsi perché il modo in cui sono stati insegnati non ha funzionato per me. Imparo osservando l'applicazione dei concetti, non la memorizzazione a memoria.Mi piacerebbe tornare alle basi di CS. Qualche suggerimento per esercitazioni o materiale di riferimento orientato all'applicazione?
Un esempio di dove ho superato una tale barriera prima - ho avuto un primo anno orribile. Il professore (che ora so essere appena qualificato e un insegnante incompetente) ha iniziato con il C++, insegnandoci la programmazione procedurale. Tecnicamente avevo imparato che cosa fosse un oggetto, ma non è stato fino a quando ho visto l'applicazione di analisi e progettazione orientata agli oggetti (con schemi di progettazione e altre strutture come le liste concatenate) che ho davvero capito a cosa servivano.
Come potrei andare su argomenti di apprendimento come compilatori, teoria del linguaggio di programmazione e analisi degli algoritmi? Quale sarebbe un buon modo per iniziare su quelli? Ad esempio, mi piacerebbe scrivere un compilatore alla fine (per divertimento) ma non ho idea da dove cominciare. Qualcuno è mai stato in questa situazione? Qualche suggerimento per tutorial, video di lezioni online gratuiti o riferimenti (Qualcosa come w3schools sarebbe meraviglioso)?
(vorrei aggiungere che la navigazione StackOverflow mi ha già insegnato i carichi, ma mi piacerebbe che fosse un po 'più formale:)
EDIT: Grazie a tutti per i suggerimenti. Ho segnato una risposta che funziona per me personalmente, ma tengo le risposte in arrivo:)
La migliore risorsa del compilatore su SO è http://stackoverflow.com/questions/1669/learning-to-write-a-compiler - tuttavia ignorare i consigli del libro del drago. –
Questa è una grande risorsa, grazie. Perché il libro del drago non va bene? Solo curioso. –
Mi è piaciuto il libro del Drago, Neil. Perché ne discuti? –