Trabajos de compilación: cuánta educación se necesita [cerrado]

14

Me motivó la Construcción del compilador como tema , pregunta y pensamiento Le preguntaría a éste.

Algunas personas han escuchado que tienen un buen "equipo de compilación" (no preguntes dónde lo escuché, no lo recuerdo), así que eso me llevó a preguntarme: ¿cómo se consigue un trabajo? tal equipo?

Sé que hay clases en los programas de Pregrado y demás, pero ¿es eso algo que un título de posgrado sería el mínimo (como una maestría al menos)?

Estoy comenzando mi Maestría en Ciencias de la Computación en dos meses y la escuela a la que voy a tener dos clases de compilación, ¿sería eso suficiente para conseguir un trabajo en el desarrollo del compilador o necesitaría más tiempo para invertirlo?

    
pregunta Jetti 26.01.2011 - 15:26

4 respuestas

16

Bueno, el desarrollo del compilador es ultra hardcore, lo que significa que requiere mucha paciencia, pasión y conocimiento sólido. No confunda la paciencia, la pasión y el conocimiento sólido con tener algún tipo de título. Hemos visto a varios postulantes con maestría que ni siquiera podían reconocer strlen() en cuatro líneas de código C.

Definitivamente asiste a esas clases y adquiere conocimientos prácticos. Tal vez ni siquiera le guste el desarrollo del compilador, pero la experiencia que obtenga lo ayudará a obtener otro trabajo de desarrollo muy interesante.

    
respondido por el sharptooth 26.01.2011 - 16:07
5

El primer paso es tener un buen historial de CS: potencialmente, cuanto más mejor, pero al menos debe haber completado una licenciatura con honores. En realidad, existe una justificación para esto, ya que los compiladores (en general, los traductores de idiomas) y las técnicas asociadas (lexing, análisis) son fundamentos bien estudiados de la informática.

Creo que el desarrollo de compiladores industriales sustanciales (incluido el código abierto), por supuesto, 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 incluirí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 la 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 con candidatos.

    
respondido por el grrussel 26.01.2011 - 19:36
5

Hoy en día, herramientas como Flex , YACC y varias herramientas similares hicieron la construcción del compilador mucho más simple. Si desea abordarlo como un pasatiempo ya que le fascina, entonces estas herramientas lo ayudarán y usted podrá crear un compilador decente en un mes.

Dragon Book es uno de los libros favoritos de todos los tiempos para cualquiera que quiera aprender de forma autodidacta la construcción del compilador . Y a medida que avanza, pasa a gastar en algún momento leyendo los códigos de código abierto compilador .

    
respondido por el NinjaCoder 26.01.2011 - 19:57
4

Si se toma en serio 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 la 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 en el que un desarrollador inteligente puede aprender lo básico por sí mismo. Sin embargo, si desea trabajar en compiladores de vanguardia que utilizan un extenso 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.

    
respondido por el ThomasMcLeod 26.01.2011 - 20:25

Lea otras preguntas en las etiquetas