Conceitos que te surpreendeu quando você lê SICP?

votos
10

SICP - Estrutura e Interpretação de Programas de Computador

Explicação para o mesmo seria bom

Alguém pode explicar sobre metalinguística Abstraction

Publicado 10/12/2008 em 09:21
fonte usuário
Em outras línguas...                            


11 respostas

votos
20

SICP realmente levou para casa o ponto que é possível olhar para código e dados como a mesma coisa.

Eu entendi isso antes quando se pensa em máquinas de Turing universais (a entrada para um UTM é apenas uma representação de um programa) ou a arquitetura de von Neumann (onde uma única estrutura de armazenamento detém tanto o código e dados), mas SICP feita a ideia muito mais clara . Esquema (Lisp) ajudou aqui, como a sintaxe para um programa é exatamente o mesmo que a sintaxe para listas em geral, nomeadamente S-expressões.

Depois de ter a "equivalência" de código e dados, de repente, um monte de coisas tornam-se fáceis. Por exemplo, você pode escrever programas que têm diferentes métodos de avaliação (preguiçoso, não determinístico, etc ). Anteriormente, eu poderia ter pensado que isso exigiria uma extensão para a linguagem de programação; Na realidade, eu posso apenas adicioná-lo para a linguagem de mim mesmo, permitindo assim que a linguagem núcleo para ser mínima. Como outro exemplo, você pode semelhante implementar uma estrutura orientada a objeto; novamente, isso é algo que eu poderia ter ingenuamente pensou que seria necessário modificar o idioma.

Aliás, uma coisa que eu desejo SICP tinha mencionado mais: tipos. Verificação de tipo de compilação tempo é uma coisa incrível. A implementação SICP de programação orientada a objetos não têm esse benefício.

Respondeu 27/01/2009 em 14:10
fonte usuário

votos
8

Eu não li o livro ainda, eu só olhei para os cursos de vídeo, mas ele me ensinou muito. Funciona como cidadãos de primeira classe foi mente blowing para mim. Executando uma "variável" era algo muito novo para mim. Depois de assistir a esses vídeos a maneira que eu ver agora JavaScript e programação em geral mudou muito.

Oh, eu acho que eu menti, a única coisa que realmente me impressionou foi que + era uma função.

Respondeu 27/01/2009 em 11:06
fonte usuário

votos
5

Acho que a coisa mais surpreendente sobre SICP é ver como primitivas poucos são realmente necessários para fazer um Turing linguagem completa - quase tudo pode ser construído a partir de quase nada.

Uma vez que estamos discutindo SICP, eu vou colocar no meu plug padrão para as aulas em vídeo em http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ , que são a melhor introdução para Ciência da Computação que você poderia esperar para chegar em 20 horas.

Respondeu 28/01/2009 em 18:15
fonte usuário

votos
4

Um exemplo de "os dados e o código são a mesma coisa" da resposta de A. Rex me pegou de uma forma muito profunda.

Quando eu fui ensinado Lisp volta na Rússia, nossos professores nos disseram que a linguagem era sobre listas: carro, CDR contras. O que realmente me surpreendeu foi o fato de que você não precisa essas funções em todos - você pode escrever seus próprios dados fechos,. Então, Lisp não é sobre listas depois de tudo! Isso foi uma grande surpresa.

Respondeu 27/01/2009 em 14:32
fonte usuário

votos
4

O que eu achava muito legal foi streams com avaliação tardia. Aquele sobre números primos gerando foi algo que eu pensei foi realmente limpo. Como um distribuidor de "PEZ" que dispensa magicamente o primeiro seguinte na sequência.

Respondeu 27/01/2009 em 14:23
fonte usuário

votos
3

Um conceito que eu estava completamente familiarizado com foi a ideia de co-rotinas , ou seja, ter duas funções fazendo um trabalho complementar e tendo o suplente de controle de fluxo programa entre eles.

Respondeu 27/01/2009 em 11:51
fonte usuário

votos
2

Eu ainda estava no colégio quando li SICP, e eu tinha focado nos primeiro e segundo capítulos. Para mim, no momento, eu gostei que você poderia expressar todas essas ideias matemáticas em código, e ter o computador fazer a maior parte do trabalho sujo.

Quando eu estava tutoria SICP, fiquei impressionado com diferentes aspectos. Por um lado, o enigma que os dados e código são realmente a mesma coisa, porque o código é de dados executáveis. O capítulo sobre abstrações metalinguísticas é incompreensível para muitos e tem muitas mensagens para levar para casa. A primeira é que todas as regras são arbitrárias. Isso incomoda alguns alunos, especialmente aqueles que são físicos no coração. Eu acho que a beleza não está nas regras em si, mas em estudar a conseqüência das regras. Uma alteração de uma linha de código pode significar a diferença entre escopo lexical e escopo dinâmico.

Hoje, porém SICP ainda é divertido e perspicaz para muitos, eu entendo que está se tornando datado. Por um lado, não ensina a depuração habilidades e ferramentas (I incluem sistemas do tipo lá), o que é essencial para trabalhar em sistemas gigantescos de hoje.

Respondeu 29/01/2009 em 03:42
fonte usuário

votos
1

Estou agora na Seção "Sequências como interfaces convencionais" e de ter encontrado o conceito de procedimentos como cidadãos de primeira classe muito fascinante. Além disso, a aplicação da recursividade é algo que eu nunca vi em qualquer idioma.

Respondeu 18/02/2009 em 19:09
fonte usuário

votos
1

Fiquei muito surpreso de como é fácil de implementar idiomas. Que se poderia escrever intérprete para Esquema em um quadro negro.

Respondeu 01/02/2009 em 17:19
fonte usuário

votos
1

Senti recursão em sentido diferente depois de ler alguns dos capítulos de SICP

Respondeu 29/01/2009 em 17:23
fonte usuário

votos
0

Closures.

Vindo de um fundo principalmente imperativo (Java, C #, etc. - Eu só ler SICP um ano ou mais atrás, pela primeira vez, e estou estiver lendo-lo agora), pensando em termos funcionais foi uma grande revelação para mim; ele mudou totalmente a maneira que eu penso sobre o meu trabalho hoje.

Respondeu 31/01/2009 em 01:22
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more