2010-11-24 12 views
6

¿Alguien puede darme una explicación clara y concisa de los últimos 2 capítulos de SICP (estructura e interpretación de programas informáticos), abstracción metalingüística ch4 y computación ch5 con máquinas de registro?Breve explicación de los dos últimos capítulos de SICP

También me gustaría saber si (y cómo) estos dos capítulos difieren en el contenido de un curso estándar de compilador de pregrado.

+1

TL; DR; (((((()))))))) –

Respuesta

15

largo de exención de responsabilidad, la respuesta real por debajo

Si realmente desea información acerca de cómo construir un compilador desde cero y necesitan estar al día con todas las técnicas de análisis, compilación, generación y optimización de prácticas relacionadas, entonces el dragon book sería la mejor opción.

Si desea construir un lenguaje de programación limpio desde cero utilizando un intérprete, le recomiendo el libro EPL de Friedman.

Si lo que buscas con tu trabajo de licenciatura es una comprensión más profunda de todos los los problemas fundamentales en los dos libros anteriores, luego sigue leyendo mi respuesta a continuación. SICP es un trabajo educativo, trata de transmitir los conceptos esenciales en un lenguaje claro como sea posible. No entrará en detalles sobre analizadores recursivos a la izquierda, eliminación de sub-expresiones comunes, extensiones x86 SSE, etc.

SICP CH4-5

La técnica utilizada para explicar los complejos conceptos involucrados es mediante la construcción de una serie de lenguajes de programación desde cero ante sus ojos.

Capítulo 4 comienza con la creación de un intérprete de esquema meta-circular: un pequeño intérprete de esquema escrito en el propio esquema. Esto le proporcionará los conceptos básicos de un intérprete recursivo y formará una base para la construcción de una serie de mini-idiomas en el resto de ch4-5. Responde a la pregunta de cómo representar el código analizado, lo que estructuras de datos están involucrados, cómo separar el anfitrión de la lengua base, etc. importante aún, le muestra que un intérprete de lenguaje es en sí misma más que otro programa de computadora. El resto del Capítulo 4 le muestra cómo puede variar el sabor de su idioma modificando el intérprete anterior. Los dos grandes son la evaluación perezosa y la programación lógica.

Capítulo 5 hace un modelo aproximado de 'máquinas registradoras', para representar su computadora actual en un nivel abstracto. Construyen un pequeño lenguaje de máquina de registro que actúa como un lenguaje ensamblador para todos los propósitos y propósitos. Introducen todas las estructuras de datos y las construcciones de flujo de control necesarias para hacer el siguiente bit: construir un intérprete de esquema en este lenguaje de máquina. De alguna manera sigue siendo similar al intérprete meta-circular. Luego saltan de la parte más profunda y construyen un compilador de esquema en su lenguaje de máquina registradora; completo con paso de ensamblaje, optimización de recursión de cola, recolección de basura, direccionamiento léxico, rastreo, etc.

Aunque SICP construye interpretes y compiladores de juguetes, estos son conceptualmente lo suficientemente completos como para ponerlo al día rápidamente con la práctica actual técnicas. El código intermedio de GCC se parece mucho al código de máquina de registro del SICP, por ejemplo, y these guys implementó el intérprete de SICP para microcontroladores ARM directamente en el ensamblaje.

+1

Gracias por la gran respuesta. ¡Parece que el SICP es exactamente lo que necesito! – ToToMakings

+0

@Beef así que, básicamente, aunque los primeros tres capítulos del libro son de alto nivel, ¿los dos capítulos finales son de muy bajo nivel? – morbidCode

+0

No usaría los términos 'alto/bajo-lv' para describirlo. Los capítulos finales muestran cómo se elabora la salchicha con mayor detalle, pero lo hace a un nivel fundamental usando Scheme. – Beef

Cuestiones relacionadas