Domanda

SICP - "Struttura e Interpretazione dei programmi per computer"

Spiegazione per lo stesso sarebbe bello

Qualcuno può spiegare su metalinguistica Astrazione

È stato utile?

Soluzione

SICP davvero spinto a casa il punto che è possibile guardare il codice e dati, come la stessa cosa.

Compresi prima quando si parla di macchine universali Turing (l'ingresso ad un UTM è solo una rappresentazione di un programma) o l'architettura di von Neumann (dove un singolo struttura di memorizzazione contiene sia codice e dati), ma SICP fatto l'idea molto più chiaro. Scheme (Lisp) ha aiutato qui, come la sintassi di un programma è esattamente la stessa della sintassi per gli elenchi in generale, vale a dire S-espressioni.

Una volta che avete il "equivalenza" di codice e dati, improvvisamente un sacco di cose diventato facile. Ad esempio, è possibile scrivere programmi che hanno diversi metodi di valutazione (pigro, non deterministiche, etc ). In precedenza, ho potuto pensare che ciò richiederebbe una proroga per il linguaggio di programmazione; in realtà, posso solo aggiungere che al linguaggio di me stesso, permettendo così il nucleo del linguaggio per essere minimo. Come altro esempio, è possibile implementare un simile quadro orientato agli oggetti; ancora una volta, questo è qualcosa che avrei potuto ingenuamente pensato richiederebbe la modifica della lingua.

Per inciso, una cosa che desidero SICP aveva parlato di più: i tipi. La verifica del tipo a compilazione il tempo è una cosa incredibile. L'implementazione SICP di programmazione orientata agli oggetti non ha avuto questo vantaggio.

Altri suggerimenti

non ho letto quel libro ancora, ho solo guardato i video corsi, ma mi ha insegnato molto. Funzioni come cittadini di prima classe era pazzesca per me. L'esecuzione di un "variabile" è stato qualcosa di molto nuovo per me. Dopo aver visto quei video il modo in cui ora vedo Javascript e programmazione in generale è molto cambiata.

Oh, credo di aver mentito, la cosa che veramente mi ha colpito è che era una funzione +.

Credo che la cosa più sorprendente SICP è vedere come primitive pochi sono realmente necessario per effettuare una completa Turing lingua -. Quasi tutto può essere costruito quasi dal nulla

Visto che si parla SICP, metterò nella mia spina standard per le video conferenze a http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ , che sono la migliore introduzione alla Computer Science si poteva sperare di ottenere in 20 ore.

Quello che ho pensato è stato davvero cool era torrenti con la valutazione ritardata. Quello su numeri primi che generano era qualcosa che pensavo fosse veramente pulito. Come un distributore di "PEZ" che dispensa magicamente il prossimo primo nella sequenza.

Un esempio di "dati e il codice sono la stessa cosa" dalla risposta di A. Rex mi ha fatto in un modo molto profondo.

Quando mi è stato insegnato Lisp di nuovo in Russia, i nostri insegnanti ci hanno detto che la lingua era sugli elenchi: auto, CDR, cons. Ciò che veramente mi ha stupito è stato il fatto che non hai bisogno di quelle funzioni a tutti - è possibile scrivere i propri dati, le chiusure. Quindi, Lisp non si tratta di liste dopo tutto! E 'stata una grande sorpresa.

Un concetto ero completamente familiarità con era l'idea di coroutine , cioè con due funzioni facendo lavoro complementare ed avente alternano controllo del flusso di programma tra loro.

ero ancora al liceo quando ho letto SICP, e mi ero concentrato sui primi e secondi capitoli. Per me, al momento, mi è piaciuto che si potrebbe esprimere tutte quelle idee matematiche in codice, e hanno il computer fare la maggior parte del lavoro sporco.

Quando ero tutoraggio SICP, mi sono impressionato da diversi aspetti. Per uno, l'enigma che i dati e il codice sono in realtà la stessa cosa, perché il codice è di dati eseguibili. Il capitolo sulla astrazioni metalinguistiche è da capogiro a molti e ha molti messaggi da portare a casa. Il primo è che tutte le regole sono arbitrarie. Questo infastidisce alcuni studenti, specialmente quelli che sono i fisici a cuore. Credo che la bellezza non è nelle stesse regole, ma nello studio la conseguenza delle regole. Un cambiamento di una riga in codice può significare la differenza tra scoping lessicale e scoping dinamico.

Oggi, però SICP è ancora divertente e perspicace a molti, capisco che sta diventando datato. Per uno, non insegna il debug di competenze e strumenti (includo sistemi di tipo in là), che è essenziale per lavorare in sistemi giganteschi di oggi.

Sono rimasto molto sorpreso di quanto sia facile da implementare lingue. Che si potrebbe scrivere interprete per Schema su una lavagna.

Mi sono sentito ricorsione in diverso senso dopo aver letto alcuni dei capitoli di SICP

Sono in questo momento sulla sezione "Sequenze come interfacce convenzionali" e hanno trovato il concetto di procedure come cittadini di prima classe molto affascinante. Inoltre, l'applicazione di ricorsione è qualcosa che non ho mai visto in qualsiasi lingua.

Chiusure.

Venendo da un background prevalentemente imperativo (Java, C #, ecc - ho letto solo SICP un anno fa per la prima volta, e sono ri-leggendo ora), pensare in termini funzionali è stata una grande rivelazione per me; totalmente cambiato il mio modo di pensare il mio lavoro di oggi.

Ho letto la maggior parte del libro (senza esercizio). Quello che ho imparato è come astratto il mondo reale a un livello specifico, e come implementare una lingua.

Ogni capitolo ha le idee mi sorprende:

I primi due capitoli mi mostrano due modi di astrarre il mondo reale:. Astrazione con la procedura, e l'astrazione con i dati

Capitolo 3 introduce il tempo nel mondo reale. Che si traduce in stati. Cerchiamo di assegnazione, che solleva problemi. Allora proviamo corsi d'acqua.

Capitolo 4 è di circa l'astrazione metalinguistica, in altre parole, implementiamo un nuovo linguaggio con la costruzione di un valutatore, che determina il significato di espressioni.

Dato che il valutatore nel Capitolo 4 stessa è un programma Lisp, eredita la struttura di controllo del sistema Lisp sottostante. Quindi, nel Capitolo 5, ci tuffiamo in funzionamento passo-passo di un vero e proprio computer con l'aiuto di un modello astratto, registrarsi macchina.

Grazie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top