Montador vs Intérprete
Em geral, compilador é um programa de computador que lê um programa escrito em uma linguagem, que é chamada de linguagem de origem, e o traduz para outra linguagem, que é chamada de linguagem de destino. Tradicionalmente, a linguagem de origem é uma linguagem de alto nível, como C++, e a linguagem de destino é uma linguagem de baixo nível, como a linguagem Assembly. No entanto, existem compiladores que podem converter um programa fonte escrito em linguagem Assembly e convertê-lo em código de máquina ou código objeto. Montadores são essas ferramentas. Por outro lado, os intérpretes são ferramentas que executam instruções escritas em alguma linguagem de programação. O intérprete pode executar diretamente código fonte de alto nível ou traduzi-lo para código intermediário e depois interpretá-lo ou executar código pré-compilado.
O que é um Montador?
Assembler é um software ou uma ferramenta que traduz a linguagem Assembly para código de máquina. Assim, um montador é um tipo de compilador e o código-fonte é escrito em linguagem Assembly. Assembly é uma linguagem legível por humanos, mas normalmente tem uma relação de um para um com o código de máquina correspondente. Portanto, diz-se que um montador realiza uma tradução isomórfica (mapeamento um para um). Montadores avançados fornecem recursos adicionais que suportam o desenvolvimento de programas e processos de depuração. Por exemplo, o tipo de montador chamado montador de macro fornece um recurso de macro.
O que é um intérprete?
Um intérprete é um programa de computador ou uma ferramenta que executa instruções de programação. Um interpretador pode executar o código-fonte diretamente ou converter o código-fonte em um código intermediário e executá-lo diretamente ou executar código pré-compilado produzido por um compilador (alguns sistemas interpretadores incluem um compilador para essa tarefa). Linguagens como Perl, Python, MATLAB e Ruby são exemplos de linguagens de programação que utilizam um código intermediário. O UCSD Pascal interpreta um código pré-compilado. Linguagens como Java, BASIC e Samlltalk primeiro compilam a fonte para um código intermediário chamado bytecode e depois o interpretam.
Qual é a diferença entre um Assembler e um Interpreter?
Um montador pode ser considerado um tipo especial de compilador, que apenas traduz linguagem Assembly para código de máquina. Intérpretes são ferramentas que executam instruções escritas em algum idioma. Os sistemas intérpretes podem incluir um compilador para pré-compilar o código antes da interpretação, mas um intérprete não pode ser chamado de um tipo especial de compilador. Os montadores produzem um código de objeto, que pode ter que ser vinculado usando programas vinculadores para executar em uma máquina, mas a maioria dos interpretadores pode concluir a execução de um programa por conta própria. Um montador normalmente fará uma tradução de um para um, mas isso não é verdade para a maioria dos intérpretes. Como a linguagem Assembly tem um mapeamento de um para um com o código de máquina, um montador pode ser usado para produzir código que seja executado de forma muito eficiente para ocasiões em que o desempenho é muito importante (por exemplo, mecanismos gráficos, sistemas embarcados com recursos de hardware limitados em comparação com um computador pessoal). como microondas, máquinas de lavar, etc.). Por outro lado, os intérpretes são usados quando você precisa de alta portabilidade. Por exemplo, o mesmo bytecode Java pode ser executado em plataformas diferentes usando o interpretador apropriado (JVM).