Descripción
Este curso a ritmo propio discutirá las principales ideas utilizadas hoy en día en la implementación de compiladores de lenguajes de programación, incluyendo análisis léxico, análisis sintáctico, traducción dirigida por la sintaxis, árboles de sintaxis abstracta, tipos y comprobación de tipos, lenguajes intermedios, análisis de flujo de datos, optimización de programas, generación de códigos y sistemas de tiempo de ejecución. Como resultado, aprenderá cómo un programa escrito en un lenguaje de alto nivel diseñado para los humanos se traduce sistemáticamente a un programa escrito en ensamblador de bajo nivel más adecuado para las máquinas. A lo largo del camino también tocaremos la forma en que se diseñan los lenguajes de programación, la semántica de los lenguajes de programación, y por qué hay tantos tipos diferentes de lenguajes de programación.
Las conferencias del curso se presentarán en videos cortos. Para ayudarte a dominar el material, habrá preguntas para responder, pruebas y dos exámenes: un examen intermedio y uno final. También habrá deberes en forma de ejercicios que le pedirán que muestre una secuencia de pasos lógicos necesarios para obtener un resultado específico, como la secuencia de pasos que un verificador de tipos realizaría para comprobar un código, o la secuencia de pasos que un analizador realizaría para analizar una cadena de entrada. Esta tecnología de verificación es el resultado de la investigación en curso en Stanford para el desarrollo de herramientas innovadoras para la educación, y estamos entusiasmados de ser el primer curso en ponerla a disposición de los estudiantes.
Un proyecto opcional del curso es escribir un compilador completo para COOL, el Lenguaje Orientado a Objetos del Aula. COOL tiene las características esenciales de un lenguaje de programación realista, pero es lo suficientemente pequeño y simple como para poder ser implementado en unos pocos miles de líneas de código. Los estudiantes que elijan hacer el proyecto pueden implementarlo en C++ o Java.
¿Por qué Compiladores de Estudios?
Todo lo que hacen los ordenadores es el resultado de algún programa, y todos los millones de programas del mundo están escritos en uno de los muchos miles de lenguajes de programación que se han desarrollado en los últimos 60 años. Diseñar e implementar un lenguaje de programación resulta difícil; algunas de las mejores mentes de la ciencia de la computación han pensado en los problemas involucrados y han contribuido con hermosos y profundos resultados. Aprender algo sobre los compiladores le mostrará la interacción entre la teoría y la práctica en la informática, especialmente cómo las poderosas ideas generales combinadas con la perspicacia de la ingeniería pueden llevar a soluciones prácticas para problemas muy difíciles. Saber cómo funciona un compilador también te hará un mejor programador y aumentará tu capacidad de aprender nuevos lenguajes de programación rápidamente.
Instructor
Alex Aiken, Profesor de Comunicaciones y Redes de Alcatel-Lucent y Profesor de Física de Partículas y Astrofísica y de Ciencia Fotónica