Trabajos del compilador: cuánta educación se necesita [cerrado]

15

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?

Jetti
fuente
2
La participación en un proyecto compilador de código abierto (p. Ej., Llvm) sería una gran ventaja.
SK-logic
Ditta @ SK-Logic Actualmente estoy escribiendo un compilador para mi final de CS de IB. Obtener experiencia escribiendo compiladores es probablemente la mejor manera ... como con cualquier cosa realmente.
1
Señalaría que uno de los nombres más importantes en compiladores y tiempos de ejecución no tiene un título. Anders Hejlsberg ... cerebro detrás de Turbo Pascal, Delphi, C #, TypeScript
Matthew Whited

Respuestas:

17

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.

diente filoso
fuente
Gracias por la respuesta. ¿Le darías la oportunidad a alguien que fuera autodidacta y no tuviera antecedentes académicos de CS?
Jetti
3
solo revisa el curso de MIT OCW
segfault
3
@Jetti: daría una oportunidad a cualquiera que haya hecho contribuciones significativas a un compilador de código abierto a lo largo de los años, independientemente de sus antecedentes :)
Matthieu M.
@Jetti: Definitivamente lo haría una vez que traigan evidencia de que tienen un conocimiento real. Por ejemplo, si escribieron pruebas para un compilador que optimiza el generador de código, probablemente valen más que un graduado universitario promedio.
Sharptooth
Se vuelve aún más interesante cuando el compilador está escrito en su propio idioma.
ott--
5

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.

grussel
fuente
5

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
5

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.

ThomasMcLeod
fuente
1
Eso suena más como un rol de I + D que como un "rol de ingeniería de producto". Fui ingeniero de producto en armcc y LLVM (dos compiladores C / C ++ de calidad de producción) y nunca necesité ninguno de esos temas, ni siquiera vi referencias a ellos en los 2 años que estuve trabajando en esta área.
dune.rocks