Pregunta

SICP - "Estructura e Interpretación de Programas Informáticos"

Explicación de la misma sería bueno

Puede alguien explicar acerca de metalingüística abstracción

¿Fue útil?

Solución

SICP realmente llevó a casa el punto de que es posible mirar el código y los datos como la misma cosa.

he entendido esto antes de la hora de pensar acerca de las máquinas de Turing universales (la entrada a una UTM es sólo una representación de un programa) o la arquitectura von Neumann (donde una sola estructura de almacenamiento contiene tanto el código y datos), pero SICP hice la idea mucho más clara. Esquema (LISP) ayudó aquí, ya que la sintaxis de un programa es exactamente la misma que la sintaxis de las listas en general, es decir, S-expresiones.

Una vez que tenga la "equivalencia" de código y datos, de repente un montón de cosas a ser fácil. Por ejemplo, puede escribir programas que tienen diferentes métodos de evaluación (perezoso, no deterministas, etc ). Anteriormente, podría haber pensado que esto requeriría una extensión del lenguaje de programación; en realidad, sólo puedo añadir que en el lenguaje mismo, permitiendo así que el núcleo del lenguaje a ser mínimo. Como otro ejemplo, se puede implementar de manera similar un marco orientado a objetos; De nuevo, esto es algo que podría haber pensado ingenuamente que requeriría la modificación del idioma.

Por cierto, una cosa que me gustaría SICP había mencionado más: tipos. La verificación de tipos en compilación el tiempo es una cosa increíble. La aplicación SICP de la programación orientada a objetos no tienen este beneficio.

Otros consejos

No he leído ese libro, sin embargo, sólo he mirado los cursos de vídeo, pero me enseñó mucho. Funciona como ciudadanos de primera clase era exorbitante para mí. La ejecución de una "variable" era algo muy nuevo para mí. Después de ver los videos de la forma en que ahora veo JavaScript y programación en general ha cambiado mucho.

Oh, creo que me he mentido, lo que realmente me llamó la atención fue que era una función +.

Creo que lo más sorprendente de SICP es ver cómo las primitivas pocos realmente se requieren para hacer una Turing completa idioma -. Casi cualquier cosa puede ser construido a partir de casi nada

Dado que estamos hablando SICP, voy a poner en mi enchufe estándar para las conferencias de vídeo en http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ , que son la mejor introducción a la Informática que se podría esperar para conseguir en 20 horas.

El que me pareció muy fresco fue arroyos con la evaluación retardada. La de números primos que generan fue algo que pensé que estaba muy bien. Al igual que un dispensador de "pez" que dispensa mágicamente el próximo primer en la secuencia.

Un ejemplo de "los datos y el código son la misma cosa" de respuesta de A. Rex me hizo de una manera muy profunda.

Cuando me enseñaron Lisp de vuelta en Rusia, nuestros maestros nos dijeron que el lenguaje era acerca de las listas: vehículo, CDR, contras. Lo que realmente me sorprendió fue el hecho de que usted no necesita esas funciones en todo - usted puede escribir sus propios cierres, dadas. Así, Lisp no es acerca de las listas después de todo! eso fue una gran sorpresa.

Un concepto que estaba completamente familiarizado con la idea de corrutinas , es decir, que tiene dos funciones haciendo el trabajo complementario y que tiene la alternativa de control de flujo del programa entre ellos.

Yo todavía estaba en la escuela secundaria cuando leí SICP, y me había centrado en los capítulos primero y segundo. Para mí en ese momento, me ha gustado que se podía expresar todas las ideas matemáticas en código, y para que el ordenador la mayor parte del trabajo sucio.

Cuando estaba tutoría SICP, me impresionó por diferentes aspectos. Por un lado, el enigma que los datos y el código son realmente la misma cosa, porque el código es los datos ejecutables. El capítulo sobre abstracciones metalingüísticas es inconcebible para muchos y tiene muchos mensajes para llevar a casa. La primera es que todas las reglas son arbitrarias. Esto molesta a algunos estudiantes, especialmente aquellos que son físicos en el corazón. Creo que la belleza no está en las propias reglas, pero en el estudio de las consecuencias de las reglas. Un cambio de una línea en código puede significar la diferencia entre ámbito léxico y de alcance dinámico.

Hoy, sin embargo SICP sigue siendo divertido y perspicaz para muchos, entiendo que se está convirtiendo en fecha. Por un lado, no enseña habilidades y herramientas de depuración (incluyo sistemas de tipo de allí), que es esencial para trabajar en sistemas gigantescos de hoy.

Lo que más me sorprende de lo fácil que es poner en práctica idiomas. Que uno podría escribir intérprete para el esquema en una pizarra.

Me sentí recursividad en sentido diferente después de leer algunos de los capítulos de SICP

Estoy ahora mismo en la sección "Secuencias como interfaces convencionales" y han encontrado el concepto de procedimientos como ciudadanos de primera clase muy fascinante. Además, la aplicación de la recursividad es algo que nunca he visto en cualquier idioma.

Los cierres.

Viniendo de un fondo principalmente imperativo (Java, C #, etc - sólo leo SICP un año o así que hace, por primera vez, y estoy releyendo ahora), pensando en términos funcionales fue una gran revelación para yo; cambió totalmente la forma en que pienso en mi trabajo actual.

He leído la mayor parte del libro (sin ejercicio). Lo que he aprendido es cómo abstracta del mundo real en un nivel específico, y cómo implementar un idioma.

Cada capítulo tiene ideas me sorprenden:

Los dos primeros capítulos me muestran dos formas de abstracción del mundo real:. Abstracción con el procedimiento, y la abstracción con los datos

Capítulo 3 introduce el tiempo en el mundo real. Eso da lugar a estados. Tratamos de asignación, lo que plantea problemas. A continuación, intentamos corrientes.

Capítulo 4 se trata de la abstracción metalingüística, en otras palabras, se implementa un nuevo idioma mediante la construcción de un evaluador, que determina el significado de las expresiones.

Desde el evaluador en el Capítulo 4 es en sí mismo un programa Lisp, hereda la estructura de control del sistema Lisp subyacente. Así, en el capítulo 5, de sumergirse en la operación paso a paso de un ordenador real con la ayuda de un modelo abstracto, regístrese máquina.

Gracias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top