TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Resumo do Capitulo do Livro Compiladores

Por:   •  23/5/2021  •  Trabalho acadêmico  •  2.956 Palavras (12 Páginas)  •  209 Visualizações

Página 1 de 12

Atividade (Resumo do livro compiladores)

1.Introdução

Compiladores são programas de computador que traduzem de uma linguagem para outra, sendo assim, um compilador recebe como entrada um programa escrito na linguagem-fonte e produz um programa equivalente na linguagem-alvo, este compilador é um programa bastante complexo, que pode ter de 10.000 a 1.000.000 de linhas de código.

Nesse texto o objetivo não é apenas de proporcionar esse conhecimento básico, mas também dar ao leitor todas as ferramentas necessárias e a experiência prática para projetar e programar um compilador. Para isso, é necessário estudar as técnicas teóricas, principalmente da teoria de autômatos, que tornam a construção de compiladores uma tarefa factível.

  1. Por que compiladores? Um breve histórico

Com o advento do computador de programa armazenado de John von Neumann no final da década de 1940, tornou-se necessário escrever sequências de código, ou programas, para que esses computadores efetuassem as computações desejadas. Inicialmente, esses programas foram escritos em linguagem de máquina – código numérico representando as operações de máquina a serem efetivamente executadas. No entanto, essa forma de programação era maçante e entediante, sendo assim, essa forma de codificação foi substituída pela linguagem de máquina, em que as instruções de memória adotam formas simbólicas. A forma de traduzir esses códigos simbólicos e endereços de memória é por meio do montador que os pega e transforma em linguagem de máquina. Uma vantagem das linguagens de montagem é que aumenta muita a velocidade e a precisão que os programas podem ser escritos. No entanto, esta possui alguns defeitos: não é fácil de escrever e é difícil ler e entender o que é escrito nela, além disso, a montagem é extremamente dependente da máquina para qual ela vai ser escrita, pois um código precisa ser reescrito para cada tipo de sistema diferente.

Na mesma época do desenvolvimento do primeiro compilador, Noam Chomsky iniciou seus estudos da estrutura da linguagem natural. Seus resultados tornaram a construção de compiladores mais simples e parcialmente automatizável. Os estudos de Chomsky levaram à classificação de linguagens segundo a complexidade de suas gramáticas, tornando na conhecida hierarquia de Chomsky, que consiste de quatro níveis de gramática: tipo 0, tipo 1, tipo 2 e tipo 3. As gramáticas de tipo 2, ou gramáticas livres de contexto, são as mais úteis para as linguagens de programação, e são hoje a forma padrão para representar a estrutura de linguagens de programação. Assuntos fortemente relacionados com as gramáticas livres de contexto são autômatos finitos e expressões regulares, que correspondem às gramáticas de Chomsky de tipo 3.

À medida que crescia a compreensão do problema da análise sintática, um grande número de trabalhos foi devotado à criação de programas para automatizar essa parte do desenvolvimento de compiladores. Esses programas foram originalmente denominados compiladores de compiladores, mas são mais bem identificados como geradores de analisadores sintáticos, pois automatizam somente uma parte do processo de compilação. Avanços mais recentes em projetos de compiladores têm gerado resultados interessantes. Primeiro, os compiladores têm incorporado algoritmos mais sofisticados para inferência e/ou simplificação da informação contida em um programa, o que tem ocorrido em paralelo ao desenvolvimento de linguagens de programação mais sofisticadas para as quais essa análise é relevante.

1.2 Programas Relacionados a Compiladores

        Existem outros programas relacionados ou utilizados juntamente com compiladores que são: como por exemplo os interpretadores

  • Interpretadores

Resume-se como um tradutor de linguagens, a diferença com o compilador é que ele executa o programa-fonte de imediato, em vez de gerar um código-objeto que seja executado após o término da tradução.

  • Montadores

É um tradutor para a linguagem de montagem de um computador em particular. É uma forma simbólica da linguagem de máquina de computador, e fácil de traduzir. Um compilador irá gerar a linguagem de montagem como sua linguagem-alvo, em seguida vai usar um montador para concluir a tradução de código-objeto.

  • Organizadores

Coleta o código compilado separadamente, ou montado como arquivos-objeto distintos, colocando-os em um arquivo diretamente executável. Um organizador pode também conectar um programa-objeto ao código para funções padrões de biblioteca e para recursos fornecidos pelo sistema operacional, como alocadores de memória e dispositivos de entrada e saída

  • Carregadores

Resolve os endereços realocáveis relativos a um dado endereço base ou inicial, o uso do carregador torna o código executável mais flexível, esses processos ocorrem de forma escondida ou juntamente com a organização, raramente sendo um programa separado.

  • Pré-Processadores

Um pré-processador é um programa separado, ativado pelo compilador antes do início da tradução. Ele pode apagar comentários, incluir outros arquivos e executar substituições de macros

  • Editores

Gera arquivos padrões, que também são orientados pela estrutura ou formato da linguagem de programação em questão. Esses editores são denominados baseados em estrutura e incluem parte das operações de um compilador. O compilador e os programas que o acompanham podem também ser ativados pelo editor, e assim o programador pode executar o programa sem encerrar a execução do editor.

  • Depuradores

Um depurador é um programa que pode ser utilizado para determinar erros de execução em um programa compilado. Ele costuma ser apresentado juntamente com um compilador em um IDE. Ele pode também interromper a execução em pontos pré-especificados, denominados pontos de interrupção, bem como fornecer informações sobre que funções foram ativadas e quais os valores das variáveis. Para efetuar essas funções, o depurador precisa receber a informação simbólica apropriada do compilador, o que pode, por vezes, ser difícil, especialmente para compiladores que tentam otimizar o código-objeto. Assim, a depuração é um assunto ligado ao compilador

...

Baixar como (para membros premium)  txt (19.9 Kb)   pdf (101.2 Kb)   docx (17 Kb)  
Continuar por mais 11 páginas »
Disponível apenas no TrabalhosGratuitos.com