¿Qué necesita estudiar para poder crear herramientas de desarrollo, por ejemplo, compiladores, herramientas de compilación, trabajar en un lenguaje de programación?

Los materiales de estudio para la lista de ejemplos en su pregunta son muy variados. Escribir un compilador de calidad de producción desde cero puede ser un esfuerzo que abarca toda la carrera, mientras que puede escribir herramientas útiles de línea de comandos en unos minutos. Como mencionó los compiladores, mencionaré los pasos que he tomado como aficionado:

0) Lambda the Ultimate es un blog sobre todo lo relacionado con el lenguaje de programación. Si no está interesado en lo que está sucediendo allí, le sugiero que no desee comenzar a escribir un compilador.

1) Elija su idioma favorito y domine la lectura (suponiendo que ya sepa cómo programar, mantener y probar el software en él),

2) Aprenda cómo se compila / interpreta su idioma favorito. ¿Puedes escribir “Hola, mundo!” en C y seguir los pasos del código fuente al ejecutable?

3) Aprenda cómo funciona LLVM. El Proyecto de Infraestructura del Compilador LLVM tiene varios sitios que revisan problemas de compilación de alto nivel, e incluso tiene un tutorial sobre cómo configurar un lenguaje de juguete. Puede tomar algo de trabajo lograrlo, pero verá cómo funciona un compilador moderno.

4) Aprende sobre varios tipos de idiomas. Aprender sobre varios paradigmas de programación diferentes no solo lo convertirá en un mejor desarrollador, sino que le dará cierta apreciación sobre las dificultades de escribir un buen compilador. Un buen lugar para comenzar es con Seven Languages ​​in Seven Weeks de Bruce Tate. Consulte Haskell o ML / Ocaml en particular, ya que estos idiomas tienen características que pueden facilitar la compilación de su código fuente.

5) Finalmente, debe tener una buena referencia del compilador. Uso compiladores: principios, técnicas y herramientas de Aho et. Alabama. (es decir, el libro “Dragón”), pero solo ciertos capítulos son útiles para mí.