Fui motivado pela pergunta Construção do compilador como sujeito e pensei em fazer essa.
Ouvi algumas pessoas dizerem que elas têm uma boa "equipe de compiladores" (não pergunte onde ouvi, não me lembro), e isso me levou a pensar: como conseguir um emprego em uma equipe dessas? ?
Eu sei que existem aulas nos cursos de graduação e afins, mas isso é algo que uma 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 vou ter duas aulas de compilador, isso seria suficiente para conseguir um emprego no desenvolvimento de compiladores ou seria necessário mais tempo para investir nele?
Respostas:
Bem, o desenvolvimento do compilador é ultra incondicional, o que significa que exige 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 nem sequer reconheciam
strlen()
em quatro linhas do código C.Definitivamente participe dessas aulas e adquira conhecimentos práticos. Talvez você nem goste do desenvolvimento de compiladores, mas a experiência adquirida o ajudará a conseguir outro trabalho de desenvolvimento muito interessante.
fonte
O primeiro passo é ter uma boa formação em CS - potencialmente, quanto melhor, mas pelo menos ter concluído o bacharelado. Na verdade, existe alguma justificativa para isso, pois compiladores (geralmente tradutores de idiomas) 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 código aberto) certamente reduziria a falta de credenciais acadêmicas - mas depende em grande parte dos antecedentes do candidato. Observe que o desenvolvimento do compilador aqui também abrange intérpretes e ferramentas relacionadas para análise.
É necessária uma competência geral em engenharia de software. O domínio de aplicativos que precisam de bons compiladores (por exemplo, computação científica, desenvolvimento de jogos) ou experiência em programação em linguagem assembly acima e além de um conhecimento geral de programação em uma linguagem de alto nível também é uma vantagem. O conhecimento no nível de especialista da linguagem que o compilador implementa também é uma vantagem.
Isenção de responsabilidade: Sou desenvolvedor de compiladores e participei de entrevistas com candidatos.
fonte
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 o fascina, essas ferramentas o ajudarão e você poderá criar um front-end de compilador decente em um mês.
Dragon Book é um dos livros favoritos de todos os tempos para quem quer autodidata na construção do compilador. E à medida que avança, você passa algum tempo lendo os códigos do compilador de código- fonte aberto .
fonte
Se você leva a sério uma carreira em compiladores, acredito que pelo menos precisa de educação formal em teoria da linguagem, especialmente teoria dos tipos, semântica formal e teoria da computabilidade. Seria difícil aprender essas áreas fora de um ambiente acadêmico. Na maioria das vezes, a construção do compilador por si só é um assunto em que um desenvolvedor inteligente pode aprender o básico por conta própria. No entanto, se você deseja trabalhar em compiladores de ponta que usam análise semântica e instrumentação extensivas para segurança e otimização, provavelmente precisará de pelo menos uma tese de mestrado nessa área.
fonte