Sou formado no 3º ano do curso de Engenharia de Software. A partir deste ano, minha universidade introduziu um novo curso chamado 'Construções de Compiladores', que ensina o básico da teoria da construção de um compilador.
Qual seria a vantagem do mundo real para um engenheiro de software de aprender sobre a construção de compiladores?
Respostas:
Existe um lado prático para aprender a construção do compilador. Houve várias ocasiões em que eu precisei criar analisadores para implementar alguma linguagem de comando específica do aplicativo. Isso me permitiu criar interfaces flexíveis e com script para o aplicativo.
Ele também fornece uma visão melhor do motivo pelo qual alguns idiomas são projetados do jeito que são e por que nenhum idioma é perfeito.
É um curso difícil, um dos mais difíceis do currículo. Cometi o erro de tomá-lo durante uma sessão de verão; nunca faça um curso de compiladores em uma sessão de verão, seu cérebro explodirá.
fonte
Oh, é uma boa. Pegue, você não vai se arrepender.
Você obtém informações sobre a magia das linguagens de programação, suas características comparativas, transformação de código de alto nível em sua forma executável. Você entenderá melhor muitos recursos do idioma, terá uma visão mais ampla do que é possível e como essas coisas são feitas. Você verá tudo com olhos diferentes.
É aconselhável passar um tempo na universidade para aprender coisas fundamentais do CS. Linguagens de programação concretas, ferramentas e bibliotecas, todas elas vêm e vão, mas a fundação permanece.
Além disso, se você sobreviver ao curso (desde que seja sério), poderá se felicitar por ter o cérebro certo para programar. Faça algum projeto prático com essa teoria, mencione-a em seu currículo e você aumentará bastante o interesse de bons empregadores.
fonte
Definitivamente!
Pode não ser um tópico que você usaria diariamente como uma classe de bancos de dados, por exemplo, entender os compiladores fornecerá uma excelente base.
Um exemplo semelhante seria uma classe de sistemas operacionais. Você pode ser um programador e não pensar em como um sistema operacional funciona todos os dias, mas ter a base nele o ajudará a longo prazo.
fonte
Sim! O curso fornecerá uma compreensão muito mais profunda sobre a análise da linguagem de programação, tipos de dados e funções e como convertê-la em código de máquina para CPU: s específicos.
Isso, por si só, pode não ser muito prático para uso diário, mas lhe dará confiança de que você realmente sabe como as coisas funcionam . Isso é muito útil (falando com experiência aqui) quando você precisa fazer uma otimização de baixo nível e encontrar esses bugs realmente desagradáveis, que todos os outros ficaram perplexos.
fonte
Atualmente, há muitos rumores sobre os idiomas específicos do domínio . E eles realmente valem todo o burburinho, seu verdadeiro potencial ainda está para ser explorado . Portanto, as habilidades de construção dos compiladores se tornarão não apenas importantes, mas essenciais no futuro. Eu gasto cerca de 60% do meu tempo de desenvolvimento implementando compiladores eDSL, mesmo que o problema atual não esteja diretamente relacionado aos compiladores.
fonte
Vale a pena fazer um curso para entender como são construídas as ferramentas que você usará durante toda a carreira de programação (por exemplo, compiladores, intérpretes, analisadores) e quais são as limitações.
Também vale a pena fazer isso em um contexto acadêmico, pois expõe os fundamentos interessantes e não as muitas complexidades do mundo real, que é confuso e atolado ao lidar com linguagens e arquiteturas herdadas, ou seja, muita complexidade. Também é mais provável que você trabalhe em todos os aspectos de um compilador na construção de um todo para um curso, do que no trabalho em um setor.
fonte