Compiler Jobs - Quanta Educação é Necessária [fechada]

14

Eu estava motivado pela construção do compilador como assunto questionado e pensado Eu perguntaria isso.

Eu ouvi de algumas pessoas que eles têm um bom "time de compiladores" (não pergunte onde eu ouvi, não me lembro), então isso me levou a pensar, como alguém consegue um trabalho? tal equipe?

Eu sei que há aulas nos programas de graduação e tal, mas isso é algo que um diploma de pós-graduação seria o mínimo (como um mestrado, pelo menos)?

Estou iniciando meu Mestrado em Ciência da Computação em dois meses e a escola que estou cursando tem duas classes de compilador, isso seria suficiente para conseguir um emprego no desenvolvimento de compiladores ou mais tempo seria necessário investir nele?

    
por Jetti 26.01.2011 / 15:26
fonte

4 respostas

16

Bem, o desenvolvimento do compilador é ultra-hardcore, o que significa que requer muita paciência, paixão e conhecimento sólido. Não confunda paciência, paixão e conhecimento sólido com qualquer tipo de diploma. Vimos vários candidatos com mestrado que não conseguiam nem reconhecer strlen() em quatro linhas de código C.

Assista definitivamente a essas aulas e ganhe conhecimento prático. Talvez você nem goste do desenvolvimento do compilador, mas a experiência que você ganha ajudará você a obter outro trabalho de desenvolvimento muito interessante.

    
por 26.01.2011 / 16:07
fonte
5

O primeiro passo é ter um bom histórico de CS - potencialmente, quanto mais, melhor, mas pelo menos para ter concluído um grau de bacharel em ciências. Há, na verdade, alguma justificativa para isso, em que compiladores (geralmente, tradutores de linguagem) e as técnicas associadas (lexing, parsing) são fundamentos bem estudados da ciência da computação.

Acredito que o desenvolvimento substancial de compiladores industriais (incluindo o código aberto) mitigaria, naturalmente, a falta de credenciais acadêmicas - mas depende em grande parte do histórico do candidato. Note que o desenvolvimento do compilador aqui também cobriria intérpretes e ferramentas relacionadas para análise.

É necessária uma competência geral em engenharia de software. O conhecimento de domínio de aplicativos que precisam de bons compiladores (por exemplo, computação científica, desenvolvimento de jogos) ou experiência de programação em linguagem de montagem acima e além de um contexto geral de programação em uma linguagem de alto nível também é uma vantagem. Conhecimento em nível de especialista da linguagem que o compilador implementa também é uma vantagem.

Aviso: Sou desenvolvedor de compiladores e participei de entrevistas com candidatos.

    
por 26.01.2011 / 19:36
fonte
5

Hoje em dia, ferramentas como Flex , YACC e várias ferramentas semelhantes tornaram a construção do compilador muito mais simples. Se você quiser abordá-lo como um hobby, uma vez que isso o fascina, essas ferramentas ajudarão você e você poderá criar um front-end de compilador decente em um mês.

O Dragon Book é um dos livros favoritos de todos os tempos para quem quer ser autodidata na construção de compiladores . E enquanto você segue em frente, você passa algum tempo lendo os códigos do compilador .

    
por 26.01.2011 / 19:57
fonte
4

Se você é sério sobre uma carreira em compiladores, acredito que pelo menos você precisa de educação formal em teoria da linguagem, especialmente teoria dos tipos, semântica formal e teoria da computabilidade. Essas áreas seriam difíceis de aprender fora de um ambiente acadêmico. Na maioria das vezes, a construção de compiladores, por si só, é um assunto que um desenvolvedor inteligente pode aprender o básico por conta própria. No entanto, se você quiser trabalhar com compiladores de última geração que usam análise semântica e instrumentação extensivas para segurança e otimização, você provavelmente precisará de pelo menos uma tese de mestrado nessa área.

    
por 26.01.2011 / 20:25
fonte