Me motivó la pregunta de Compiler Construction As A Subject y pensé en hacerla.
Algunas personas me han dicho que tienen un buen "equipo de compilación" (no pregunte dónde lo escuché, no lo recuerdo), así que eso me llevó a preguntarme, ¿cómo se consigue un trabajo en ese equipo? ?
Sé que hay clases en los programas de pregrado y tal, pero ¿es eso algo que un título de posgrado sería el mínimo (como un Master al menos)?
Estoy comenzando mi Maestría en Ciencias de la Computación en dos meses y la escuela a la que voy tiene dos clases de compilación, ¿sería suficiente para conseguir un trabajo en el desarrollo del compilador o necesitaría más tiempo para invertir?
Respuestas:
Bueno, el desarrollo del compilador es ultra hardcore, lo que significa que requiere mucha paciencia, pasión y conocimiento sólido. No confundas paciencia, pasión y conocimiento sólido con tener algún tipo de título. Hemos visto a varios solicitantes con maestría que ni siquiera podían reconocer
strlen()
en cuatro líneas de código C.Definitivamente asista a esas clases y obtenga conocimientos prácticos. Tal vez ni siquiera le guste el desarrollo del compilador, pero la experiencia que obtenga le ayudará a obtener otro trabajo de desarrollo muy interesante.
fuente
El primer paso es tener una buena experiencia en CS: potencialmente, cuanto más mejor, pero al menos haber completado una licenciatura con honores. En realidad, hay alguna justificación para esto, ya que los compiladores (generalmente, traductores de idiomas) y las técnicas asociadas (lexing, parsing) son fundamentos bien estudiados de la informática.
Creo que, por supuesto, el desarrollo de compiladores industriales (incluido el código abierto) mitigaría la falta de credenciales académicas, pero depende en gran medida de los antecedentes del candidato. Tenga en cuenta que el desarrollo del compilador aquí también cubriría intérpretes y herramientas relacionadas para el análisis.
Se necesita una competencia general en ingeniería de software. El conocimiento del dominio de las aplicaciones que necesitan buenos compiladores (por ejemplo, computación científica, desarrollo de juegos) o experiencia en programación en lenguaje ensamblador más allá de un fondo de programación general en un lenguaje de alto nivel también es una ventaja. El conocimiento de nivel experto del lenguaje que implementa el compilador también es una ventaja.
Descargo de responsabilidad: soy un desarrollador de compiladores y he participado en entrevistas a candidatos.
fuente
Hoy en día, herramientas como Flex , YACC y varias herramientas similares habían simplificado mucho la construcción del compilador. Si desea abordarlo como un pasatiempo ya que le fascina, entonces estas herramientas lo ayudarán y podrá construir un compilador decente en un mes.
Dragon Book es uno de los libros favoritos de todos los tiempos para cualquiera que quiera autodidacta la construcción del compilador. Y a medida que avanzas, pasas algún tiempo leyendo los códigos del compilador de código abierto .
fuente
Si usted es serio acerca de una carrera en compiladores, creo que al menos necesita educación formal en teoría del lenguaje, especialmente teoría de tipos, semántica formal y teoría de computabilidad. Estas áreas serían difíciles de aprender fuera de un entorno académico. En su mayor parte, la construcción del compilador per se es un tema que un desarrollador inteligente puede aprender los conceptos básicos por su cuenta. Sin embargo, si desea trabajar en compiladores de vanguardia que utilizan un amplio análisis semántico e instrumentación para la seguridad y la optimización, probablemente necesite al menos una tesis de maestría en esta área.
fuente