Qual é a vantagem de aprender e entender a construção do compilador?


10

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?


2
Embora eu absolutamente não me arrependa de fazer o curso de compiladores, foi o mais difícil que já tive. A maioria dos cursos de CSci tinha uma teoria significativa que precisava ser aprendida ou muita programação, não as duas. Compiladores tinham ambos.
David Thornley


11
Eu fiz isso na uni no meu terceiro ano também. - Foi o 2º melhor módulo que fiz em todo o curso (After AI).
TWith2Sugars

@ TWith2Sugars: Por que você diria que o CC é um dos melhores?
Nipuna

11
o centavo caiu várias vezes para mim na turma - além de um professor envolvente e colegas decentes fizeram dele algo que eu realmente gostei. Um desses momentos em que me lembro foi que começamos a fazer expressões gramaticais no início e o professor disse "Isso não fará sentido até o segundo mandato" - O segundo termo é quando começamos a construir o restante do compilador (primeiro construímos um analisador / tokeniser). Isso para mim tornou um ótimo módulo.
TWith2Sugars

Respostas:


12

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á.


5
+1 para explodir o cérebro. Além disso, nunca deixe de escrever seu compilador até o final do semestre! Eu sei por experiência ...
Jeremy Heiler

20

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.


2
Além disso, fornece informações sobre o que é uma linguagem boa / ruim, que é um tópico comum por aqui.
precisa saber é o seguinte

8

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.


2
Meu curso de graduação em SO foi o primeiro lugar em que realmente tive que entender a simultaneidade. Foi extremamente prático. Meu curso de graduação em linguagens de programação era melhor quando estávamos escrevendo analisadores.
justkt

Por alguma razão, no meu 3º ano do removido o módulo OS :( Realmente queria fazê-lo bem.
TWith2Sugars

6

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.


4

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.


o que você quer dizer com compiladores eDSL?
Nipuna

11
Como estou usando linguagens que oferecem suporte à metaprogramação, cada linguagem específica de domínio incorporado que eu implemento é praticamente uma macro de compilador. Alguns são bastante complicados, com seu próprio sistema de tipos e numerosos passes de tradução, outros são triviais, mas todos são compiladores. Não há sentido em intérpretes, a menos que sejam realmente necessários.
SK-logic

1

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.