Trabalhos do compilador - quanta educação é necessária [fechado]

15

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?

Jetti
fonte
2
A participação em um projeto de compilador de código aberto (por exemplo, llvm) seria uma grande vantagem.
SK-logic
Ditta @ SK-Logic No momento, estou escrevendo um compilador para minha final do IB CS. Obter experiência em escrever compiladores é provavelmente a melhor maneira ... como acontece com qualquer coisa.
1
Eu apontaria que um dos maiores nomes em compiladores e tempos de execução não tem um diploma. Anders Hejlsberg ... cérebro por trás do Turbo Pascal, Delphi, C #, TypeScript #
Matthew Whited

Respostas:

17

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 reconheciamstrlen() 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.

dente afiado
fonte
Obrigado pela resposta. Você daria a chance a alguém que fosse autodidata e que não tivesse formação acadêmica em CS?
Jetti
3
basta fazer o checkout do curso do MIT OCW
segfault
3
@Jetti: Eu daria a chance de alguém ter feito contribuições significativas para um compilador de código aberto ao longo dos anos, independentemente das suas origens :)
Matthieu M.
@Jetti: Definitivamente, uma vez que eles trazem evidências de que têm conhecimento real. Por exemplo, se eles escreveram testes para um gerador de código de otimização de compilador, provavelmente valem mais do que um graduado médio da universidade.
sharptooth 27/01
Torna-se ainda mais interessante quando o compilador é escrito em seu próprio idioma.
ott--
5

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.

Grrussel
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 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
5

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.

ThomasMcLeod
fonte
1
Isso parece mais uma função de P&D do que uma "função de engenharia de produto". Eu era engenheiro de produto no armcc e LLVM (dois compiladores C / C ++ de qualidade de produção) e nunca precisei de nenhum desses tópicos, nem vi referência a eles nos 2 anos em que trabalhei nessa área.
precisa saber é o seguinte